การแชร์ไปยัง Reels บน Instagram จาก Android

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

Overview

Reels Layers

The Reels composer has a background video layer and an optional sticker layer.

  • Background Video Layer – A video fills the screen
  • Sticker Layer – An optional sticker can appear in front of the video

Sharing Icon

For a consistent user experience across apps, download the standard sharing icon for Instagram Reels and use it in your app.

Before You Start

You will need:

  • A Meta app ID
  • You must Go Live with your Meta app before your app users can share content

Terms and Policies

By accessing and using this functionality, you acknowledge and agree to be bound by the Meta Platform Terms and Developer Policies. You also represent and warrant that any content made available through your application or website, or shared to Instagram Reels from your application or website, does not infringe upon the intellectual property rights of any third party and that you own, control or have otherwise secured all rights necessary to distribute, copy, publicly perform and display, or otherwise use the content via this functionality, including as uploaded and shared on Instagram Reels. You further represent and warrant that you have the authority to make the foregoing representations on behalf of your organization. If you do not have such authority or are otherwise unable to make the foregoing representations, you are not authorized to continue and should not do so.

ใช้งานการแชร์ไปยัง Instagram

คุณจะต้องใช้ Explicit Intent เพื่อเปิดแอพ Instagram แล้วส่งเนื้อหาสำหรับ Reels แอพ Instagram จะได้รับเนื้อหา โหลดเนื้อหาลงในตัวปรับแต่ง Reels จากนั้นผู้ใช้จะสามารถแก้ไขและเผยแพร่เนื้อหาดังกล่าวไปยัง Reels ของตนได้

โดยทั่วไปแล้ว ขั้นตอนการแชร์ของคุณจะดำเนินการดังต่อไปนี้

  1. สร้างอินสแตนซ์ให้กับ Intent
  2. ตั้งค่าแพ็คเกจเป็น "com.instagram.android" เพื่อให้แน่ใจว่าแอพ Instagram จะจัดการ Intent ได้
  3. แนบ ID แอพ Meta และเนื้อหาสื่อของคุณกับ Intent
  4. สร้างอินสแตนซ์ให้กับกิจกรรม
  5. ให้สิทธิ์การอนุญาต URI เพื่อให้แน่ใจว่า Instagram สามารถอ่านเนื้อหาสื่อได้
  6. ตรวจสอบให้แน่ใจว่ากิจกรรมสามารถแก้ไข Intent ได้ แล้วเริ่มกิจกรรม

ลบไฟล์ชั่วคราวทั้งหมดที่คุณสร้างบนอุปกรณ์ของผู้ใช้

ข้อมูล

คุณควรส่งข้อมูลต่อไปนี้เมื่อคุณแชร์ไปยัง Reels

ข้อมูลคำอธิบาย

ID แอพ Meta

สตริง

จำเป็นต้องระบุ ID แอพ Meta ของคุณ

องค์ประกอบสื่อ

สตริงสำหรับองค์ประกอบเดียว

หรือ

รายการสำหรับหลายองค์ประกอบ

จำเป็นต้องระบุ ต้องระบุตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้

  • URI สำหรับรูปภาพที่เป็นไฟล์ในเครื่องบนอุปกรณ์ของผู้ใช้ รูปแบบไฟล์รูปภาพที่อนุญาตให้ใช้ ได้แก่

    • JPG
    • PNG
  • URI สำหรับวิดีโอที่เป็นไฟล์ในเครื่องบนอุปกรณ์ของผู้ใช้ โดยวิดีโอควรมีลักษณะดังนี้

    • มีความละเอียด 1080p
    • มีความยาวระหว่าง 3 ถึง 60 วินาที
    • รูปแบบไฟล์วิดีโอที่อนุญาตให้ใช้ ได้แก่ H.264, H.265, MOV, MP4 และ WebM
    • ควรมีขนาดเต็มหน้าจออุปกรณ์หรือเล็กกว่านั้น
  • รายการ URI สำหรับวิดีโอและ/หรือรูปภาพที่เป็นไฟล์ในเครื่องบนอุปกรณ์ของผู้ใช้

องค์ประกอบสติกเกอร์

สตริง

URI สำหรับสติกเกอร์ที่เป็นไฟล์ในเครื่องบนอุปกรณ์ของผู้ใช้ โดยรูปแบบไฟล์สติกเกอร์ที่อนุญาตให้ใช้ ได้แก่ JPG และ PNG ส่วนขนาดที่แนะนำคือ 640 x 480 สติกเกอร์จะปรากฏบนวิดีโอ

