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

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

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

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

قبل أن تتمكن من المشاركة إلى فيسبوك من تطبيقك، يجب عليك الربط مع أو تنزيل مجموعة SDK للمشاركة على فيسبوك لنظام Android.

تعتبر مجموعة Sharing SDK لنظام Android إحدى مكونات مجموعة Facebook SDK لنظام Android. لاستخدام مجموعة Facebook Sharing SDK في مشروع، يجب إضافتها كعنصر تابع في Maven أو تنزيلها. اختر الطريقة التي تفضلها باستخدام الزر التالي.

ربط مجموعة SDK بمنصة Maven

  1. في مشروعك، قم بفتح your_app | Gradle Scripts | build.gradle (Project) وإضافة المستودع التالي إلى قسم buildscript { repositories {}} لتنزيل مجموعة SDK من مستودع Maven المركزي.
    mavenCentral() 
  2. في مشروعك، قم بفتح your_app | Gradle Scripts | build.gradle (Module: app) وإضافة عبارة التجميع التالية إلى قسم dependencies{} لتجميع أحدث إصدار من مجموعة SDK:
    compile 'com.facebook.android:facebook-share:[4,5)'
  3. ابدأ بناء مشروعك.

تنزيل مجموعة SDK

لتنزيل مجموعة SDK، انقر على الزر التالي.

تنزيل SDK

عند استخدام مجموعة Facebook Sharing SDK، يتم تسجيل الأحداث التي تتم في تطبيقك تلقائيًا ويتم تجميع بياناتها لاستخدامها في Facebook Analytics إلا إذا قمت بتعطيل التسجيل التلقائي للأحداث. للحصول على المزيد من التفاصيل حول المعلومات التي يتم تجميعها وكيفية تعطيل التسجيل التلقائي للأحداث، يمكنك الرجوع إلى التسجيل التلقائي لأحداث التطبيق.

متطلبات إضافية

بالإضافة إلى ذلك، يجب عليك القيام بما يلي:

للاطلاع على تفاصيل هذه المتطلبات، راجع 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 مع الرابط الذي يتم مشاركته. قم ببناء محتوى المشاركة للروابط في نموذج ShareLinkContent. للحصول على قائمة بجميع السمات، اطلع على مرجع ShareLinkContent.

بدءً من 18 أبريل 2017، لن يستمر دعم المعلمات التالية في Graph API الإصدار 2.9 وما بعده. بالنسبة إلى الإصدار 2.8 وما قبله، ستستمر المعلمات في العمل حتى يوم 17 يوليو 2017.

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

فيما يلي مثال على طريقة تشغيل ميزة المشاركة:

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

لمعاينة مشاركة الروابط إلى Google Play أو App Store، أدخل عنوان URL إلى مصحح أخطاء عناوين URL.

إذا كانت معاينة تطبيقك تحتوي على رابط لأي تطبيق على Google Play أو App Store، فسيتم تجاهل الوصف والصورة التي تم تضمينهما في المشاركة. وبدلاً من ذلك، سنقوم باستخلاص المتجر المرتبط مباشرة بعنوان وصورة هذا التطبيق (وفي حالة عدم وجود صورة، فإن المشاركة لن تتضمن أي صور).

الصور

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

  • يجب أن يكون حجم الصور أقل من 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 لتشغيل المشاركة.


مع طرح الإصدار 4.28.0 من مجموعة Facebook SDK لنظام Android، تم إيقاف استخدام الزر أعجبني لنظام Android. وسيظل مدعومًا حتى 5 فبراير 2018.

الزر أعجبني

يعتبر الزر "أعجبي" وسيلة سريعة للأشخاص لمشاركة محتوى مع أصدقائهم. بضغطة واحدة على الزر "أعجبني"، يتم الإعجاب بأجزاء المحتوى على تطبيقك ومشاركتها على فيسبوك. يمكن استخدام الزر "أعجبني" في تسجيل الإعجاب بصفحة فيسبوك أو أي كائن 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);

مع طرح الإصدار 4.28.0 من مجموعة Facebook SDK، تم إيقاف استخدام الزر إرسال. وسيظل مدعومًا حتى 5 فبراير 2018.

الزر إرسال

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

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

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

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

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()
            ..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 الأصلي، ثم يقوم بإرجاع عنصر التحكم إلى تطبيقك بعد نشر المنشور. استنادًا إلى مجموعة SDK التي تستخدمها، قد يحتاج الأشخاص إلى الضغط على أيقونة السهم للخلف للعودة إلى تطبيقك.

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();