У меня очень странная (и серьезная) проблема.
Мое приложение использует UIDocumentInteractionController для совместного использования PDF-документа. Когда пользователь выбирает опцию «Почта» во всплывающем окне контроллера, открывается окно MailCompose. Но ни кнопка «Отправить», ни «Отмена» в этом окне не приводят к закрытию окна MailCompose, что означает, что пользователь застревает и должен закрыть приложение. Хотя почта уходит.
Вот в чем загвоздка: это происходит только в iOS8 (пока выпущены обе версии) и только в приложениях, установленных через AppStore. Та же ТОЧНАЯ версия приложения при работе на моем устройстве через отладку по USB работает нормально.
Вот код:
-(void)sharePDF:(id)sender
{
@try
{
NSURL *fileURL = [NSURL fileURLWithPath:currentFileObject.LocalPath];
if(fileURL)
{
//UIDocumentInteractionController
NSString *newPath;
@try
{
//Create a copy of the file for sharing with a friendly name
if (currentFileObject.isSpecialReport)
{
newPath = [svc saveReport:[NSData dataWithContentsOfURL:fileURL] ToFile:[NSString stringWithFormat:@"%@.pdf", currentFileObject.ReportName]];
}
else
{
newPath = [svc saveReport:[NSData dataWithContentsOfURL:fileURL] ToFile:[NSString stringWithFormat:@"%@.pdf", currentFileObject.PatientFullName]];
}
}
@catch (NSException *exception) {
return;
}
NSURL *newURL = [NSURL fileURLWithPath:newPath];
self.docController = [UIDocumentInteractionController interactionControllerWithURL:newURL];
self.docController.delegate = self;
if (currentFileObject.isSpecialReport)
{
self.docController.name = [NSString stringWithFormat:@"Pathology - %@", currentFileObject.ReportName];
}
else
{
self.docController.name = [NSString stringWithFormat:@"Pathology - %@", currentFileObject.PatientFullName];
}
[self.docController presentOptionsMenuFromBarButtonItem:btnShare animated:YES];
}
}
@catch (NSException *exception) {
return;
}
}
Я не реализую какие-либо методы делегата, поскольку ни один из них не требуется, я также не использую функции предварительного просмотра.
Что меня больше всего озадачивает, так это то, что приложение из AppStore ведет себя иначе, чем мое локальное, хотя код идентичен. Мой следующий шаг — использовать новые инструменты бета-разработчика (Test Flight) для повторной публикации приложения в надежде, что я смогу воспроизвести проблему.
РЕДАКТИРОВАТЬ: я нашел аналогичный вопрос на SO здесь: 1">Не удается закрыть лист электронной почты, вызванный из UIDocumentInteractionController в iOS 8 После прочтения этого поста я думаю, что стоит упомянуть, что я отправил приложение в AppStore через XCode 5 (последняя версия перед XCode 6). Может ли это быть фактором здесь? Разве Apple не использует ту же версию на своей стороне, что и версия, в которой изначально было создано приложение?