การแชร์บน Android

หลังจากใช้การเข้าสู่ระบบด้วย Facebook, การแชร์ผ่าน Facebook หรือ Facebook Gaming เหตุการณ์บางอย่างในแอพของคุณจะได้รับการลงบันทึกและเก็บรวบรวมไว้สำหรับตัวจัดการเหตุการณ์โดยอัตโนมัติ เว้นแต่คุณจะปิดใช้งานการลงบันทึกเหตุการณ์อัตโนมัติ เราขอแนะนำให้ผู้พัฒนาแอพทั้งหมดที่ใช้การเข้าสู่ระบบด้วย Facebook, การแชร์ผ่าน Facebook หรือ Facebook Gaming ทำความเข้าใจวิธีการทำงานของฟังก์ชันนี้ สำหรับรายละเอียดเกี่ยวกับข้อมูลที่ถูกรวบรวมและวิธีปิดใช้การลงบันทึกเหตุการณ์ในแอพอัตโนมัติ โปรดดูการลงบันทึกเหตุการณ์ในแอพอัตโนมัติ

คู่มือนี้จะอธิบายวิธีช่วยให้ผู้ใช้แอพ Android ของคุณสามารถแชร์จากแอพของคุณไปยัง Facebook ได้ เมื่อมีคนแชร์เนื้อหาจากแอพของคุณ เนื้อหาที่แชร์จะปรากฏบนไทม์ไลน์ของบุคคลนั้น และเนื้อหาที่ผู้ใช้ของคุณแชร์ไปยังไทม์ไลน์ของตนยังสามารถปรากฏในฟีดของเพื่อนบุคคลนั้นได้ด้วย นอกจากนี้ ผู้ใช้สามารถแชร์เนื้อหาจากแอพของคุณไปยัง Facebook Messenger ได้อีกเช่นกัน

เมื่อคุณใช้งานการแชร์ แอพของคุณไม่ควรป้อนข้อมูลเนื้อหาใดๆ ที่จะแชร์ล่วงหน้า เนื่องจากการป้อนข้อมูลเนื้อหาล่วงหน้าไม่สอดคล้องกับนโยบายของผู้พัฒนา

รูปภาพตัวอย่างต่อไปนี้แสดงกล่องโต้ตอบการแชร์ในแอพของคุณทางด้านซ้ายและโพสต์ที่เกิดขึ้นในแอพ Facebook ทางด้านขวา

การเริ่มต้นใช้งานการแชร์

SDK การแชร์สำหรับ Android เป็นองค์ประกอบของ Facebook SDK สำหรับ Android

หากต้องการใช้ SDK การแชร์ของ Facebook ในโปรเจ็กต์ของคุณ ให้กำหนด SDK ดังกล่าวเป็นทรัพยากรที่ต้องใช้ (Dependency) ใน Maven

  1. ในโปรเจ็กต์ของคุณ ให้เปิด your_app | Gradle Scripts | build.gradle (Project) แล้วเพิ่มที่จัดเก็บต่อไปนี้ไปยังส่วน buildscript { repositories {}}

    mavenCentral() 
    
  2. ในโปรเจ็กต์ของคุณ ให้เปิด your_app | Gradle Scripts | build.gradle (Module: app) แล้วเพิ่มคำสั่งคอมไพล์ต่อไปนี้ไปยังส่วน dependencies{}

    compile 'com.facebook.android:facebook-share:latest.release'
    
  3. สร้างโปรเจ็กต์ของคุณ

  4. รับ ID ของแอพ Facebook ของคุณที่กำหนดค่าอย่างถูกต้องและมีการลิงก์ไปยังแอพ Android ของคุณ

  5. สร้างแฮชคีย์การพัฒนา Android และเพิ่มลงในหน้าแอพตัวอย่างของการตั้งค่าผู้พัฒนาของคุณ โปรดดูรายละเอียดที่สร้างแฮชคีย์การพัฒนาและการเรียกใช้แอพตัวอย่าง

  6. เพิ่ม ContentProvider ให้กับไฟล์ AndroidManifest.xml ของคุณ แล้วตั้งค่า {APP_ID} เป็น ID ของแอพ

    <provider android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}"
    android:name="com.facebook.FacebookContentProvider"
    android:exported="true"/>
    
  7. หากแอพพลิเคชั่นของคุณกำหนดเป้าหมายเป็น Android 11 ขึ้นไป ให้เพิ่มบล็อกการสืบค้นดังต่อไปนี้ลงในไฟล์ AndroidManifest.xml เพื่อทำให้แอพ Facebook ปรากฏให้เห็นบนแอพของคุณ

    <queries><provider android:authorities="com.facebook.katana.provider.PlatformProvider" /></queries>
  8. เพิ่ม Facebook Activity ให้กับโปรเจ็กต์ของคุณ แล้วใส่ไว้ในไฟล์ AndroidManifest.xml

