如何在iOS9中从Safari打开URL方案?

时间:2015-07-11 20:45:23

标签: ios xcode url-scheme ios9 xcode7-beta3

我能够以这种方式从safari打开应用程序:

window.location = 'myapp://do/xx';

或打开Facebook应用:

window.location = 'fb://';

但是这在iOS9中停止了工作。

如何在safari中使用URL方案打开应用程序?

5 个答案:

答案 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>