"Cet élément ne peut pas être partagé. Veuillez sélectionner un autre élément."WhatsApp iOS partager message d'échec d'extension

ce bug est corrigé par l'équipe WhatsApp le 23 mai 2016 (build no. 2.16.4).

Impossible de partager l'objet NSString en utilisant UIActivityViewController à WhatsApp.

J'ai essayé de partager en utilisant le code ci-dessous. Mais une fois le contact sélectionné dans la liste, une alerte s'affiche "This item cannot be shared. Please select a different item."

CODE

NSString *shareText = @"Temp text to share";
NSArray *itemsToShare = @[shareText];

UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare applicationActivities:nil];

Je suis confronté à ce problème après la mise à jour de WhatsApp vers la version 2.16.2

34
demandé sur santhu 2016-04-13 19:05:57

7 réponses

A reçu une réponse de L'équipe WhatsApp

- WhatsApp Soutien -

Salut,

Désolé pour le retard! Nous avons reçu de nombreux e-mails récemment, et nous le faisons de notre mieux pour y répondre. Je vous remercie pour votre patience.

Merci de nous informer sur le problème; il sera corrigé dans un version future de WhatsApp. Malheureusement, nous ne pouvons commenter aucun les échéances futures, désolé. Merci pour votre patience continue et soutien de WhatsApp.

Santé, Hans

Donc, ils reconnaissent le bug et corrigeront cela dans la prochaine version.

Solutions De Contournement Possibles =>

  • jusque-là, on peut utiliser UrlSchemes pour partager du texte en clair + url. Suivre réponse de Spydy .
    OU
  • on peut créer une sous-classe de UIActivity avec activityCategory comme UIActivityCategoryShare avec l'icône whatsapp. Puis lorsque l'utilisateur le sélectionne, utilisera urlschemes pour partager du texte. Pour cette utilisation JBWhatsAppActivity
    OU
  • partagez simplement L'objet NSUrl pour partager l'url. Une fois le correctif terminé, vous pouvez revenir au partage de texte brut et d'url.
20
répondu santhu 2017-05-23 12:13:52

Ont fait face au même problème après la mise à jour de whatsapp. Même si vous appuyez sur " annuler " sur whatsapp encore bloc d'achèvement montre le succès. Je l'ai résolu en utilisant " WFActivitySpecificItemProvider " et " WFActivitySpecificItemProvider " lors du partage sur whatsapp, puis dissmiss activityViewController et partager via ur. Vous pouvez tirer WFActivitySpecificItemProvider, activityViewController classes de https://github.com/wileywimberly/WFActivitySpecificItemProvider

Voici mon code

