المشاركة على Android

يعرض هذا الدليل تفاصيل حول كيفية تمكين المشاركة من تطبيق Android إلى فيسبوك. عندما يقوم أحد الأشخاص بالمشاركة من تطبيقك، يظهر المحتوى الخاص به في يومياته وقد يظهر في يوميات أصدقائه.

يمكن للأشخاص مشاركة المحتوى من تطبيقك إلى تطبيق Messenger من فيسبوك.

المتطلبات الأساسية

حتى يمكن المشاركة على فيسبوك من تطبيقك، يجب:

للاطلاع على تفاصيل هذه المتطلبات، راجع Android - بدء الاستخدام.

يجب أيضًا إعداد ContentProvider في AndroidManifest.xml حيث يكون {APP_ID} هو معرف تطبيقك:

<provider android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}"
          android:name="com.facebook.FacebookContentProvider"
          android:exported="true"/>

عند تنفيذ المشاركة، يجب ألا يتم من خلال تطبيقك ملء أي محتوى ستتم مشاركته. ولا يتوافق هذا الأمر مع سياسة منصة فيسبوك، راجع سياسة منصة فيسبوك، 2.3.

إعداد نماذج المحتوى

تتضمن جميع الإصدارات الأعلى من الإصدار 4.0 من مجموعات Facebook SDK نماذج جديدة لمشاركة المحتوى. لكل نوع من المحتوى الذي يرغب الأشخاص في مشاركته فئة محددة يمكنك استخدامها في التعبير عنه. بعد إعداد نموذج المحتوى، قم بإضافة واجهة مشاركة إلى تطبيقك.

عند مشاركة الأشخاص للروابط من تطبيقك إلى فيسبوك، فإنها تتضمن السمات التالية التي تظهر في المنشور:

  • contentURL الذي يشير إلى الرابط الذي ستتم مشاركته
  • contentTitle الذي يمثل عنوان المحتوى الموجود في الرابط
  • imageURL الذي يشير إلى عنوان URL للصورة المصغرة التي ستظهر في المنشور
  • contentDescription للمحتوى والذي عادة ما يتكون من 2 إلى 4 جمل

قم ببناء محتوى المشاركة للروابط في نموذج ShareLinkContent. للحصول على قائمة بجميع السمات، اطلع على مرجع ShareLinkContent.

ShareLinkContent content = new ShareLinkContent.Builder()
        .setContentUrl(Uri.parse("https://developers.facebook.com"))
        .build();

ملاحظة: إذا كانت هناك روابط تتم مشاركتها إلى متجر iTunes أو متجر Google Play عبر تطبيقك، فلا يتم نشر أي صور أو أوصاف تحددها في المشاركة باستخدام المعلمات الواردة أدناه. وبدلاً من نشر بعض المعلومات عن التطبيق، نحصل عليها من متجر التطبيقات مباشرة باستخدام أحد برامج Webcrawler. ويمكن عدم تضمين الصور. لمعاينة مشاركة الروابط إلى iTunes أو Google Play، أدخل عنوان URL إلى مصحح أخطاء عناوين URL.

الصور

يمكن للأشخاص مشاركة الصور من تطبيقك إلى فيسبوك باستخدام مربع الحوار مشاركة أو باستخدام واجهة مخصصة.

  • يجب أن يكون حجم الصور أقل من 12 ميجابايت
  • يجب أن يقوم الأشخاص بتثبيت الإصدار 7.0 أو إصدار أعلى من تطبيق فيسبوك لنظام التشغيل Android الأصلي

قم ببناء محتوى المشاركة للصور في نموذج SharePhotoContent. للحصول على قائمة بجميع السمات، اطلع على مرجع SharePhotoContent.

Bitmap image = ...
SharePhoto photo = new SharePhoto.Builder()
        .setBitmap(image)
        .build();
SharePhotoContent content = new SharePhotoContent.Builder()
        .addPhoto(photo)
        .build();

مقاطع الفيديو

يمكن للأشخاص مشاركة مقاطع الفيديو من تطبيقك إلى فيسبوك باستخدام مربع الحوار مشاركة أو باستخدام واجهة مخصصة.

يجب أن يقل حجم مقاطع الفيديو عن 12 ميجابايت.

قم ببناء محتوى المشاركة لمقاطع الفيديو في نموذج ShareVideoContent. للحصول على قائمة بجميع السمات، اطلع على مرجع ShareVideoContent.

Uri videoFileUri = ...
ShareVideo = new ShareVideo.Builder()
        .setLocalUrl(videoUrl)
        .build();
ShareVideoContent content = new ShareVideoContent.Builder()
        .setVideo(video)
        .build();

الوسائط المتعددة

يمكن للأشخاص مشاركة مزيج من الصور ومقاطع الفيديو من تطبيقك إلى فيسبوك باستخدام مربع حوار المشاركة. لاحظ ما يلي:

  • يجب أن يقوم الأشخاص بتثبيت الإصدار 71 أو إصدار أعلى من تطبيق فيسبوك لنظام التشغيل Android الأصلي.
  • يجب أن يقل حجم الصور عن 12 ميجابايت.
  • يجب أن يقل حجم مقاطع الفيديو عن 12 ميجابايت.
  • يمكن للأشخاص مشاركة 6 صور ومقاطع فيديو في المرة الواحدة كحد أقصى.

