我想在iPhone应用程序中附带一个配置文件,并在需要时安装它。
请注意,我们正在谈论的是配置文件,而不是配置文件。
首先,这样的任务是可能的。如果将配置文件放在网页上,然后从Safari中单击它,则将安装它。如果通过电子邮件发送配置文件并单击附件,则附件也会安装。在这种情况下,“已安装”表示“已调用安装UI”-但我什至无法做到。
因此,我根据以下理论进行工作:启动配置文件安装涉及以URL导航到它。我已将个人资料添加到我的应用程序包中。
A)首先,我尝试使用file:// URL将[sharedApp openURL]放入捆绑包中。没有这样的运气-没有任何反应。
B)然后,我将一个HTML页面添加到我的包中,该页面具有指向该配置文件的链接,并将其加载到UIWebView中。单击链接没有任何作用。但是,从Safari中的Web服务器加载相同的页面可以正常工作-可以单击链接,然后安装配置文件。我提供了一个UIWebViewDelegate,对每个导航请求都回答“是”-没什么区别。
C)然后,我尝试从Safari的捆绑包中加载相同的网页(使用[sharedApp openURL]-没有任何反应。我猜想,Safari无法看到我的捆绑包中的文件。
D)将页面和配置文件上传到Web服务器上是可行的,但是在组织层面上却是一个痛苦,更不用说额外的失败原因了(如果没有3G覆盖,该怎么办?
所以我的大问题是:**如何以编程方式安装配置文件?
小问题是:什么可以使UIWebView中的链接不可单击?是否有可能加载一个文件:从// URL我在Safari浏览器捆绑?如果没有,iPhone上是否可以放置文件,而Safari可以找到它们?
在B)上编辑:问题在于我们正在链接到配置文件。我将其从.mobileconfig重命名为.xml(因为它确实是XML),更改了链接。链接在我的UIWebView中有效。重新命名-同样的东西。似乎UIWebView不愿做应用程序范围的事情-因为配置文件的安装会关闭应用程序。我试图通过UIWebViewDelegate告诉它可以,但是并没有说服。mailto的行为相同:UIWebView中的URL。
对于mailto: URL,常见的技术是将它们转换为[openURL]调用,但是对于我的情况而言,这并不起作用,请参阅方案A。
对于itms:URL,但是UIWebView可以正常工作...
EDIT2:尝试通过[openURL]向Safari提供数据URL-不起作用,请参见此处:iPhone打开数据:Safari中的网址
EDIT3:找到了很多有关Safari如何不支持file:// URL的信息。但是,UIWebView确实可以做到。另外,在模拟器上打开Safari也可以。后一点是最令人沮丧的。
EDIT4:我从未找到解决方案。取而代之的是,我整理了一个两位的Web界面,用户可以在其中订购通过电子邮件发送给他们的个人资料。