การสร้างโมเดลเนื้อหา

Facebook SDK เวอร์ชั่น 4.0 ขึ้นไปมีโมเดลใหม่สำหรับการแชร์เนื้อหา เนื้อหาแต่ละประเภทที่ผู้ใช้ต้องการแชร์จะมีคลาสที่ใช้แสดงได้ หลังจากสร้างโมเดลเนื้อหาแล้ว ให้เพิ่มอินเทอร์เฟซการแชร์ในแอพ

เมื่อผู้ใช้แชร์ลิงก์จากแอพของคุณไปยัง Facebook ลิงก์นั้นจะรวม contentURL กับลิงก์ที่จะแชร์ด้วย สร้างเนื้อหาการแชร์สำหรับลิงก์ของคุณให้เป็นรูปแบบ ShareLinkContent ดูรายการแอตทริบิวต์ทั้งหมดได้ที่ข้อมูลอ้างอิงเกี่ยวกับ ShareLinkContent

ต่อไปนี้เป็นตัวอย่างวิธีหนึ่งในการทริกเกอร์การแชร์:

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

หากต้องการดูตัวอย่างการแชร์ลิงก์ไปยัง Google Play หรือ App Store ให้ป้อน URL ของคุณในตัวแก้ไขจุดบกพร่องการแชร์

ถ้าการแชร์แอพของคุณมีลิงก์ไปยังแอพใน Google Play หรือ App Store ระบบจะไม่แสดงคำอธิบายและรูปภาพที่รวมอยู่ในการแชร์ แต่เราจะดึงข้อมูลชื่อแอพและรูปภาพจากร้านค้าโดยตรง (และหากไม่มีรูปภาพ การแชร์ก็จะไม่มีรูปภาพเช่นกัน)

รูปภาพ

ผู้ใช้สามารถแชร์รูปภาพจากแอพไปยัง Facebook ได้โดยใช้กล่องการแชร์ ผู้ใช้ต้องติดตั้งแอพ Facebook สำหรับ Android แบบเนทีฟในเวอร์ชั่น 7.0 ขึ้นไปเพื่อให้แชร์ได้

สร้างเนื้อหาการแชร์สำหรับรูปภาพของคุณให้เป็นรูปแบบ SharePhotoContent ดูรายการแอตทริบิวต์ทั้งหมดได้ที่ข้อมูลอ้างอิงเกี่ยวกับ SharePhotoContent

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

วิดีโอ

ผู้ที่ใช้แอพของคุณสามารถแชร์วิดีโอไปยัง Facebook ได้โดยใช้กล่องการแชร์

สร้างเนื้อหาการแชร์สำหรับวิดีโอของคุณให้เป็นรูปแบบ ShareVideoContent ดูรายการแอตทริบิวต์ทั้งหมดได้ที่ข้อมูลอ้างอิงเกี่ยวกับ ShareVideoContent

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

มัลติมีเดีย

ผู้ใช้สามารถแชร์การผสมผสานทั้งรูปภาพและวิดีโอจากแอพของคุณไปยัง Facebook ได้ด้วยกล่องโต้ตอบการแชร์ โปรดคำนึงสิ่งต่อไปนี้

  • ผู้ใช้ต้องติดตั้งแอพ Facebook สำหรับ Android แบบเนทีฟในเวอร์ชั่น 71 ขึ้นไป
  • ผู้ใช้สามารถแชร์รูปภาพและวิดีโอพร้อมกันสูงสุดได้ 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);