يمكنك بناء محتوى مشاركة الوسائط المتعددة باستخدام نموذج ShareMediaContent. للحصول على قائمة بجميع السمات، اطلع على مرجع ShareMediaContent.

SharePhoto sharePhoto1 = new SharePhoto.Builder()
    .setBitmap(...)
    .build();
SharePhoto sharePhoto2 = new SharePhoto.Builder()
    .setBitmap(...)
    .build();
ShareVideo shareVideo1 = new ShareVideo.Builder()
    .setLocalUrl(...)
    .build();
ShareVideo shareVideo2 = new ShareVideo.Builder()
    .setLocalUrl(...)
    .build();

ShareContent shareContent = new ShareMediaContent.Builder()
    .addMedium(sharePhoto1)
    .addMedium(sharePhoto2)
    .addMedium(shareVideo1)
    .addMedium(shareVideo2)
    .build();

ShareDialog shareDialog = new ShareDialog(...);
shareDialog.show(shareContent, Mode.AUTOMATIC);

إضافة واجهات مشاركة

بعد معالجة المحتوى عن طريق بناء نموذج، يمكن تشغيل واجهة مشاركة على فيسبوك أو بناء واجهة خاصة يتم من خلالها استدعاء Graph API.

الأزرار

يوفر فيسبوك أزرارًا أصلية لنظام التشغيل Android لتشغيل المشاركة.


الزر أعجبني

يعتبر الزر "أعجبي" وسيلة سريعة للأشخاص لمشاركة محتوى مع أصدقائهم. بضغطة واحدة على الزر "أعجبني"، يتم الإعجاب بأجزاء المحتوى على تطبيقك ومشاركتها على فيسبوك. يمكن استخدام الزر "أعجبني" في تسجيل الإعجاب بصفحة فيسبوك أو أي كائن Open Graph ويمكن الإشارة إليه بواسطة عنوان URL أو معرف. لإضافة الزر "أعجبني"، قم بإضافة جزء الرمز البرمجي التالي إلى طريقة العرض:

LikeView likeView = (LikeView) findViewById(R.id.like_view);
likeView.setObjectIdAndType(
    "https://www.facebook.com/FacebookDevelopers",
    LikeView.ObjectType.PAGE);

الزر مشاركة

يعمل الزر مشاركة على استدعاء مربع الحوار مشاركة. لإضافة الزر مشاركة، قم بإضافة جزء الرمز البرمجي التالي إلى طريقة العرض:

ShareButton shareButton = (ShareButton)findViewById(R.id.fb_share_button);
shareButton.setShareContent(content);

الزر إرسال

يتيح الزر "إرسال" للأشخاص إمكانية إرسال صور ومقاطع فيديو وروابط بخصوصية إلى أصدقائهم وجهات الاتصال باستخدام تطبيق Messenger من فيسبوك. يعمل الزر "إرسال" على استدعاء مربع الحوار رسالة. لإضافة الزر "إرسال" إلى طريقة العرض، قم بإضافة جزء الرمز البرمجي التالي إلى طريقة العرض:

SendButton sendButton = (SendButton)findViewById(R.id.fb_send_button);
sendButton.setShareContent(shareContent);
sendButton.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { ... });

مربع الحوار مشاركة

يتم من خلال مربع الحوار مشاركة التبديل إلى تطبيق فيسبوك لنظام التشغيل Android الأصلي، ثم يقوم بإرجاع عنصر التحكم إلى تطبيقك بعد نشر المنشور. في حالة عدم تثبيت تطبيق فيسبوك، يتم التبديل تلقائيًا إلى مربع الحوار المستند إلى الويب.

ShareDialog.show(activityOrFragment, content);

على سبيل المثال، لعرض ShareDialog لرابط في نشاطك، قم بإنشاء مثيل ShareDialog في طريقة onCreate الخاصة بك:

public class MainActivity extends FragmentActivity {
    CallbackManager callbackManager;
    ShareDialog shareDialog;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        callbackManager = CallbackManager.Factory.create();
        shareDialog = new ShareDialog(this);
        // this part is optional
        shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { ... });
    }

ثم قم بعد ذلك بعرض ShareDialog:

if (ShareDialog.canShow(ShareLinkContent.class)) {
    ShareLinkContent linkContent = new ShareLinkContent.Builder()
            .setContentTitle("Hello Facebook")
            .setContentDescription(
                    "The 'Hello Facebook' sample  showcases simple Facebook integration")
            .setContentUrl(Uri.parse("http://developers.facebook.com/android"))
            .build();

    shareDialog.show(linkContent);
}

وأخيرًا، قم باستدعاء callbackManager لمجموعة SDK في onActivityResult لمعالجة هذه الاستجابة:

@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}

مربع حوار الرسالة

