Вложения электронной почты iOS 7 UIActivityViewController

Я просмотрел кучу публикаций здесь, многочисленные онлайн-уроки / образцы кода, и я в тупике. В моем приложении у меня нет проблем с отображением UIActivityController, изначально предоставленного iOS7, с параметрами общего доступа, соответствующими моему приложению (AirDrop и почта).

Конкретная проблема, с которой я сталкиваюсь, - это прикрепление сохраненного документа к сообщению электронной почты, когда пользователь выбирает вариант отправки по почте. В теле сообщения устанавливается текст, но вложение - MIA. Соответствующий код:

// Создание файла XML для совместного использования для отображаемой в данный момент записи ... NSURL * url = [self createShareFile];

UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:@[@"Data shared from my app.", url] applicationActivities:nil];

// Filter out the sharing methods we're not interested in....
controller.excludedActivityTypes = @[UIActivityTypePostToTwitter, UIActivityTypePostToFacebook,
                                UIActivityTypePostToWeibo,
                                UIActivityTypeMessage,
                                UIActivityTypePrint, UIActivityTypeCopyToPasteboard,
                                UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll,
                                UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr,
                                UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo];

// Now display the sharing view controller.
[self presentViewController:controller animated:YES completion:nil];

Что мне не хватает? Мой файл создается правильно, содержимое правильное, а объект NSURL содержит правильный путь к файлу.

Спасибо!


person drumz    schedule 18.02.2014    source источник


Ответы (2)


Задача решена.....

Код, опубликованный в моем исходном посте, точен на 100%. Проблема закончилась тем, что я создавал NSURL, возвращаемый в моем методе createShareFile:

Неправильно (оригинальный способ):

return [NSURL URLWithString:[docFile stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

Правильный способ:

return [NSURL fileURLWithPath:docFile];

Как только я исправил это, он начал работать, даже с моим пользовательским типом файла.

person drumz    schedule 19.02.2014
comment
Ты спас мне день! Большое вам спасибо за то, что поделились этим! - person Angel Naydenov; 19.02.2015

У меня была аналогичная проблема, когда почтовое приложение было единственным, в которое я не мог добавить PDF-файл. Вот мой код в Swift, а также обработка всплывающих окон iPad.

var filesToShare = [Any]()
filesToShare.append(self.myUrl)

let activityViewController = UIActivityViewController(activityItems: filesToShare as [Any], applicationActivities: nil)
present(activityViewController, animated: true)

// for iPad -> where to present on screen
if let popOver = activityViewController.popoverPresentationController {
    //action button being my top left icon
    popOver.barButtonItem = self.actionButton
}

Моя проблема заключалась в том, что URL-адрес обрабатывался по-другому

person C. Skjerdal    schedule 19.12.2019