Подтвердить что ты не робот

"Этот элемент нельзя использовать. Выберите другой элемент". Сообщение об отказе в доступе к сообществу WhatsApp iOS

Эта ошибка исправлена ​​командой WhatsApp 23 мая 2016 года (сборка 2.16.4).

Невозможно передать объект NSString с помощью UIActivityViewController в WhatsApp.

Я попытался использовать код ниже. Но как только контакт выбран из списка, он показывает предупреждение, отображающее "This item cannot be shared. Please select a different item."

КОД

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

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

Я столкнулся с этой проблемой после обновления WhatsApp до версии 2.16.2

4b9b3361

Ответ 1

Получил ответ от команды WhatsApp

- Поддержка WhatsApp -

Привет,

Извините за задержку! Недавно мы получили много писем, и мы делаем лучше всего ответить на них. Благодарим за терпение.

Спасибо, что сообщили нам о проблеме; он будет зафиксирован в будущая версия WhatsApp. К сожалению, мы не можем комментировать любые будущие сроки, извините. Благодарю вас за ваше терпение и поддержка WhatsApp.

Приветствия, Ганс

Итак, они признают ошибку и исправят ее в следующей версии.

Возможные обходные пути = >

  • До тех пор можно использовать UrlSchemes для совместного использования открытого текста + url. следить Ответ Spydy.
    ИЛИ
  • Можно создать подкласс UIActivity с activityCategory как UIActivityCategoryShare с значком whatsapp. затем когда пользователь выбирает его, будет использовать urlschemes для совместного использования текста. Для этого используйте JBWhatsAppActivity
    ИЛИ
  • Просто передайте объект NSUrl для совместного использования URL. После исправления вы можете вернуться к совместному использованию обычного текста и URL-адреса.

Ответ 2

столкнулись с такой же проблемой после обновления whatsapp. Даже вы нажимаете " отменить" на том, что блок завершения остается еще успешным.  я разрешил его, используя " WFActivitySpecificItemProvider" и " WFActivitySpecificItemProvider" при совместном использовании whatsapp, а затем dismiss activityViewController и совместного использования через ur. Вы можете выделить классы WFActivitySpecificItemProvider, activityViewController из https://github.com/wileywimberly/WFActivitySpecificItemProvider

вот мой код

- (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];
}

Ответ 3

WhatsApp исправил эту ошибку в своем обновлении от 23 мая 2016 года (сборка 2.16.4).

Об этом не сообщили официальные источники, но я проверил его в своем коде - отлично работает.

Ответ 4

С последней версией whatsapp, теперь мы не можем одновременно передавать текст и URL.

Я попробовал приведенный ниже код

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

С помощью этого кода я могу поделиться только ссылкой URL, whatsApp отфильтровал текст "someText".

но другие общие приложения (SMS и т.д.) могут совместно использовать как текст, так и URL.

надеюсь, что WhatsApp скоро устранит эту проблему.

Ответ 5

Возможно, вы захотите поделиться локальным URL-адресом объекта, который вы пытаетесь предоставить. Например, если вы хотите поделиться PDF файлом, не пытайтесь поделиться им NSData или объектом Data, WhatsApp все еще показывает эту ошибку для этого. Вместо этого, если вы делитесь локальным URL-адресом, WhatsApp распознает его и делится им хорошо.

Я должен отметить, что многие приложения, включая собственные Mail, Gmail, Slack, GDrive и т.д., распознают pdf, если вы пытаетесь использовать объект Data.

Например:

После загрузки PDF свяжите его URL с переменной 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]) }

Затем вы можете просто поделиться файломURL:

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

WhatsApp распознает PDF.

Надеюсь, это поможет!

Ответ 6

Я не уверен в твоем вопросе... Хочешь просто отправить текст через whatsapp? Если да, вам не нужно использовать UIActivityViewController. Просто используйте urlschemes.

Что-то вроде этого:

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

Вы также можете проверить, установлен ли пользователь whatsapp

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

Посмотрите на этот вопрос: Поделиться изображением/текстом через WhatsApp в приложении iOS