このドキュメントでは、ユーザーがInstagramリールに画像、動画、スタンプをシェアできるように、Androidアプリにシェア機能を統合する方法について示します。
Reels LayersThe Reels composer has a background video layer and an optional sticker layer.
Sharing Icon
|
Instagramアプリを起動してそれにリールのコンテンツを送信するには、明示的インテントを使います。Instagramアプリはコンテンツを受け取ってそれをリールコンポーザーに読み込み、ユーザーがそのコンテンツを編集してリールに公開します。
シェアの一般的なフローは、以下のとおりです。
"com.instagram.android"と等しくなるように設定することにより、Instagramアプリがインテントを処理するようにする。ユーザーのデバイス上に作成した一時ファイルを削除する。
リールにシェアする際には、以下のデータを送信してください。
| データ | 説明 |
|---|---|
MetaアプリID 文字列 | 必須。MetaアプリID |
メディアアセット 文字列(単一アセットの場合)または リスト(複数アセットの場合) | 必須。以下のオプションのいずれか1つが必要です。
|
スタンプアセット 文字列 | ユーザーのデバイス上のローカルファイルであるスタンプのURI。使用可能なスタンプのフォーマットは |
次のJavaおよびKotlinのコードサンプルは、単一の画像または動画の送信方法、複数の画像または動画の送信方法、スタンプを付けた画像または動画の送信方法を示しています。
次のコードサンプルでは、Instagramに1個のファイルを送信し、ユーザーがそれを編集してInstagramリールに公開できるようにしています。
// 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)
}次のコードサンプルでは、Instagramに複数ファイルを送信し、ユーザーがそれらを編集してInstagramリールに公開できるようにしています。
// 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)
}次のコードサンプルでは、Instagramに1個の動画を送信し、任意のスタンプを含め、ユーザーがそれを編集して自分のInstagramリールに公開できるようにしています。
// 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)
}開発者にとっての利便性を高めるため、MetaはInstagramリールへのシェア機能のサンプルコードをGitHubで公開しています。これは、fbsamples/share_to_reels_androidにあります。GitHubサンプルの使い方については、次の動画をご覧ください。