В этом документе рассказывается, как интегрировать функцию репостов в приложение для Android, чтобы пользователи могли делиться изображениями, видео и наклейками в Instagram Reels.
Reels LayersThe Reels composer has a background video layer and an optional sticker layer.
Sharing Icon
|
Чтобы запустить приложение Instagram и отправить его контент для Reels, используйте явное намерение. Приложение Instagram получит этот контент и загрузит его в редактор Reels, чтобы пользователь мог отредактировать его опубликовать в Reels.
В общем случае процесс репоста выглядит следующим образом:
"com.instagram.android", чтобы приложение Instagram могло обработать это намерение.Удаляйте все временные файлы, которые создаете на устройстве пользователя.
При репосте в Reels вам надо отправить следующие данные.
| Данные | Описание |
|---|---|
ID приложения Meta Строка | Обязательный параметр. ID вашего приложения Meta |
Медиаобъекты строка для одного объектаили список для нескольких объектов | Обязательный параметр. Требуется один из перечисленных ниже параметров:
|
Объект стикера Строка | URI локального файла стикера на устройстве пользователя. Допустимые форматы стикеров: |
В следующих примерах кода на 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)
}Следующий пример кода отправляет в 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)
}Следующий пример кода отправляет в 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)
}Чтобы разработчикам было удобнее, компания Meta опубликовала пример кода для публикации в Instagram Reels на GitHub: fbsamples/share_to_reels_android. Чтобы узнать, как пользоваться примером на GitHub, посмотрите следующий видеокурс.