- (void)share{

NSString *defaultMessage = @"your message may contain url";

// Use a dictionary
WFActivitySpecificItemProvider *provider1 =
[[WFActivitySpecificItemProvider alloc]
 initWithPlaceholderItem:@""
 items:@{
         WFActivitySpecificItemProviderTypeDefault : defaultMessage,
         UIActivityTypePostToFacebook : defaultMessage,
         UIActivityTypeMail : defaultMessage,
         UIActivityTypeMessage : defaultMessage,
         @"com.linkedin.LinkedIn.ShareExtension":defaultMessage,
         UIActivityTypePostToTwitter : defaultMessage

         }];


// Use a block
WFActivitySpecificItemProvider *provider2 =
[[WFActivitySpecificItemProvider alloc]
 initWithPlaceholderItem:@""
 block:^(NSString *activityType){

     if ([activityType isEqualToString:@"net.whatsapp.WhatsApp.ShareExtension"]) {


         [avc dismissViewControllerAnimated:NO completion:nil];

         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{



             NSString *string = [NSString stringWithFormat:@"whatsapp://send?text=%@",defaultMessage];
             NSURL *url = [NSURL URLWithString:[string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
             [[UIApplication sharedApplication] openURL: url];


         });
     }

     return defaultMessage;
 }];


avc = [[UIActivityViewController alloc]
       initWithActivityItems:@[provider1, provider2]
       applicationActivities:nil];

[avc dismissViewControllerAnimated:YES completion:nil];
[avc setValue:sharingHeader forKey:@"subject"];

[avc setCompletionHandler:^(NSString *activityType, BOOL completed) {

    if (activityType) {


        NSLog(@"activity: %@ completed: %@",activityType,completed ? @"YES" : @"NO");


    } else {


        NSLog(@"No activity was selected. (Cancel)");
    }

}];

[self presentViewController:avc animated:YES completion:nil];
}
8
répondu Spydy 2016-04-14 12:05:40

Vous pouvez essayer de partager L'URL locale de l'élément que vous essayez de partager. Par exemple, si vous souhaitez partager un pdf, n'essayez pas de partager son NSData ou son objet de données, WhatsApp montre toujours cette erreur pour cela. Au lieu de cela, si vous partagez L'URL locale de celui-ci, WhatsApp reconnaît et partage bien.

Je dois noter que de nombreuses applications, y compris le courrier natif, Gmail, Slack, GDrive, etc. reconnaissez le pdf si vous essayez de partager l'objet de données.

Par exemple:

Après en téléchargeant un PDF, liez son URL dans une variable appelée fileURL:

var fileURL = URL(string: url)
    let destination: DownloadRequest.DownloadFileDestination = { _, _ in
        let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
        fileURL = documentsURL.appendingPathComponent("AWESOME_PDF.pdf")
        return (fileURL!, [.removePreviousFile, .createIntermediateDirectories])
    }

Ensuite, vous pouvez simplement partager le fileURL à la place:

let activityViewController = UIActivityViewController(            
      activityItems: [fileURL!],
      applicationActivities: nil
)

WhatsApp reconnaîtra le PDF.

Espérons que cela aide!

6
répondu Mert Kahraman 2018-06-20 07:16:30

WhatsApp a corrigé ce bug dans leur mise à jour datée du 23 mai 2016 (build no. 2.16.4).

Il n'a pas été signalé par des sources officielles, mais je l'ai testé dans mon code-fonctionne bien.

2
répondu Ulhas Mandrawadkar 2016-05-25 02:14:05

Avec la dernière version de whatsapp, maintenant nous ne pouvons pas partager à la fois le texte et L'URL en même temps.

J'ai essayé le code ci-dessous

NSArray *activityItems= @[someText,[NSURL URLWithString:@"http://www.google.com"]];

Avec CE code, Je ne peux partager que le lien URL, le whatsApp a filtré le texte "someText".

Mais les autres applications de partage (SMS, etc.) capables de partager à la fois le texte et l'url.

Espérons que WhatsApp résout ce problème bientôt.

0
répondu Avaan 2016-05-01 12:11:23

A rencontré ce problème avec un uiactivityitemsource personnalisé où je transmettais kUTTypeData que la plupart des fournisseurs comprennent pour la méthode dataTypeIdentifierForActivityType delegate au lieu de kUTTypeText. Les remplacements de cas simples ont résolu le problème dans mon cas. Juste une autre raison pour laquelle l'erreur ci-dessus pourrait éclater si quelqu'un le voit.

open func activityViewController(_ activityViewController: UIActivityViewController, dataTypeIdentifierForActivityType activityType: UIActivityType?) -> String {
    switch activityType {
    case UIActivityType(rawValue: "net.whatsapp.WhatsApp.ShareExtension"):
        return kUTTypeText as String
    default:
        return kUTTypeData as String
    }
}
0
répondu Mark Thormann 2018-05-10 20:59:33

Je ne suis pas sûr de votre question... Voulez-vous simplement envoyer du texte par whatsapp? Si oui, vous n'avez pas besoin d'utiliser UIActivityViewController . Utilisez simplement urlschemes .

Quelque Chose comme ça:

NSString *string = @"whatsapp://send?text=<YOUR MESSAGE>";
NSURL *url = [NSURL URLWithString:[string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL: ];

Vous pouvez également vérifier si l'utilisateur whatsapp installé

if ([[UIApplication sharedApplication] canOpenURL: url]) {
   // wahtsapp installed
} else {
   // whatsapp not installed
}

Regardez cette question: partager l'image / texte via WhatsApp dans une application iOS

-1
répondu Wagner Sales 2017-05-23 12:13:52