在iPhone上安装配置文件 - 以编程方式
我想用我的iPhone应用程序发送配置文件,并在需要时安装它。
请注意,我们谈论的是配置文件,而不是配置文件。
首先,这样的任务是可能的。如果您在网页上放置配置文件并从Safari中单击它,它将被安装。如果您通过电子邮件发送配置文件并单击附件,它也将安装。在这种情况下,“已安装”意味着“调用安装UI” - 但我甚至无法做到这一点。
所以我的理论是,启动配置文件安装涉及以URL的形式导航到它。我将个人资料添加到了我的应用包中。
A)首先,我尝试将[sharedApp openURL]与file:// URL一起放入我的包中。没有这样的运气 - 什么都没发生
B)然后我在我的包中添加了一个HTML页面,其中包含指向配置文件的链接,并将其加载到UIWebView中。点击链接什么都不做。但是,从Safari中的Web服务器加载相同的页面可以正常工作 - 链接是可点击的,配置文件会安装。我提供了一个UIWebViewDelegate,对每个导航请求回答“是” - 没有区别。
C)然后我尝试从我的包中加载相同的网页在Safari中(使用[sharedApp openURL] - 没有任何反应。我猜,Safari无法看到我的应用包内的文件。
D)在Web服务器上上传页面和配置文件是可行的,但在组织层面上却很痛苦,更不用说额外的故障源(如果没有3G覆盖等等)。
所以我的重要问题是:**如何以编程方式安装配置文件?
小问题是:什么可以使UIWebView中的链接不可点击?是否可以在Safari中从我的包中加载file:// URL ?如果没有,iPhone上是否有本地位置可以放置文件,Safari可以找到它们?
编辑B):问题是某种程度上我们正在链接到个人资料。我将它从.mobileconfig重命名为.xml(因为它真的是XML),改变了链接。这个链接在我的UIWebView中工作。重新命名 - 同样的东西。看起来UIWebView似乎不愿意做应用程序范围的事情 - 因为安装配置文件会关闭应用程序。我尝试通过UIWebViewDelegate告诉它没关系 - 但这并没有让人信服。mailto的相同行为:UIWebView中的URL。
对于mailto: URL,常见的技巧是将它们转换为[openURL]调用,但这对我的情况并不适用,请参阅方案A.
对于itms:URL,然而,UIWebView按预期工作...
EDIT2:尝试通过[openURL]向Safari提供数据URL - 不起作用
EDIT3:发现了很多关于Safari如何不支持file:// URL的信息。然而,UIWebView非常有用。此外,模拟器上的Safari打开它们就好了。后一点是最令人沮丧的。
编辑4:我从未找到解决方案。相反,我整理了一个两位的Web界面,用户可以通过电子邮件订购配置文件。
holdtom