ตัวอย่างโค้ด

ตัวอย่างโค้ด Java และ Kotlin ต่อไปนี้แสดงวิธีส่งรูปภาพหรือวิดีโอรายการเดียว วิธีส่งรูปภาพหรือวิดีโอหลายรายการ และวิธีส่งรูปภาพหรือวิดีโอที่มีสติกเกอร์

ตัวอย่างสำหรับไฟล์สื่อหนึ่งไฟล์

ตัวอย่างโค้ดต่อไปนี้จะส่งไฟล์หนึ่งไฟล์ไปยัง Instagram เพื่อให้ผู้ใช้สามารถแก้ไขและเผยแพร่ไปยัง Instagram Reels ของตนได้

// Instantiate an intent
val intent = Intent("com.instagram.share.ADD_TO_REEL")

// Set package
intent.setPackage("com.instagram.android")

// Attach your App ID to the intent
val appId = "your-app-id"
intent.putExtra("com.instagram.platform.extra.APPLICATION_ID", appId)

// Attach your image or video to the intent from a URI
val mediaAssetUri = Uri.parse("your-image-or-video-asset-uri-goes-here")
intent.setDataAndType(mediaAssetUri, "image/* video/*")
intent.putExtra(Intent.EXTRA_STREAM, mediaAssetUri)

// Instantiate an activity
val activity: Activity = getActivity()

// Grant URI permissions
intent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
val resInfoList = activity.packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)
for (resolveInfo in resInfoList) {
    val packageName = resolveInfo.activityInfo.packageName
    activity.grantUriPermission(packageName, mediaAssetUri, Intent.FLAG_GRANT_READ_URI_PERMISSION)
}

// Verify that the activity resolves the intent and start it
if (activity.packageManager.resolveActivity(intent, 0) != null) {
    activity.startActivityForResult(intent, 0)
}
// Instantiate an intent
Intent intent = new Intent("com.instagram.share.ADD_TO_REEL");

// Set package
intent.setPackage("com.instagram.android");

// Attach your App ID to the intent
String appId = "your-app-id";
intent.putExtra("com.instagram.platform.extra.APPLICATION_ID", appId);

// Attach your image or video to the intent from a URI
Uri mediaAssetUri = Uri.parse("your-image-or-video-asset-uri-goes-here");
intent.setDataAndType(mediaAssetUri, "image/* video/*");
intent.putExtra(Intent.EXTRA_STREAM, mediaAssetUri);

// Instantiate an activity
Activity activity = getActivity();

// Grant URI permissions
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
List<ResolveInfo> resInfoList = activity.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : resInfoList) {
    String packageName = resolveInfo.activityInfo.packageName;
    activity.grantUriPermission(packageName, mediaAssetUri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
}

// Verify that the activity resolves the intent and start it
if (activity.getPackageManager().resolveActivity(intent, 0) != null) {
    activity.startActivityForResult(intent, 0);
}

ตัวอย่างสำหรับไฟล์สื่อหลายไฟล์

ตัวอย่างโค้ดต่อไปนี้จะส่งไฟล์หลายไฟล์ไปยัง Instagram เพื่อให้ผู้ใช้สามารถแก้ไขและเผยแพร่ไปยัง Instagram Reels ของตนได้

// Instantiate an intent
val intent = Intent("com.instagram.share.ADD_TO_REEL_MULTIPLE")

// Set package
intent.setPackage("com.instagram.android")

// Attach your App ID to the intent
val appId = "your-app-id"
intent.putExtra("com.instagram.platform.extra.APPLICATION_ID", appId)
intent.setType("image/* video/*")

// Attach your files to the intent
val uri1 = Uri.parse("your-first-uri-goes-here")
val uri2 = Uri.parse("your-second-uri-goes-here")
val mediaList = mutableListOf<Uri>()
mediaList.addAll(listOf(uri1, uri2))
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, ArrayList(mediaList))

// Instantiate an activity
val activity: Activity = getActivity()

// Grant URI permissions
intent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
val resInfoList =
activity.packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)
for (uri in mediaList) {
  for (resolveInfo in resInfoList) {
    val packageName = resolveInfo.activityInfo.packageName
    activity.grantUriPermission(packageName, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION)
  }
}

// Verify that the activity resolves the intent and start it
if (activity.packageManager.resolveActivity(intent, 0) != null) {
  activity.startActivityForResult(intent, 0)
}
// Instantiate an intent
Intent intent = new Intent("com.instagram.share.ADD_TO_REEL_MULTIPLE");

