我能够以这种方式从safari打开应用程序:
window.location = 'myapp://do/xx';
或打开Facebook应用:
window.location = 'fb://';
但是这在iOS9中停止了工作。
如何在safari中使用URL方案打开应用程序?
答案 0 :(得分:3)
IOS 9 URL Shchemes更新: iOS 9引入了LSApplicationQueriesSchemes,允许应用程序查询是否安装了其他应用程序。
1-如果声明了url方案并且调用了canOpenURL(方案)
如果已安装的应用支持该URL方案,则为
如果没有支持该网址的应用
,则为否syslog将显示canOpenURL:URL失败:" urlScheme://" - 错误:null
2-如果未声明url方案并且调用canOpenURL(方案)
始终返回NO
syslog将显示canOpenURL:URL失败:" urlScheme://" - 错误:null
在iOS 9中,开发人员必须添加这些info.plist LSApplicationQueriesSchemes
<array>
<string>urlscheme</string>
<string>urlscheme2</string>
<string>urlscheme3</string>
<string>urlscheme4</string>
</array>
最多50个可以声明unqiue URL方案!
答案 1 :(得分:2)
对于iOS9,Apple正在改变一些有关URL方案的事情。 Here是一篇关于这些变化的文章。
基本上,您现在 在.plist文件中注册您的应用支持的所有网址方案。
答案 2 :(得分:2)
通过ios9的一般发布设置window.location到自定义网址会启动应用程序,但只有在用户在弹出窗口中打开后才能启动。我向苹果提交了一个关于此问题的错误,并且他们回应说这是从safari启动应用程序的意图行为。他们说他们会调查一个问题,如果你点击取消,它将在未来的尝试失败。
答案 3 :(得分:0)
只需为href
属性分配所需的地址,而不是尝试替换整个window.location
对象:
window.location.href = 'myapp://do/xx';
它适用于iOS 9.0.2,但现在safari会显示一个确认对话框,以确保用户真的想在应用中打开您的链接。
答案 4 :(得分:-1)
这就是我修改我的Facebook / Google登录集成以使其在最新更新上工作的方式。现在用户Safari Web视图。
<key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> <string>com.googleusercontent.apps.39373238582-opjuqokmar2i5t3sdk2vs5sifer4moen</string> <string>com-google-gidconsent-google</string> <string>com-google-gidconsent-youtube</string> <string>com-google-gidconsent</string> <string>com.google.gppconsent.2.4.1</string> <string>com.google.gppconsent.2.4.0</string> <string>googlechrome</string> <string>googlechrome-x-callback</string> </array>