3

我们为我们的一位客户开发了一个 OTA 应用商店进行分发。

为了测试是否安装了应用程序,在我编写的每个应用程序中,我添加了两个自定义 URL 方案:一个只是应用程序 ID,另一个是应用程序 ID 和版本(都.替换为-);例如com-mycompany-appcom-mycompany-app-1-2-0对于 com.mycompany.app,版本 1.2.0。

然后,在我们的“应用商店”中,我只是[[UIApplication sharedApplication] canOpenUrl:]用来确定是否安装了应用程序或最新版本,如果是,则将“安装”按钮替换为“打开”按钮。

通过 XCode 安装应用程序时,效果很好。但是,当我通过我的“应用商店”安装相同的应用 OTA 时,canOpenUrl:调用总是返回 NO。要查看它是否是缓存问题,我尝试在 OTA 安装完成后重新启动“应用商店”应用,但我得到了相同的结果。

这是我的清单 plist 文件的问题吗?在属于目标的 Info.plist 中,显然存在自定义 URL Scheme 的东西,但它不在清单中。但是,我想它只使用清单来启动初始安装......在实际安装过程中不应该使用 Info.plist 来注册这些东西吗?还有什么我想念的吗?

谢谢!


编辑:我正在使用自定义构建脚本来实际创建用于 OTA 分发的文件.ipa.plist我尝试使用iPhone Configuration Utility直接安装 IPA,并且我的应用商店能够将这些 URL 识别为可打开的。我能想到的唯一可能的事情是我用来下载和安装的 plist 需要对这些自定义 URL 方案有某种引用,或者它实际上是 Apple OTA 框架中的一个合法错误。

4

1 回答 1

3

我得到了这个工作,以防有人在看这个或偶然发现类似的问题。

唯一改变的——并且没有文档说旧方法不会或不应该工作——是在我的 URL 方案中使用句点,而不是连字符。所以com-company-app://变成com.company.app://了(与捆绑 ID 相同),同样带有附加的版本。

我不知道我的旧 URL 方案是否违反了官方 URL 规范,或者您是否应该使用反向 DNS,但现在一切正常。

于 2013-01-25T17:51:41.133 回答