يتم من خلال مربع الحوار "رسالة" التبديل إلى تطبيق فيسبوك لنظام التشغيل Android الأصلي، ثم يقوم بإرجاع عنصر التحكم إلى تطبيقك بعد نشر المنشور.

MessageDialog.show(activityOrFragment, content);

الميزات الإضافية

عند استخدام مربع حوار المشاركة من فيسبوك، ستتوفر لديك خيارات إضافية لا تتوفر عند المشاركة باستخدام API.

علامات الهاشتاج

يمكنك تحديد ظهور علامة هاشتاج واحدة مع الصورة أو الرابط أو مقطع الفيديو الذي تتم مشاركته. تظهر علامة الهاشتاج هذه في مربع حوار المشاركة، ويمكن للأشخاص إزالتها قبل النشر.

ما يلي عبارة عن مثال على إضافة علامة هاشتاج إلى مشاركة رابط.

ShareLinkContent content = new ShareLinkContent.Builder()
        .setContentUrl(Uri.parse("https://developers.facebook.com"))
        .setShareHashtag(new ShareHashtag.Builder()
                .setHashtag("#ConnectTheWorld")
                .build());
        .build();

مشاركة الاقتباسات

يمكنك تمكين الأشخاص من تمييز النص ليظهر كاقتباس مع رابط تتم مشاركته. بدلاً من ذلك، يمكنك تحديد اقتباس بشكل مسبق، على سبيل المثال، اقتباس بارز بأحد المقالات، للظهور مع رابط تتم مشاركته. في أي من الحالات، يظهر الاقتباس في حقل خاص به منفصلاً عن تعليقات المستخدمين.

ShareLinkContent content = new ShareLinkContent.Builder()
        .setContentUrl(Uri.parse("https://developers.facebook.com"))
        .setQuote("Connect on a global scale.")
        .build();

موضوعات متقدمة

أدوات المشاركة البديلة المضمنة

في الإصدارات السابقة من SDK لنظام التشغيل Android، كان يجب أن يتحقق التطبيق من وجود تطبيق فيسبوك أصلي مثبت حتى يتمكن من فتح مربع الحوار مشاركة. إذا لم يكن التطبيق مثبتًا، يجب أن تقوم بإدخال الرمز البرمجي لاستدعاء مربع حوار احتياطي.

أما الآن فيتم من خلال SDK التحقق تلقائيًا من وجود تطبيق فيسبوك أصلي. إذا لم يتم تثبيته، تقوم SDK بتحويل المستخدمين إلى المتصفح الافتراضي وتفتح مربع الحوار آخر الأخبار. في حالة رغبة أحد الأشخاص في مشاركة حدث Open Graph، تقوم SDK بفتح مربع الحوار مشاركة على الويب.

يمكن باستخدام روابط التطبيق إعادة الربط بتطبيقك من منشورات فيسبوك التي تم نشرها منه. وعند نقر الأشخاص على منشور فيسبوك تم نشره من تطبيقك، يتم فتح تطبيقك حيث يمكنك الربط بمحتوى معين في تطبيقك.

واجهة مخصصة

إذا كنت ترغب في استخدام واجهتك الخاصة للمشاركة، يجب القيام بما يلي:

  • بناء واجهة مخصصة يتم من خلالها النشر إلى نقطة نهاية Graph API /me/feed
  • تنفيذ تسجيل دخول فيسبوك إلى تطبيقك
  • طلب إذن publish_actions عند تسجيل الأشخاص الدخول إلى تطبيقك

فيما يلي الرمز البرمجي لنشر رابط على فيسبوك من واجهتك الخاصة:

ShareApi.share(content, null);

مشاركة أحداث Open Graph

تتيح Open Graph للأشخاص مشاركة محتوى ثري ومنظم من خلال واجهة API محددة النوع بدقة يتم تحديدها بواسطة كائنات وإجراءات Open Graph. تتم إعادة ربط هذه المنشورات بتطبيقك أو بصفحة متجر التطبيقات في تطبيقك.

للتعرف على المزيد حول كيفية تكوين أحداث Open Graph، راجع أحداث Open Graph في Android.

قم ببناء محتوى المشاركة لأحداث Open Graph في نموذج ShareOpenGraphContent. للحصول على قائمة بجميع السمات، اطلع على مرجع ShareOpenGraphContent.

ShareOpenGraphObject object = new ShareOpenGraphObject.Builder()
        .putString("og:type", "fitness.course")
        .putString("og:title", "Sample Course")
        .putString("og:description", "This is a sample course.")
        .putInt("fitness:duration:value", 100)
        .putString("fitness:duration:units", "s")
        .putInt("fitness:distance:value", 12)
        .putString("fitness:distance:units", "km")
        .putInt("fitness:speed:value", 5)
        .putString("fitness:speed:units", "m/s")
        .build();
ShareOpenGraphAction action = new ShareOpenGraphAction.Builder()
        .setActionType("fitness.runs")
        .putObject("fitness:course", object)
        .build();
ShareOpenGraphContent content = new ShareOpenGraphContent.Builder()
        .setPreviewPropertyName("fitness:course")
        .setAction(action)
        .build();