Сообщение об ошибке Airdrop: «Невозможно получить все эти элементы одновременно»

#ios #uiactivityviewcontroller #airdrop

#iOS #uiactivityviewcontroller #airdrop

Вопрос:

Я использую следующий код для совместного использования изображения, некоторого текста и URL-адреса с помощью UIActivityViewController. Все работает нормально, за исключением того, что когда use выбирает AirDrop, он получает сообщение «невозможно получить все эти элементы одновременно». Если я только делюсь изображением, то AirDrop работает. Мне нужен текст и URL-адрес для методов обмена электронной почтой, Facebook, Twitter.

Есть ли способ сохранить текст и URL-адрес и заставить AirDrop делиться только изображением, в то время как методы обмена Facebook, электронной почтой, Twitter продолжают использовать текст и URL-адрес вместе с изображением, которым я пытаюсь поделиться?

 NSString *text = [NSString stringWithFormat:@"I made this image using %@ iOS app. Here is the link to download it:", [CloudHelper appName]];
NSURL *url = [NSURL URLWithString:APP_URL];    

UIActivityViewController *activityController =
[[UIActivityViewController alloc]
 initWithActivityItems:@[text, url, myImage]
 applicationActivities:nil];

[self presentViewController:activityController animated:YES completion:nil];
 

Ответ №1:

Вы хотели бы создать и предоставить общий доступ к трем объектам, соответствующим UIActivityItemSource, где один возвращает строку, один — изображение и один — URL. Затем, когда вызывается обратный вызов делегата, запрашивающий элемент, вы проверяете, какой тип активности был выбран (Facebook, Twitter, airdrop и т. Д.), И возвращаете значение nil, если этот элемент не применяется.

Таким образом, в случае airdrop только источник элемента для изображения вернет значение, отличное от нуля. Вы можете взглянуть на пример кода airdrop, чтобы получить несколько примеров реализации UIActivityItemSource