2015-12-21 100 views
0

我有一個功能可以在iPhone和iPad應用程序的其他應用程序中打開文檔。 還設置是否允許此操作的標誌。很少有應用程序可以被列入白名單。打開EverNote或任何其他擴展時不會調用willBeginSendingToApplication

當選擇任何應用程序來打開文檔

- (void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(NSString *)application 

被調用。

在這種方法中,我可以檢查是否允許選擇的應用程序。

問題是注意,Evernote我們得到兩個選項1-擴展2-打開。 上面的方法被稱爲2選項。 但直接啓動擴展。

我沒有找到任何其他委託方法。

+0

在MobileIron支持中遇到同樣的問題。 https://community.mobileiron.com/docs/DOC-2001 – Durgaprasad

+0

感謝您使用MobileIron文檔。我們在SecurePIM上面對完全相同的問題。我很感興趣,如果蘋果將爲此提供一些修復。 – txulu

回答

2

希望你找到了一些東西,但我的組織面臨類似的問題,我們合作的MDMs沒有簡單的解決方案。我們已經決定採用以下方法。

  • 始終使用的UIActivityViewControllerUIDocumentInteractionController代替

  • 每當UIDocumentInteractionController打開重新發起並設置URL到虛擬內容

  • 順應UIDocumentInteractionControllerDelegate,並檢查application參數willBeginSendingToApplication針對您的白名單

  • 如果application是白名單則controller.url值更改爲正確的內容

這種方法的缺點是,只有開放式的就可以了(擴展總是會得到假的內容)和用戶體驗不是很大。但是,如果您正在構建企業應用程序並且必須防止數據泄露,那麼這可能是最安全的方法。

您還可以看看這篇文章私有API來隱藏第三方應用和擴展,主要是在UIActivityViewController

How to exclude Notes and Reminders apps from the UIActivityViewController?

不幸的是這種工作方式似乎iOS的8和9之間已經改變,再次用10,所以它不是最佳的。我建議傳遞虛擬內容。

+0

謝謝。這是一個很好的工作。 – Durgaprasad