35 votes

"Cet article ne peut pas être partagé. Veuillez sélectionner un autre élément." Message d'échec de l'extension de partage WhatsApp iOS

Ce bogue est corrigé par l'équipe WhatsApp le 23 mai 2016 (build n° 2.16.4).

Impossible de partager un objet NSString à l'aide de UIActivityViewController à WhatsApp.

J'ai essayé de partager en utilisant le code ci-dessous. Mais une fois que le contact est sélectionné dans la liste, une alerte apparaît affichant " 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 avoir mis à jour WhatsApp à la version 2.16.2.

21voto

santhu Points 4142

Reçu une réponse de l'équipe WhatsApp

- Assistance WhatsApp -

Salut,

Désolé pour le retard ! Nous avons reçu de nombreux courriels récemment, et nous faisons de notre mieux pour répondre à tous. nous faisons de notre mieux pour répondre à tous. Nous vous remercions de votre patience.

Merci de nous avoir informés de ce problème ; il sera corrigé dans une prochaine version de WhatsApp. Malheureusement, nous ne pouvons faire aucun commentaire sur sur les délais futurs, désolé. Nous vous remercions pour votre patience et votre soutien à WhatsApp.

Santé, Hans

Ils reconnaissent donc ce bogue et le corrigeront dans la prochaine version.

Contournement possible =>

  • En attendant, on peut utiliser UrlSchemes pour partager texte en clair+url. Suivez La 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, il utilisera les urlschemes pour partager le texte. Pour cela, il faut utiliser JBWhatsAppActivity
    OU
  • Il suffit de partager l'objet NSUrl pour partager l'url. Une fois la correction effectuée, vous pourrez revenir au partage de texte brut et d'url.

9voto

Mert Kahraman Points 86

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 objet NSData ou Data, WhatsApp affiche toujours cette erreur pour cela. En revanche, si vous partagez l'URL locale de l'objet, WhatsApp le reconnaît et le partage bien.

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

Par exemple :

Après avoir téléchargé 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])
    }

Vous pouvez alors simplement partager l'URL du fichier à la place :

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

WhatsApp reconnaîtra le PDF.

J'espère que cela vous aidera !

8voto

Spydy Points 31

J'ai rencontré le même problème après la mise à jour de Whatsapp. Même si vous appuyez sur " annuler "sur whatsapp, le bloc d'achèvement montre toujours le succès. J'ai résolu le problème en utilisant " WFActivitySpecificItemProvider " et " WFActivitySpecificItemProvider "lors du partage sur whatsapp, dissmettez ActivityViewController et partagez via ur. Vous pouvez tirer WFActivitySpecificItemProvider , ActivityViewController des 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];
}

2voto

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

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

0voto

Avaan Points 4619

Avec la dernière version de whatsapp, nous ne pouvons plus partager à la fois du texte et une URL en même temps.

J'ai essayé le code suivant

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

Avec ce code, je suis capable de partager uniquement le lien URL, le whatsApp a filtré le texte "someText".

mais les autres applications de partage (SMS, etc.) permettent de partager à la fois du texte et une URL.

J'espère que WhatsApp corrigera bientôt ce problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X