打开EverNote或任何其他扩展时,不会调用willBeginSendingToApplication

时间:2015-12-21 11:50:45

标签: ios ipad uidocumentinteraction

我有一项功能可以在iPhone和iPad应用中打开其他应用中的文档。 还设置标志是否允许此操作。很少有应用程序可以列入白名单。

选择任何应用以打开文档

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

被召唤。

在这种方法中,我可以检查是否允许选择的应用程序。

问题是注意,Evernote我们有两个选项1-它的扩展名2-开放。 上面的方法被称为2选项。 但扩展程序是直接启动的。

我没有找到任何其他委托方法。

1 个答案:

答案 0 :(得分:2)

希望你能找到一些东西,但我的组织面临着类似的问题,而我们合作的MDM并不是一个简单的解决方案。我们决定采用以下方法。

  • 始终使用UIDocumentInteractionController代替UIActivityViewController

  • 每当打开UIDocumentInteractionController时重新启动并将网址设置为虚拟内容

  • 符合UIDocumentInteractionControllerDelegate并查看application中针对白名单的willBeginSendingToApplication参数

  • 如果application是白名单的一部分,则将controller.url的值更改为正确的内容

这种方法的缺点是只有open-in才能工作(扩展程序总是会得到虚拟内容),用户体验也不是很好。但是,如果您正在构建企业应用程序并且必须防止数据泄漏,那么这可能是最安全的方式。

您还可以查看此文章,了解私有API以隐藏第三方应用和扩展程序,主要是在UIActivityViewController中:

How to exclude Notes and Reminders apps from the UIActivityViewController?

不幸的是,它的工作方式似乎在iOS 8和9之间发生了变化,而且在10之间也发生了变化,所以它并不是最佳的。我建议传递虚拟内容。