Puedes integrar la función de compartir en tus apps para Android y iOS para permitir a los usuarios compartir tu contenido como historias de Instagram. Para crear una app nueva, consulta Primeros pasos con el SDK de Facebook para Android y Primeros pasos con el SDK de Facebook para iOS.
A partir de enero de 2023, puedes proporcionar un identificador de la app de Facebook para compartir contenido en Instagram Stories. Para obtener más información, consulta Presentación de una importante actualización en Compartir en historias de Instagram. Si no proporcionas un identificador de app, tus usuarios verán el mensaje de error "La app desde la que compartiste no admite actualmente la función de compartir en historias" cuando intenten compartir su contenido en Instagram. Para obtener más información, consulta Obtener un identificador de la app (Android) y Obtener un identificador de la app (iOS).
Gracias a los intents implícitos de Android y los esquemas de URL personalizadas, tu app puede enviar fotos, videos y stickers a la app de Instagram. La app de Instagram recibe este contenido y lo carga en el editor de historias para que el usuario pueda publicarlo en Instagram Stories.
El editor de historias de la app de Instagram está compuesto por una capa de fondo y una capa de sticker. Capa de fondoLa capa de fondo cubre la pantalla y puedes personalizarla con una foto, un video, un color sólido o un degradado de color. Capa de stickerLa capa de sticker puede contener una imagen, y el usuario puede personalizarla aún más mediante el editor de historias. |
Las implementaciones de Android utilizan intents implícitos para iniciar la app de Instagram y pasarle contenido. En general, los pasos del flujo para compartir son los siguientes:
Los siguientes datos se envían cuando compartes contenido en historias.
Contenido | Tipo | Descripción |
---|---|---|
Identificador de la app de Facebook | Cadena | |
Activo de fondo | URI a un activo de imagen (JPG, PNG) o activo de video (H.264, H.265, WebM). Las dimensiones mínimas son 720 x 1.280. La relación de aspecto recomendada de la imagen es 9:16 o 9:18. Los videos pueden ser de 1080p y tener una duración de hasta 20 segundos. El URI debe ser un URI de contenido a un archivo local en el dispositivo. Debes enviar un activo de fondo, un activo de sticker o ambos. | |
Activo de sticker | URI a un activo de imagen (JPG, PNG). Dimensiones recomendadas: 640 x 480. Esta imagen aparece como un sticker en el fondo. El URI debe ser un URI de contenido a un archivo local en el dispositivo. Debes enviar un activo de fondo, un activo de sticker o ambos. | |
Color superior de la capa de fondo | Cadena | Valor de color de cadena hexadecimal utilizado junto con el valor de color inferior de la capa de fondo. Si ambos valores son iguales, la capa de fondo tendrá un color sólido. Si son diferentes, se usan para generar un gradiente. Si especificas un activo de fondo, se utiliza el activo y se ignora este valor. |
Color inferior de la capa de fondo | Cadena | Valor de color de cadena hexadecimal utilizado junto con el valor de color superior de la capa de fondo. Si ambos valores son iguales, la capa de fondo tendrá un color sólido. Si son diferentes, se usan para generar un gradiente. Si especificas un activo de fondo, se utiliza el activo y se ignora este valor. |
El siguiente ejemplo de código envía una imagen a Instagram para que el usuario pueda publicarla en Instagram Stories.
// 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); }
Este ejemplo envía un activo de imagen de capa de sticker y un conjunto de colores de capas de fondo a Instagram. Si no especificas los colores de la capa de fondo, el color será #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); }
Este ejemplo envía un activo de imagen de capa de fondo y un activo de imagen de capa de sticker a 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); }
Las implementaciones de iOS utilizan un esquema de URL personalizada para iniciar la app de Instagram y pasarle contenido. En general, los pasos del flujo para compartir son los siguientes:
Los siguientes datos se envían cuando compartes contenido en historias.
Contenido | Tipo | Descripción |
---|---|---|
Identificador de la app de Facebook | ||
Activo de imagen de fondo | Datos de un activo de imagen en formato compatible (JPG, PNG). Las dimensiones mínimas son 720 x 1.280. La relación de aspecto recomendada de la imagen es 9:16 o 9:18. Debes pasar un activo de fondo (imagen o video), un activo de sticker o ambos a la app de Instagram. | |
Activo de video de fondo | Datos de un activo de video en un formato compatible (H.264, H.265, WebM). Los videos pueden ser de 1.080 píxeles y tener una duración de hasta 20 segundos. Se recomienda menos de 50 MB. Debes pasar un activo de fondo (imagen o video), un activo de sticker o ambos a la app de Instagram. | |
Activo de sticker | Datos de un activo de imagen en formato compatible (JPG, PNG). Dimensiones recomendadas: 640 x 480. Esta imagen aparece como un sticker en el fondo. Debes pasar un activo de fondo (imagen o video), un activo de sticker o ambos a la app de Instagram. | |
Color superior de la capa de fondo | Valor de color de cadena hexadecimal utilizado junto con el valor de color inferior de la capa de fondo. Si ambos valores son iguales, la capa de fondo tendrá un color sólido. Si son diferentes, se usan para generar un gradiente. | |
Color inferior de la capa de fondo | Valor de color de cadena hexadecimal utilizado junto con el valor de color inferior de la capa de fondo. Si ambos valores son iguales, la capa de fondo tendrá un color sólido. Si son diferentes, se usan para generar un gradiente. |
Debes registrar el esquema de URL personalizada de Instagram antes de que lo use la app. Agrega instagram-stories
a la clave LSApplicationQueriesSchemes
en la Info.plist
de la app.
El siguiente ejemplo de código envía un activo de imagen de capa de fondo a Instagram para que el usuario pueda editarlo y publicarlo en Instagram Stories.
- (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 } }
En este código de ejemplo, se muestra cómo pasar a la app de Instagram un activo de imagen de capa de sticker y un conjunto de colores de capa de fondo. Si no especificas los colores de la capa de fondo, el color será #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 } }
En este código de ejemplo, se muestra cómo pasar a la app de Instagram un activo de imagen de capa de fondo y un activo de imagen de capa de sticker.
- (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 } }
También puedes permitir que los usuarios de la app compartan contenido en una historia de Facebook. Para obtener información, consulta nuestra documentación sobre cómo compartir en Facebook Stories.