我们为我们的一位客户开发了一个用于分发的 OTA 应用程序商店。
为了能够测试应用程序是否已安装,在我编写的每个应用程序中,我添加了两个自定义 URL 方案:一个只是应用程序 ID,一个包含应用程序 ID 和版本(均带有 .
替换为 -
);例如,com-mycompany-app
和 com-mycompany-app-1-2-0
用于 com.mycompany.app,版本 1.2.0。
然后,在我们的“应用程序商店”中,我只是使用 [[UIApplication sharedApplication] canOpenUrl:]
来确定应用程序是否已安装或最新版本,如果是,则替换“安装”带有“打开”按钮的按钮。
通过 XCode 安装应用程序时,效果很好。但是,当我通过我的“应用商店”安装同一个应用 OTA 时,canOpenUrl:
调用总是返回 NO。为了查看它是否是缓存问题,我尝试在 OTA 安装完成后重新启动“应用商店”应用,但我得到了相同的结果。
这是我的 list plist 文件的问题吗?在属于目标的 Info.plist 中,自定义 URL Scheme 的东西显然在那里,但它不在 list 中。但是,我想它只使用 list 来启动初始安装......不应该在实际安装期间使用 Info.plist 来注册这些东西吗?还有什么我想念的吗?
谢谢!
编辑:我正在使用自定义构建脚本实际创建用于 OTA 分发的 .ipa
和 .plist
文件。我尝试使用 iPhone 配置实用程序
直接安装 IPA,我的应用商店能够将这些 URL 识别为可打开。我唯一能想到的可能是我用来下载和安装的 plist 需要对这些自定义 URL 方案有某种引用,或者它实际上是 Apple 的 OTA 框架中的一个合法错误。
最佳答案
我让这个工作正常,以防有人看到这个或偶然发现类似的问题。
唯一 我改变的是在我的 URL 方案中使用句点,而不是连字符,而且没有文档说明旧方法行不通或不应该。所以 com-company-app://
变成了 com.company.app://
(与 bundle ID 相同),同样还有版本附加的。
我不知道我的旧 URL 方案是否违反了官方 URL 规范,或者您是否应该使用反向 DNS,但现在一切正常。
关于iphone - iOS OTA 安装未注册自定义 URL 方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14508936/