打开EverNote或任何其他扩展时,不会调用willBeginSendingToApplication
我有一个function可以在iPhone和iPad应用程序的其他应用程序中打开文档。 还设置了是否允许该操作的标志。 很less的应用程序可以被列入白名单。
当select任何应用程序打开文档
- (void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(NSString *)application
叫做。
在这种方法中,我可以检查是否允许select的应用程序。
问题是注意,Evernote我们得到两个选项1-扩展2-打开英寸上面的方法被称为2选项。 但是扩展是直接启动的。
我没有find任何其他委托方法要求这个。
希望你能想出一些东西,但是我的组织面临着类似的问题,我们合作的MDM并没有一个简单的解决scheme。 我们已经决定采用以下方法。
-
始终使用
UIDocumentInteractionController
而不是UIActivityViewController
-
每当
UIDocumentInteractionController
被打开,重新启动并将URL设置为虚拟内容 -
符合
UIDocumentInteractionControllerDelegate
并检查UIDocumentInteractionControllerDelegate
的application
参数willBeginSendingToApplication
与您的白名单 -
如果
application
是白名单的一部分,则将controller.url
的值更改为正确的内容
这种方法的缺点是只有开放式才能工作(扩展总是会得到虚拟内容),用户体验也不是很好。 但是,如果您正在构build企业应用程序,并且必须防止数据泄漏,那么这可能是最安全的方法。
您也可以查看这篇文章的私人API来隐藏第三方应用程序和扩展,主要在UIActivityViewController
:
如何从UIActivityViewController中排除Notes和提醒应用程序?
不幸的是,这个工作的方式似乎已经改变了iOS 8和9之间,并再次与10,所以它不是最佳的。 我build议传递虚拟内容。