// Set package
intent.setPackage("com.instagram.android");

// Attach your App ID to the intent
String appId = "your-app-id";
intent.putExtra("com.instagram.platform.extra.APPLICATION_ID", appId);
intent.setType("image/* video/*");

// Attach your files to the intent
Uri uri1 = Uri.parse("your-first-uri-goes-here");
Uri uri2 = Uri.parse("your-second-uri-goes-here");
ArrayList<Uri> mediaList = new ArrayList<>();
mediaList.add(uri1);
mediaList.add(uri2);
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, mediaList);

// Instantiate an activity
Activity activity = getActivity();

// Grant URI permissions
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
List<ResolveInfo> resInfoList = activity.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
for (Uri uri : mediaList) {
    for (ResolveInfo resolveInfo : resInfoList) {
        String packageName = resolveInfo.activityInfo.packageName;
        activity.grantUriPermission(packageName, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
    }
}

// Verify that the activity resolves the intent and start it
if (activity.getPackageManager().resolveActivity(intent, 0) != null) {
    activity.startActivityForResult(intent, 0);
}

ตัวอย่างสำหรับไฟล์ที่มีสติกเกอร์

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

// Instantiate an intent
val intent = Intent("com.instagram.share.ADD_TO_REEL")

// Set package
intent.setPackage("com.instagram.android")

// Attach your App ID to the intent
val appId = "your-app-id" 
intent.putExtra("com.instagram.platform.extra.APPLICATION_ID", appId)

// Attach your video to the intent from a URI
val videoAssetUri = Uri.parse("your-video-asset-uri-goes-here")
intent.setDataAndType(videoAssetUri, "video/*")
intent.putExtra(Intent.EXTRA_STREAM, videoAssetUri)

// Attach your sticker to the intent from a URI
val stickerAssetUri = Uri.parse("your-image-asset-uri-goes-here")
intent.putExtra("interactive_asset_uri", stickerAssetUri)

// Instantiate an activity
val activity: Activity = getActivity()

// Grant URI permissions
intent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
val resInfoList = activity.packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)
for (resolveInfo in resInfoList) {
    val packageName = resolveInfo.activityInfo.packageName
    activity.grantUriPermission(packageName, videoAssetUri, Intent.FLAG_GRANT_READ_URI_PERMISSION)
    activity.grantUriPermission(packageName, stickerAssetUri, Intent.FLAG_GRANT_READ_URI_PERMISSION)
}

// Verify that the activity resolves the intent and start it
if (activity.packageManager.resolveActivity(intent, 0) != null) {
    activity.startActivityForResult(intent, 0)
}
// Instantiate an intent
Intent intent = new Intent("com.instagram.share.ADD_TO_REEL");

// Set package
intent.setPackage("com.instagram.android");

// Attach your App ID to the intent
String appId = "your-app-id";
intent.putExtra("com.instagram.platform.extra.APPLICATION_ID", appId);

// Attach your video to the intent from a URI
Uri videoAssetUri = Uri.parse("your-video-asset-uri-goes-here");
intent.setDataAndType(videoAssetUri, "video/*");
intent.putExtra(Intent.EXTRA_STREAM, videoAssetUri);

// Attach your sticker to the intent from a URI
Uri stickerAssetUri = Uri.parse("your-image-asset-uri-goes-here");
intent.putExtra("interactive_asset_uri", stickerAssetUri);

// Instantiate an activity
Activity activity = getActivity();

// Grant URI permissions
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
List<ResolveInfo> resInfoList = activity.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : resInfoList) {
    String packageName = resolveInfo.activityInfo.packageName;
    activity.grantUriPermission(packageName, videoAssetUri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
    activity.grantUriPermission(packageName, stickerAssetUri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
}

// Verify that the activity resolves the intent and start it
if (activity.getPackageManager().resolveActivity(intent, 0) != null) {
  activity.startActivityForResult(intent, 0);
}

ตัวอย่างจาก GitHub และวิดีโอแนะนำการใช้งาน

Meta ได้เผยแพร่ตัวอย่างโค้ดสำหรับการแชร์ไปยัง Reels บน Instagram บน GitHub ที่ fbsamples/share_to_reels_android เพื่อเพิ่มความสะดวกให้กับผู้พัฒนา รับชมวิดีโอต่อไปนี้เพื่อเรียนรู้วิธีใช้ตัวอย่างจาก GitHub

เกิดข้อผิดพลาดขึ้น
เรากำลังประสบปัญหาในการเล่นวิดีโอนี้