이 문서에서는 사용자가 Instagram 릴스에 이미지, 동영상, 스티커를 공유할 수 있도록 Android 앱에 공유를 통합하는 방법을 보여줍니다.
Reels LayersThe Reels composer has a background video layer and an optional sticker layer.
Sharing Icon
|
명시적 인텐트를 사용하여 Instagram 앱을 시작하고 릴스 콘텐츠를 Instagram으로 보냅니다. Instagram 앱이 해당 콘텐츠를 받아서 릴스 작성기에 읽어들이면 사용자가 콘텐츠를 수정하여 릴스에 게시할 수 있습니다.
일반적으로 공유 플로는 다음과 같은 작업을 수행합니다.
"com.instagram.android"와 동일하게 설정하여 Instagram 앱이 인텐트를 처리하도록 합니다.사용자의 기기에서 생성하는 모든 임시 파일을 삭제합니다.
릴스에 공유하면 다음과 같은 데이터를 보내야 합니다.
| 데이터 | 설명 |
|---|---|
Meta 앱 ID 문자열 | 필수 항목. Meta 앱 ID |
미디어 자산 단일 자산에 대한 문자열또는 여러 자산에 대한 리스트 | 필수 항목. 다음 옵션 중 하나가 필요합니다.
|
스티커 자산 문자열 | 사용자 기기에 있는 로컬 파일인 스티커의 URI. 허용 가능한 스티커 형식은 |
다음 Java 및 Kotlin 코드 예시는 단일 이미지 또는 동영상을 보내는 방법, 여러 이미지 또는 동영상을 보내는 방법, 스티커가 있는 이미지 또는 동영상을 보내는 방법을 보여줍니다.
다음 코드 예시에서는 Instagram에 파일 한 개를 보내서 사용자가 이를 수정하고 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에 동영상을 보내고 스티커(선택 사항)를 포함하여 사용자가 이를 수정하고 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는 GitHub의 fbsamples/share_to_reels_android에 Instagram 릴스에 공유하기 샘플 코드를 게시했습니다. 다음 동영상에서 GitHub 샘플을 사용하는 방법을 알아보세요.