เพิ่มอินเทอร์เฟซการแชร์

หลังจากจัดการเนื้อหาโดยสร้างโมเดลแล้ว ให้ทริกเกอร์อินเทอร์เฟซการแชร์ของ Facebook

ปุ่ม

Facebook มีปุ่มแบบเนทีฟสำหรับ Android เพื่อใช้ทริกเกอร์การแชร์


ปุ่มแชร์

ปุ่มแชร์จะเรียกใช้กล่องการแชร์ หากต้องการเพิ่มปุ่มแชร์ ให้ใส่ส่วนย่อยของโค้ดต่อไปนี้ลงในมุมมองของคุณ:

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

กล่องการแชร์

กล่องการแชร์จะสลับเป็นแอพ Facebook สำหรับ Android แบบเนทีฟ และจะคืนการควบคุมให้แอพหลังจากเผยแพร่โพสต์แล้ว ผู้ใช้อาจต้องแตะที่ไอคอนลูกศรย้อนกลับเพื่อกลับไปยังแอพของคุณ ซึ่งจะขึ้นอยู่กับ SDK ที่คุณกำลังใช้งานอยู่ หากยังไม่ได้ติดตั้งแอพ Facebook กล่องการแชร์นี้จะเปลี่ยนกลับไปเป็นกล่องโต้ตอบบนเว็บโดยอัตโนมัติ

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

หากคุณกำลังใช้กิจกรรมหรือองค์ประกอบย่อยของ AndroidX คุณก็ไม่ต้องแทนที่ onActivityResult

กล่องการส่งข้อความ

กล่องการส่งข้อความจะสลับเป็นแอพ Messenger สำหรับ Android แบบเนทีฟ และจะคืนการควบคุมให้แอพหลังจากเผยแพร่โพสต์แล้ว ผู้ใช้อาจต้องแตะที่ไอคอนลูกศรย้อนกลับเพื่อกลับไปยังแอพของคุณ ซึ่งจะขึ้นอยู่กับ SDK ที่คุณกำลังใช้งานอยู่

MessageDialog.show(activityOrFragment, content);

แฮชแท็ก

คุณสามารถระบุแฮชแท็กเดี่ยวให้ปรากฏพร้อมกับรูปภาพ ลิงก์ หรือวิดีโอที่แชร์ได้ แฮชแท็กนี้จะปรากฏในกล่องการแชร์ด้วยเช่นกัน และผู้ใช้จะมีโอกาสลบออกก่อนที่จะเผยแพร่ได้

ต่อไปนี้เป็นตัวอย่างการเพิ่มแฮชแท็กให้กับการแชร์ลิงก์

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

หัวข้อขั้นสูง

ตัวสำรองสำหรับการแชร์แบบในตัว

ใน Facebook SDK สำหรับ Android เวอร์ชั่นที่ผ่านมา แอพของคุณต้องตรวจสอบแอพ Facebook แบบเนทีฟที่ติดตั้งไว้ก่อนที่จะเปิดกล่องการแชร์ได้ หากผู้ใช้ไม่ได้ติดตั้งแอพไว้ คุณต้องให้โค้ดของคุณเองเพื่อเรียกกล่องโต้ตอบสำรอง

แต่ตอนนี้ SDK จะตรวจสอบแอพ Facebook แบบเนทีฟให้โดยอัตโนมัติ หากไม่ได้ติดตั้งเอาไว้ SDK จะเปลี่ยนให้ผู้คนใช้เบราว์เซอร์เริ่มต้นของตน แล้วเปิดกล่องการแชร์บนฟีด

ลิงก์ที่ไปยังแอพช่วยลิงก์กลับไปยังแอพของคุณจากโพสต์บน Facebook ที่เผยแพร่มาจากแอพของคุณ เมื่อผู้ใช้คลิกโพสต์บน Facebook ที่เผยแพร่จากแอพของคุณ แอพจะเปิดขึ้นและคุณสามารถเชื่อมโยงไปยังเนื้อหาที่เจาะจงภายในแอพได้