2013-05-14 4 views
3

У меня есть UIDocumentInteractionController экземпляра (что ДЕЛАЕТ имеет сильную ссылку в моем классе, я в курсе проблем с памятью о ней), и я хочу, чтобы отправить файл фотографий в Instagram.UIDocumentInteractionController не открывает приложение (didEndSendingToApplication: никогда не называли)

Я сохранил файл, используя расширение ig (также попытался igo), и я представляю контроллер. Instagram отображается в списке. Я нажимаю Instagram, и ничего не происходит.

NSURL *imageFile = [NSURL fileURLWithPath:path]; 
interactionController = [UIDocumentInteractionController interactionControllerWithURL:imageFile]; 
interactionController.UTI = @"com.instagram.photo"; 
interactionController.annotation = [NSDictionary dictionaryWithObject:@"my caption" forKey:@"InstagramCaption"]; 
interactionController.delegate = self; 
[interactionController presentOpenInMenuFromRect:self.view.frame inView:self.view animated:YES]; 

Для дальнейшего изучения, я установил свой класс вызова в качестве делегата и реализована willBeginSendingToApplication: и didEndSendingToApplication: методы. Интересно, что я понял, что willBeginSendingToApplication: действительно называется, но didEndSendingToApplication: нет. Я попытался изменить свои расширения файлов, изменив UTI на com.instagram.exclusivegram, проверяя правильность URL-адреса файла и т. Д., Но ни один из них не работает. Нет ошибки, ничего в консоли или что-то еще. Контроллер взаимодействия закрывается, мое приложение продолжает работать, поскольку оно работает раньше, просто ничего не происходит. Я читал, что могут быть некоторые проблемы с iOS 6, но мое приложение является iOS 6, поэтому я не могу его протестировать на iOS < 6. Единственное, что близко к моей проблеме, которую я нашел, это UIDocumentInteractionController, No File Extension but UTI, но он слишком много погружается в бит низкого уровня, и у меня есть код, отличный от ARC.

В чем может быть причина проблемы?

+0

Пробовал ли вы тестирование на физическом устройстве? Симулятор не работал для меня, но работает тестирование на физическом устройстве. –

ответ

1

После долгого времени я обнаружил, что файл не был сохранен правильно и не существовал. iOS не выбрасывает какую-либо ошибку, не получается безмолвно. Я скорректировал код создания файла, и когда файл был там, появился контроллер. Возможно, Apple должна добавить механизм утверждения/исключения для обработки несуществующих файлов в контроллере взаимодействия документов.

4

Это может произойти, если файл не существует, но также если вы не правильно создали URL-адрес файла. Это некоторое время мучило меня.

Убедитесь, что вы построить ваш URL файла, как это:

NSURL *pagesURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"MyGreatPDF.pdf" ofType:nil]]; 

и не нравится:

NSURL *pagesURL = [NSURL fileURLWithPath:@"MyGreatPDF.pdf"]; 

Последние по-прежнему формирует правильный URL, но получает «частный» префикс, т.е. file:///private/var/mobile/Applications/00000000-0000-0000-0000-000000000000/MyGreatApp.app/MyGreatPDF.pdf, а не file:///var/mobile/Applications/00000000-0000-0000-0000-000000000000/MyGreatApp.app/MyGreatPDF.pdf

+0

Мои методы-делегаты не звонят, когда я нажимаю почту из контроллера взаимодействия с документом, я также попробую ответить – Verma

0

Это может быть вызвано расширением имени файла.

Если целевое приложение объявить его поддерживает только файл с PNG расширение в Info.plist -> вывозимых Тип ИМП -> Эквивалентных типы -> public.filename-расширении, и вы отправляете файл с JPG расширение, целевое приложение также не откроется.