2015-09-18 23 views
10

我们有一些内部应用程序,在iOS 9之前,应用程序将在版本比较后打开类似“itms-services://”的链接,新版本的应用程序将被下载并安装。iOS 9 LaunchServices:错误:URL方案没有注册处理程序itms-services

但是在我们测试iOS 9后,我们发现应用程序无法打开链接“itms-services://”链接,出现错误如“LaunchServices:ERROR:URL scheme itms-services没有注册处理程序”

我们用于更新应用程序的代码:

let downloadUrl = NSURL(string: url) 
UIApplication.sharedApplication().openURL(downloadUrl!) 

我们已经测试放“ITMS服务”,“ITMS服务://”网址完整地进入plist文件“LSApplicationQueriesSchemes”。但仍然无法工作。

+0

已经得到此问题的变通办法。在一个域上配置一个子域名,并设置新的URL自动重定向到itms-service:// URL(你的DNS服务提供商总是支持这个),在应用中打开新的URL而不是“itms-service” URL,从应用论坛得到这个,尚未测试。 – Daniel

回答

0

在iOS9(在我的情况我的URL方案:哈希:)

变化的info.plist: add the custom url schemes here

然后注册事件处理程序的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; 
} 
+0

感谢您的回复,但我没有定义应用程序拥有的模式,只是想使用企业内部分配模式(用户可以在Safari中打开URL来安装内部分配而不是AppStore)。 – Daniel

0

不要知道这是你的情况,但你需要一个https url来下载应用程序。我们的网站上没有SSL,因此我们所做的是将.plist上传至收件箱,并在itms-services链接中使用共享链接。该的.plist重定向到您的服务器,我们没有问题

+0

实际上,我们在9.0以前的iOS中可以使用这个工具,但是在更新到iOS 9之后,这是行不通的。似乎新的iOS无法找到以“itms-services”开头的应用程序来打开URL,它应该可以正常工作,因为URL可以直接由Safari打开。但不能从应用程序打开。 – Daniel

+0

@Daniel检查我的答案在这里,也许它可以帮助你,在我们的iOs 9设备,它工作正常http://stackoverflow.com/a/32769917/1339326 – magorich

+1

感谢您的答复,但实际上我们的问题不是“安装“但”升级“后,我们可以在Safari 9上安装我们的应用程序在iOS 9上,但我们通过打开一个URL为”itms-services://“来升级自己的应用程序,该应用程序适用于iOS 8,但无法在iOS 9上运行 – Daniel

0

在iOS中9,你必须列入白名单的应用程序要在Info.plist中查询下LSApplicationQueriesSchemes密钥的任何URL方案(字符串数组):

enter image description here

随着Info.plist中包含的方案一切正常,如以前一样。当你连接到iOS 9时,你不仅限于50个不同的方案,你只需要在Info.plist中声明你需要的东西。对于您可以包含多少计划似乎没有限制,但如果他们认为您滥用此机制,我会希望App Store审核团队提出问题。

Note that this mechanism only applies to canOpenURL and not openURL. You do not need to have a scheme listed in Info.plist to be able to open it with openURL.

更多信息请访问:http://useyourloaf.com/blog/querying-url-schemes-with-canopenurl.html

1

我是来和你同样的问题。我解决这个问题,该应用程序打开一个HTML链接使用Safari第一方法,

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http:// xx.xx.xx.xx/xx.html"]]; 

的HTML URL重定向到URL --- ITMS服务://行动=下载舱单&网址= 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()"> 
+0

此外,更新安装过程与在safari中打开url tms-services://?action = download-manifest&url = https://xx.xx.xx.xx/xx/xx.plist相同 – dullgrass

相关问题