Comment puis-je partager une vidéo en tant qu'arrière-plan et une image en tant qu'autocollant pour Instagram Story?
Cette documentation n'a qu'une solution si les deux contenus sont des images.
https://developers.facebook.com/docs/instagram/sharing-to-stories/
Je voudrais envoyer une vidéo de fond avec une image d'autocollant. Est-ce possible avec Instagram Story?
J'ai essayé ça, mais malheureusement ça n'a pas marché:
// Define image asset URI and attribution link URL
Uri backgroundAssetUri = Uri.fromFile(new File(backgroundPath));
Uri stickerAssetUri = Uri.fromFile(new File(stickerPath));
// Instantiate implicit intent with ADD_TO_STORY action,
// background asset, and attribution link
Intent intent = new Intent("com.instagram.share.ADD_TO_STORY");
intent.setDataAndType(backgroundAssetUri, "*/*");
intent.putExtra("interactive_asset_uri", stickerAssetUri);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
callbackManager.startActivityForResult(Intent.createChooser(intent, "Share"), NatShareCallbacks.ACTIVITY_SHARE_INSTAGRAM_STORY);
Mais l'exemple avec deux images fonctionne sans problème. Je vois le problème principalement avec SetType, car ce sont deux types de contenu différents.
[MODIFIER]
La vidéo seule sans autocollants fonctionnait déjà pour moi sur Android et l'exemple de la documentation avec image-fond et image-autocollant fonctionne également parfaitement. Mais pas vidéo et autocollant ensemble.
Cela fonctionne sous iOS sans aucun problème:
NSData *backgroundVideo = [[NSFileManager defaultManager] contentsAtPath:path];
UIImage *appIcon = [UIImage imageNamed: [[[[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIcons"] objectForKey:@"CFBundlePrimaryIcon"] objectForKey:@"CFBundleIconFiles"] objectAtIndex:0]];
// Verify app can open custom URL scheme, open
NSURL *urlScheme = [NSURL URLWithString:@"instagram-stories://share"];
if ([[UIApplication sharedApplication] canOpenURL:urlScheme]) {
// Assign background image asset and attribution link URL to pasteboard
//NSArray *pasteboardItems = @[@{@"com.instagram.sharedSticker.backgroundVideo" : backgroundVideo}];
NSArray *pasteboardItems = @[@{@"com.instagram.sharedSticker.backgroundVideo" : backgroundVideo, @"com.instagram.sharedSticker.stickerImage" : UIImagePNGRepresentation(appIcon)}];
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 older app versions or app not installed case
}
C'était un bug.
Facebook a écrit: .__ "Ils ont ajouté cette fonctionnalité à Android également, vous devriez donc pouvoir envoyer un fond avec un autocollant maintenant."
Les choses les plus évidentes à vérifier tout de suite sont:
Votre atout correspond-il à ces critères:
Uri sur un fichier image (JPG, PNG) ou un fichier vidéo (H.264, H.265, WebM) . Dimensions minimales 720x1280. Ratios d'images recommandés 9:16 ou 9:18 . Les vidéos peuvent être en 1080p et durer jusqu'à 20 secondes. L'Uri a besoin de être un contenu Uri dans un fichier local sur le périphérique.
intent.setDataAndType(backgroundAssetUri, "*/*");
- la documentation indique que la deuxième valeur de la fonction pourrait être nulle, mais je ne pense pas que "*/*" soit un type mime valide: essayez avec MEDIA_TYPE_VIDEO - Lien vers la documentationintent.setDataAndType(backgroundAssetUri, MEDIA_TYPE_VIDEO);
MEDIA_TYPE_VIDEO ajouté à l'API de niveau 11
public static final int MEDIA_TYPE_VIDEO
Constante pour la colonne MEDIA_TYPE indiquant que le fichier est une vidéo fichier.
Valeur constante: 3 (0x00000003)
Activité activité = getActivity (); activity.grantUriPermission ("com.instagram.Android", stickerAssetUri, Intent.FLAG_GRANT_READ_URI_PERMISSION); if (activity.getPackageManager (). resolActivity (intent, 0)! = null) { activity.startActivityForResult (intent, 0); }