หลังจากใช้การเข้าสู่ระบบด้วย Facebook, การแชร์ผ่าน Facebook หรือ Facebook Gaming เหตุการณ์บางอย่างในแอพของคุณจะได้รับการลงบันทึกและเก็บรวบรวมไว้สำหรับตัวจัดการเหตุการณ์โดยอัตโนมัติ เว้นแต่คุณจะปิดใช้งานการลงบันทึกเหตุการณ์อัตโนมัติ เราขอแนะนำให้ผู้พัฒนาแอพทั้งหมดที่ใช้การเข้าสู่ระบบด้วย Facebook, การแชร์ผ่าน Facebook หรือ Facebook Gaming ทำความเข้าใจวิธีการทำงานของฟังก์ชันนี้ สำหรับรายละเอียดเกี่ยวกับข้อมูลที่ถูกรวบรวมและวิธีปิดใช้การลงบันทึกเหตุการณ์ในแอพอัตโนมัติ โปรดดูการลงบันทึกเหตุการณ์ในแอพอัตโนมัติ
คู่มือนี้จะอธิบายวิธีช่วยให้ผู้ใช้แอพ Android ของคุณสามารถแชร์จากแอพของคุณไปยัง Facebook ได้ เมื่อมีคนแชร์เนื้อหาจากแอพของคุณ เนื้อหาที่แชร์จะปรากฏบนไทม์ไลน์ของบุคคลนั้น และเนื้อหาที่ผู้ใช้ของคุณแชร์ไปยังไทม์ไลน์ของตนยังสามารถปรากฏในฟีดของเพื่อนบุคคลนั้นได้ด้วย นอกจากนี้ ผู้ใช้สามารถแชร์เนื้อหาจากแอพของคุณไปยัง Facebook Messenger ได้อีกเช่นกัน
เมื่อคุณใช้งานการแชร์ แอพของคุณไม่ควรป้อนข้อมูลเนื้อหาใดๆ ที่จะแชร์ล่วงหน้า เนื่องจากการป้อนข้อมูลเนื้อหาล่วงหน้าไม่สอดคล้องกับนโยบายของผู้พัฒนา
รูปภาพตัวอย่างต่อไปนี้แสดงกล่องโต้ตอบการแชร์ในแอพของคุณทางด้านซ้ายและโพสต์ที่เกิดขึ้นในแอพ Facebook ทางด้านขวา
SDK การแชร์สำหรับ Android เป็นองค์ประกอบของ Facebook SDK สำหรับ Android
หากต้องการใช้ SDK การแชร์ของ Facebook ในโปรเจ็กต์ของคุณ ให้กำหนด SDK ดังกล่าวเป็นทรัพยากรที่ต้องใช้ (Dependency) ใน Maven
ในโปรเจ็กต์ของคุณ ให้เปิด your_app | Gradle Scripts | build.gradle (Project) แล้วเพิ่มที่จัดเก็บต่อไปนี้ไปยังส่วน buildscript { repositories {}}
mavenCentral()
ในโปรเจ็กต์ของคุณ ให้เปิด your_app | Gradle Scripts | build.gradle (Module: app) แล้วเพิ่มคำสั่งคอมไพล์ต่อไปนี้ไปยังส่วน dependencies{}
compile 'com.facebook.android:facebook-share:latest.release'
สร้างโปรเจ็กต์ของคุณ
รับ ID ของแอพ Facebook ของคุณที่กำหนดค่าอย่างถูกต้องและมีการลิงก์ไปยังแอพ Android ของคุณ
สร้างแฮชคีย์การพัฒนา Android และเพิ่มลงในหน้าแอพตัวอย่างของการตั้งค่าผู้พัฒนาของคุณ โปรดดูรายละเอียดที่สร้างแฮชคีย์การพัฒนาและการเรียกใช้แอพตัวอย่าง
เพิ่ม ContentProvider
ให้กับไฟล์ AndroidManifest.xml
ของคุณ แล้วตั้งค่า {APP_ID}
เป็น ID ของแอพ
<provider android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}"
android:name="com.facebook.FacebookContentProvider"
android:exported="true"/>
หากแอพพลิเคชั่นของคุณกำหนดเป้าหมายเป็น Android 11 ขึ้นไป ให้เพิ่มบล็อกการสืบค้นดังต่อไปนี้ลงในไฟล์ AndroidManifest.xml
เพื่อทำให้แอพ Facebook ปรากฏให้เห็นบนแอพของคุณ
<queries><provider android:authorities="com.facebook.katana.provider.PlatformProvider" /></queries>
เพิ่ม 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 ได้ด้วยกล่องโต้ตอบการแชร์ โปรดคำนึงสิ่งต่อไปนี้
สร้างเนื้อหาการแชร์มัลติมีเดียของคุณให้เป็นรูปแบบ 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 ที่เผยแพร่จากแอพของคุณ แอพจะเปิดขึ้นและคุณสามารถเชื่อมโยงไปยังเนื้อหาที่เจาะจงภายในแอพได้