Je suis déjà en mesure de partager des photos sur Whatsapp, mais je le fais en fournissant l’option Whatsapp dans une UIActivityViewController
, puis en affichant une UIDocumentInteractionController
.
À partir de cette UIDocumentInteractionController
, j'ai choisi l'option Whatsapp qui redirige l'utilisateur vers Whatsapp et lui permet de partager la photo.
Jusqu'ici mon code est comme ceci:
if ([activityType isEqualToString:@"whatsappSharing"]) {
if ([[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"whatsapp://app"]]) {
NSString *savePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/whatsAppTmp.wai"];
[UIImageJPEGRepresentation(finalImage, 1.0) writeToFile:savePath atomically:YES];
weakDocumentInteraction = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:savePath]];
weakDocumentInteraction.UTI = @"net.whatsapp.image";
weakDocumentInteraction.delegate = weakSelf;
[weakDocumentInteraction presentOpenInMenuFromRect:CGRectZero inView:weakSelf.view animated:YES];
}
}
Je veux pouvoir sélectionner l'option dans une UIActivityViewController
et afficher directement Whatsapp.
Existe-t-il un moyen de sauter cette deuxième partie de la présentation de la UIDocumentInteractionController
et de la sélection de l'option de l'application Whatsapp par programme?
Actuellement, l'utilisateur doit sélectionner l'option Whatsapp deux fois pour partager l'image.
PS: J'utilise UIActivityViewController
parce que j'utilise aussi d'autres activités.
Donc, en gros, vous voulez partager une image via Facebook ou Whatsapp, en plus de fournir une option pour enregistrer l'image.
Eh bien ... Permet de décomposer cela lentement pour les 2 voies les plus rapides.
UIActivityViewController
Si vous partagez une image viaUIActivityViewController
then, afin de fournir l'option Whatsapp, vous devez créer une UIActivity
personnalisée. ( Voir la question Stackoverflow ).
Les problèmes avec ceci sont:
UIDocumentInteractionController
Si vous partagez une image viaUIDocumentInteractionController
then, pour pouvoir utiliser l'option Facebook, vous devez spécifier l'UTI sous la forme public.image
.
Les problèmes avec ceci sont:
public.image
UTI remplira votre UIDocumentInteractionController
avec beaucoup plus d’options que juste Facebook et Whatsapp.Save
, plutôt que -presentOpenInMenuFromRect:inView:animated:
qui affiche uniquement les applications qui ouvrent ce type de fichier ...-presentOptionsMenuFromRect:inView:animated:
pour afficher l'option Save to Album
. Mais ceci inclura d’autres options telles que Mail
etc.Si vous utilisez uniquement UIDocumentInteractionController
, vous devez accepter le fait que vous ne pouvez pas afficher seulement Facebook + Whatsapp + Save (pour les raisons mentionnées ci-dessus).
Si vous utilisez UIActivityViewController
et que vous ne voulez pas créer une UIActivity
personnalisée pour Whatsapp, vous êtes bloqué mais ... si vous décidez d'utiliser une UIActivity
personnalisée, vous êtes toujours bloqué car il n'y a pas de disposition partager un objet image avec Whatsapp à l'aide de UIActivityViewController
.
Il ne semble pas y avoir de moyen facile d’avoir l’option juste Facebook + Whatsapp + Save.
La chose qui la complique est Whatsapp qui vous oblige à utiliser UIDocumentInteractionController
qui semble être le seul moyen de partager une image sur Whatsapp (actuellement) et en raison de son schéma d'URL limité, il n'y a pas point en le fournissant dans UIActivityViewController
.
De plus, utiliser UIDocumentInteractionController
à tour de rôle vous conduit à fournir plus d'options que vous ne le souhaiteriez.
Honnêtement, cela semble plutôt sombre en ce moment.
Eh bien, si je comprends la question correctement, il existe une option pour la partager facilement via 1 UIDocumentInteractionController
, veuillez consulter mon ancienne question & réponse: https://stackoverflow.com/a/20887254/849616 .