Вы можете интегрировать функцию публикации в свое приложение для Android или iOS, чтобы пользователи могли делиться вашим контентом в историях в Instagram. Информацию о создании приложений см. в руководствах по началу работы с Facebook SDK для Android и iOS.
Чтобы публиковать контент в историях в Instagram, с начала января 2023 г. необходимо предоставлять ID приложения Facebook. Более подробную информацию см. в статье Введение важного обновления для публикаций в историях в Instagram. Если вы не укажете ID приложения, при попытке поделиться контентом в Instagram пользователи получат ошибку "Приложение, из которого вы пытались поделиться историей, сейчас не поддерживает такую функцию". Информацию о получении ID приложения см. в разделах Получение ID приложения (Android) и Получение ID приложения (iOS).
С помощью неявных объектов Intent в Android и пользовательских схем URL в iOS можно отправлять фото, видео и стикеры из вашего приложения в приложение Instagram. Приложение Instagram получит этот контент и загрузит его в редактор, чтобы пользователь мог опубликовать его в историях Instagram.
Редактор историй в приложении Instagram содержит фоновый слой и слой стикера. Фоновый слойЭтот слой позволяет заполнить весь экран фоновым фото, видео, сплошным цветом или градиентом. Слой стикераЭтот слой может содержать изображение. Пользователь может дополнительно настроить его в редакторе историй. |
В реализациях для Android с целью запуска приложения Instagram и передачи в него контента используются неявные объекты Intent. Обычно процесс публикации выглядит следующим образом:
При публикации в истории вы отправляете следующие данные.
Контент | Тип | Описание |
---|---|---|
ID приложения Facebook | Строка | |
Фоновый объект | URI объекта изображения (в формате .jpg или .png) или видео (в формате H.264, H.265 или WebM). Минимальное разрешение: 720 x 1 280. Рекомендуемое соотношение сторон изображения: 9:16 или 9:18. Видео может иметь разрешение до 1 080p и длительность до 20 секунд. Необходимо использовать URI локального файла на устройстве. Вы должны отправить фоновый объект, объект стикера или оба этих объекта. | |
Объект стикера | URI объекта изображения (в формате .jpg или .png). Рекомендуемый размер: 640 x 480. Это изображение накладывается на фон как стикер. Необходимо использовать URI локального файла на устройстве. Вы должны отправить фоновый объект, объект стикера или оба этих объекта. | |
Верхний цвет фонового слоя | Строка | Строковое шестнадцатеричное значение для цвета, используемое в сочетании со значением нижнего цвета фонового слоя. Если эти значения совпадают, фоновый слой заполняется сплошным цветом. Если они различаются, на их основании генерируется градиент. Если вы указываете фоновый объект, будет использоваться объект, а это значение будет игнорироваться. |
Нижний цвет фонового слоя | Строка | Строковое шестнадцатеричное значение для цвета, используемое в сочетании со значением верхнего цвета фонового слоя. Если эти значения совпадают, фоновый слой заполняется сплошным цветом. Если они различаются, на их основании генерируется градиент. Если вы указываете фоновый объект, будет использоваться объект, а это значение будет игнорироваться. |
Следующий пример кода отправляет изображение в Instagram, чтобы пользователь мог опубликовать его в историях в Instagram.
// Instantiate an intent Intent intent = new Intent("com.instagram.share.ADD_TO_STORY"); // Attach your App ID to the intent String sourceApplication = "1234567"; // This is your application's FB ID intent.putExtra("source_application", sourceApplication); // Attach your image to the intent from a URI Uri backgroundAssetUri = Uri.parse("your-image-asset-uri-goes-here"); intent.setDataAndType(backgroundAssetUri, MEDIA_TYPE_JPEG); // Grant URI permissions for the image intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // Instantiate an activity Activity activity = getActivity(); // Verify that the activity resolves the intent and start it if (activity.getPackageManager().resolveActivity(intent, 0) != null) { activity.startActivityForResult(intent, 0); }
Этот пример отправляет в Instagram объект изображения для слоя стикера и группу цветов фонового слоя. Если не передать цвета фонового слоя, будет использоваться цвет #222222
.
// Instantiate an intent Intent intent = new Intent("com.instagram.share.ADD_TO_STORY"); // Attach your App ID to the intent String sourceApplication = "1234567"; // This is your application's FB ID intent.putExtra("source_application", sourceApplication); // Attach your sticker to the intent from a URI, and set background colors Uri stickerAssetUri = Uri.parse("your-image-asset-uri-goes-here"); intent.setType(MEDIA_TYPE_JPEG); intent.putExtra("interactive_asset_uri", stickerAssetUri); intent.putExtra("top_background_color", "#33FF33"); intent.putExtra("bottom_background_color", "#FF00FF"); // Instantiate an activity Activity activity = getActivity(); // Grant URI permissions for the sticker activity.grantUriPermission( "com.instagram.android", 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); }
Этот пример отправляет в Instagram объект изображения для фонового слоя и объект изображения для слоя стикера.
// Instantiate an intent Intent intent = new Intent("com.instagram.share.ADD_TO_STORY"); // Attach your App ID to the intent String sourceApplication = "1234567"; // This is your application's FB ID intent.putExtra("source_application", sourceApplication); // Attach your image to the intent from a URI Uri backgroundAssetUri = Uri.parse("your-background-image-asset-uri-goes-here"); intent.setDataAndType(backgroundAssetUri, MEDIA_TYPE_JPEG); // Attach your sticker to the intent from a URI Uri stickerAssetUri = Uri.parse("your-sticker-image-asset-uri-goes-here"); intent.putExtra("interactive_asset_uri", stickerAssetUri); // Grant URI permissions for the image intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // Instantiate an activity Activity activity = getActivity(); // Grant URI permissions for the sticker activity.grantUriPermission( "com.instagram.android", 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); }
В реализациях для iOS с целью запуска приложения Instagram и передачи в него контента используется пользовательская схема URL. Обычно процесс публикации выглядит следующим образом:
При публикации в истории вы отправляете следующие данные.
Контент | Тип | Описание |
---|---|---|
ID приложения Facebook | ||
Объект фонового изображения | Данные для объекта изображения в поддерживаемом формате (.jpg или .png). Минимальное разрешение: 720x1280. Рекомендуемое соотношение сторон изображения: 9:16 или 9:18. В приложение Instagram необходимо передать фоновый объект (изображение или видео), объект стикера или оба эти объекта. | |
Объект фонового видео | Данные для объекта видео в поддерживаемом формате (H.264, H.265 или WebM). Видео может иметь разрешение до 1080p и длительность до 20 секунд. Рекомендуется размер до 50 МБ. В приложение Instagram необходимо передать фоновый объект (изображение или видео), объект стикера или оба эти объекта. | |
Объект стикера | Данные для объекта изображения в поддерживаемом формате (.jpg или .png). Рекомендуемый размер: 640 x 480. Это изображение накладывается на фон как стикер. В приложение Instagram необходимо передать фоновый объект (изображение или видео), объект стикера или оба эти объекта. | |
Верхний цвет фонового слоя | Строковое шестнадцатеричное значение для цвета, используемое в сочетании со значением нижнего цвета фонового слоя. Если эти значения совпадают, фоновый слой заполняется сплошным цветом. Если они различаются, на их основании генерируется градиент. | |
Нижний цвет фонового слоя | Строковое шестнадцатеричное значение для цвета, используемое в сочетании со значением нижнего цвета фонового слоя. Если эти значения совпадают, фоновый слой заполняется сплошным цветом. Если они различаются, на их основании генерируется градиент. |
Чтобы ваше приложение могло использовать пользовательскую схему URL Instagram, ее нужно зарегистрировать. Для этого добавьте значение instagram-stories
в ключ LSApplicationQueriesSchemes
в файле Info.plist
приложения.
Следующий пример кода отправляет в Instagram объект изображения для фонового слоя, чтобы пользователь мог отредактировать и опубликовать его в историях в Instagram.
- (void)shareBackgroundImage { // Identify your App ID NSString *const appIDString = @"1234567890"; // Call method to share image [self backgroundImage:UIImagePNGRepresentation([UIImage imageNamed:@"backgroundImage"]) appID:appIDString]; } // Method to share image - (void)backgroundImage:(NSData *)backgroundImage appID:(NSString *)appID { NSURL *urlScheme = [NSURL URLWithString:[NSString stringWithFormat:@"instagram-stories://share?source_application=%@", appID]]; if ([[UIApplication sharedApplication] canOpenURL:urlScheme]) { // Attach the pasteboard items NSArray *pasteboardItems = @[@{@"com.instagram.sharedSticker.backgroundImage" : backgroundImage}]; // Set pasteboard options NSDictionary *pasteboardOptions = @{UIPasteboardOptionExpirationDate : [[NSDate date] dateByAddingTimeInterval:60 * 5]}; // This call is iOS 10+, can use 'setItems' depending on what versions you support [[UIPasteboard generalPasteboard] setItems:pasteboardItems options:pasteboardOptions]; [[UIApplication sharedApplication] openURL:urlScheme options:@{} completionHandler:nil]; } else { // Handle error cases } }
В этом примере кода показано, как передать в приложение Instagram объект изображения для слоя стикера и набор цветов для фонового слоя. Если не передать цвета фонового слоя, будет использоваться цвет #222222
.
- (void)shareStickerImage { // Identify your App ID NSString *const appIDString = @"1234567890"; // Call method to share sticker [self stickerImage:UIImagePNGRepresentation([UIImage imageNamed:@"stickerImage"]) backgroundTopColor:@"#444444" backgroundBottomColor:@"#333333" appID:appIDString]; } // Method to share sticker - (void)stickerImage:(NSData *)stickerImage backgroundTopColor:(NSString *)backgroundTopColor backgroundBottomColor:(NSString *)backgroundBottomColor appID:(NSString *)appID { NSURL *urlScheme = [NSURL URLWithString:[NSString stringWithFormat:@"instagram-stories://share?source_application=%@", appID]]; if ([[UIApplication sharedApplication] canOpenURL:urlScheme]) { // Attach the pasteboard items NSArray *pasteboardItems = @[@{@"com.instagram.sharedSticker.stickerImage" : stickerImage, @"com.instagram.sharedSticker.backgroundTopColor" : backgroundTopColor, @"com.instagram.sharedSticker.backgroundBottomColor" : backgroundBottomColor}]; // Set pasteboard options NSDictionary *pasteboardOptions = @{UIPasteboardOptionExpirationDate : [[NSDate date] dateByAddingTimeInterval:60 * 5]}; // This call is iOS 10+, can use 'setItems' depending on what versions you support [[UIPasteboard generalPasteboard] setItems:pasteboardItems options:pasteboardOptions]; [[UIApplication sharedApplication] openURL:urlScheme options:@{} completionHandler:nil]; } else { // Handle error cases } }
В этом примере кода показано, как передать в приложение Instagram объект изображения для фонового слоя и объект изображения для слоя стикера.
- (void)shareBackgroundAndStickerImage { // Identify your App ID NSString *const appIDString = @"1234567890"; // Call method to share image and sticker [self backgroundImage:UIImagePNGRepresentation([UIImage imageNamed:@"backgroundImage"]) stickerImage:UIImagePNGRepresentation([UIImage imageNamed:@"stickerImage"]) appID:appIDString]; } // Method to share image and sticker - (void)backgroundImage:(NSData *)backgroundImage stickerImage:(NSData *)stickerImage appID:(NSString *)appID { NSURL *urlScheme = [NSURL URLWithString:[NSString stringWithFormat:@"instagram-stories://share?source_application=%@", appID]]; if ([[UIApplication sharedApplication] canOpenURL:urlScheme]) { // Attach the pasteboard items NSArray *pasteboardItems = @[@{@"com.instagram.sharedSticker.backgroundImage" : backgroundImage, @"com.instagram.sharedSticker.stickerImage" : stickerImage}]; // Set pasteboard options NSDictionary *pasteboardOptions = @{UIPasteboardOptionExpirationDate : [[NSDate date] dateByAddingTimeInterval:60 * 5]}; // This call is iOS 10+, can use 'setItems' depending on what versions you support [[UIPasteboard generalPasteboard] setItems:pasteboardItems options:pasteboardOptions]; [[UIApplication sharedApplication] openURL:urlScheme options:@{} completionHandler:nil]; } else { // Handle error cases } }
Вы также можете разрешить пользователям приложения публиковать контент из него в виде историй на Facebook. О том, как это сделать, см. в документации по публикации в историях для платформы Facebook.