我们有一些内部应用程序,在iOS 9之前,应用程序将打开类似于" itms-services://"的链接。在版本比较之后,将下载并安装新版本的应用程序。
但是在我们在iOS 9上测试后,我们发现应用程序无法打开链接" itms-services://"链接,得到错误像" LaunchServices:错误:没有注册处理程序的URL方案itms-services"
我们用于更新应用的代码:
let downloadUrl = NSURL(string: url)
UIApplication.sharedApplication().openURL(downloadUrl!)
我们测试过put" itms-services"," itms-services://"和完整的URL到" LSApplicationQueriesSchemes"在plist文件中。但仍然没有用。
答案 0 :(得分:1)
我遇到了同样的问题。我用app首先打开带有safari的html url的方法来解决这个问题,
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http:// xx.xx.xx.xx/xx.html"]];
html网址重定向到网址--- itms-services://?action = download-manifest& url = https://xx.xx.xx.xx/xx/xx.plist地址。虽然这种方法可以更新我的应用程序,但更新过程需要先打开Safari,然后提醒打开App Store,如果选择打开按钮,它会提示是否安装你的应用程序,最后你确认安装按钮。该应用程序将自动安装。
我的html内容如下:
<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=utf-8" />
<script type="text/javascript">
function load()
{
window.location ="itms-services://?action=download-manifest&url=https://xxx/xx/xx.plist";
}
</script>
</head>
<body onload = "load()">
答案 1 :(得分:0)
在iOS9中(在我的情况下,我的网址方案是:hash:)
然后在appdelegate中注册事件处理程序:
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
// do what you want to do
print(url);
// return true if url matches scheme
return true;
}
答案 2 :(得分:0)
不知道它是你的情况,但你需要一个https网址来下载应用程序。我们的网站上没有SSL,因此我们所做的是将.plist上传到Dropbox并使用itms-services链接中的共享链接。 .plist重定向到您的服务器,我们没有问题
答案 3 :(得分:0)
在iOS 9中,您必须将您的应用程序想要在LSApplicationQueriesSchemes键(字符串数组)下的Info.plist中查询的任何URL方案列入白名单:
Info.plist中包含的方案一切正常。当您链接到iOS 9时,您不仅限于50个不同的方案,您只需要在Info.plist中声明您需要的内容。您可以包含多少方案似乎没有限制,但如果他们认为您滥用该机制,我会期待App Store审核小组提出的问题。
请注意,此机制仅适用于canOpenURL而不适用于openURL。 您无需在Info.plist中列出方案即可 用openURL打开它。
有关详情,请访问:http://useyourloaf.com/blog/querying-url-schemes-with-canopenurl.html