对于我们的一位客户,我们开发了一个OTA应用商店以供分发。
要启用测试是否安装了应用,在我编写的每个应用中,我添加了两个自定义网址方案:一个只是应用ID,另一个是应用ID和版本(均为{{1} }替换为.
);例如,对于com.mycompany.app,版本1.2.0,-
和com-mycompany-app
。
然后,在我们的“应用程序商店”中,我只使用com-mycompany-app-1-2-0
来确定是安装了应用程序还是最新版本,如果是,请使用“打开”按钮替换“安装”按钮。
通过XCode安装应用程序时,效果很好。但是,当我通过我的“app store”安装相同的应用程序OTA时,[[UIApplication sharedApplication] canOpenUrl:]
调用始终返回NO。为了查看它是否是缓存,我尝试在OTA安装完成后重新启动“app store”应用程序,但我得到了相同的结果。
这是我的清单plist文件的问题吗?在属于目标的Info.plist中,自定义URL Scheme显然存在,但它不在清单中。但是,我认为它只使用清单启动初始安装...不应该在实际安装过程中使用Info.plist来注册这些东西吗?还有其他我想念的东西吗?
谢谢!
编辑:我正在使用自定义构建脚本来实际创建用于OTA分发的canOpenUrl:
和.ipa
文件。我尝试使用.plist
直接安装IPA,我的应用商店能够识别这些网址是否可以打开。我能想到的唯一可能的事情就是我用来下载的plist&安装需要对这些自定义URL方案有某种引用,或者它实际上是Apple的OTA框架中的合法错误。
答案 0 :(得分:3)
我得到了这个工作,万一有人在看这个或偶然发现类似的问题。
我改变了唯一的东西 - 并且没有文档说旧方法不会或不应该工作 - 是在我的URL方案中使用句点而不是连字符。因此,com-company-app://
变为com.company.app://
(与捆绑ID相同),同样附加了版本。
我不知道我的旧网址方案是否违反官方网址规范,或者您是否应该使用反向DNS,但现在一切正常。