2015-10-20 4 views
1

Я создаю PDF-файл в приложении ios и экспортирую его через UIDocumentInteractionController. Поскольку это медицинское приложение, адвокат разрешит мне экспортировать файл в iBooks. Я не нахожу каких-либо средств для ограничения экспортных опций, но хотел бы подтвердить, что для этого не существует других способов.Можно ли ограничить параметры экспорта в UIDocumentInteractionController?

+0

Если вы хотите экспортировать только в одно конкретное приложение, зачем использовать UIDocumentInteractionController? – rmaddy

+1

Есть ли альтернатива? Я, хотя я хотел использовать UIDocumentInteractionController. – nwales

ответ

2

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

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

- (void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(NSString *)application 
{ 
    // Only allow iBooks to open. 
    // I don't actually know the application string for iBooks, so I made this one up. 
    if (![application isEqualToString:@"com.apple.iBooks"]) { 
     // Deleting the document will prevent apps from opening the document and will not crash the app. 
     [[NSFileManager defaultManager] removeItemAtURL:controller.URL error:nil]; 

     // Show an alert saying that the app is not allowed to open the PDF 
     [controller dismissMenuAnimated:YES]; 
     UIAlertController *alertController = // make a UIAlertController with some message 
     [self presentViewController:alertController animated:YES completion:nil]; 
    } 
} 

Повторяю, это очень хакерский и, возможно, не самый лучший способ. Кроме того, это только блокирует приложения, открывающие новое приложение при совместном использовании. Если вы выберете опцию Mail для совместного использования, тогда откроется модальный MFMailComposeViewController, и этот метод не будет вызываться. Могут быть и другие приложения, которые ведут себя так.

Делай с этим, что пожелаешь. Если вы найдете лучшее решение, пожалуйста, уточните нас!

2

Используйте UIActivityViewController и источник UIActivityItem. Вы можете устранить все системные службы, кроме iBooks, но вы не можете запретить пользователю добавлять такие действия, как расширения общего доступа из других приложений. Таким образом, содержание представления активности не полностью зависит от вас. Но UIActivityItemSource сообщается идентификатору процесса запроса, поэтому вы можете предоставить свой PDF для iBooks и дать nil всем остальным.

+0

Мне нравится видеть код для этого типа или даже ссылку на пример. Прежде чем я увидел ваш ответ, я просто собирался отказаться от этого. – Suragch

Смежные вопросы