UIDocumentInteractionController — MailCompose не отклоняется в iOS8

У меня очень странная (и серьезная) проблема.

Мое приложение использует 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 не использует ту же версию на своей стороне, что и версия, в которой изначально было создано приложение?


person Matthys Du Toit    schedule 24.10.2014    source источник


Ответы (1)


Я думаю, что это ошибка в iOS 8, и если она все еще не работает, я не думаю, что Apple ее исправит. Я бы обновился до Xcode 6 и посмотрел, исправит ли это для вас. (Это помогло нам, как вы узнали).

person Rich    schedule 24.10.2014
comment
Спасибо. Эта версия моего приложения находилась на рассмотрении в течение 15 дней (почти 16), так что теперь мои пользователи не смогут работать с электронной почтой еще 15 дней? Вздох. - person Matthys Du Toit; 24.10.2014