【发布时间】:2011-01-21 05:39:46
【问题描述】:
我想为我的 iPhone 应用程序提供一个配置文件,并在需要时安装它。
请注意,我们说的是配置文件,而不是配置文件。
首先,这样的任务是可能的。如果您在网页上放置配置文件并从 Safari 中单击它,它将被安装。如果您通过电子邮件发送配置文件并单击附件,它也会安装。在这种情况下,“已安装”意味着“调用了安装 UI”——但我什至无法做到这一点。
所以我的工作理论是,启动配置文件安装涉及将其作为 URL 导航。我将配置文件添加到我的应用程序包中。
A) 首先,我尝试将 [sharedApp openURL] 与 file:// URL 放入我的包中。没有这样的运气 - 什么也没有发生。
B) 然后,我将一个 HTML 页面添加到我的包中,其中包含指向配置文件的链接,并将其加载到 UIWebView 中。点击链接什么都不做。然而,在 Safari 中从 Web 服务器加载相同的页面工作正常 - 链接可点击,配置文件安装。我提供了一个 UIWebViewDelegate,对每个导航请求都回答“是”——没有区别。
C) 然后我尝试在 Safari 中从我的包中加载相同的网页(使用 [sharedApp openURL] - 没有任何反应。我猜,Safari 看不到我的应用包中的文件。 p>
D) 在 Web 服务器上上传页面和配置文件是可行的,但在组织层面上是一个难题,更不用说额外的故障来源(如果没有 3G 覆盖怎么办?等等。 )。
所以我最大的问题是:**如何以编程方式安装配置文件?
还有一些小问题:什么可以使 UIWebView 中的链接不可点击?是否可以在 Safari 中从 my 包加载 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 - 不起作用,请参见此处:iPhone Open DATA: Url In Safari
EDIT3: 发现很多关于 Safari 不支持 file:// URL 的信息。然而,UIWebView 非常有用。此外,模拟器上的 Safari 可以很好地打开它们。后者是最令人沮丧的。
EDIT4:我从未找到解决方案。相反,我将一个两位 Web 界面放在一起,用户可以在其中订购通过电子邮件发送给他们的个人资料。
【问题讨论】:
-
这里可能存在安全问题。 Apple 可能不希望您能够从应用程序中更改手机运营商配置文件,这可能会启用网络共享、禁用语音邮件等。
-
无论如何都需要大量明确的用户协议。此外,我可以直接将用户从我的应用程序引导到相关网页(选项 D),因此他们的控件并不是无懈可击的。
-
Safari 和 Mail 比您的应用程序拥有更多权限。
-
HI Seva,我也想做同样的事情,你终于找到解决方案了吗??
-
@Iphone_bharat:不,不是真的。我做了一个解决方法。
标签: iphone cocoa-touch ios-simulator configuration-files