19

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

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

或打开 Facebook 应用程序:

window.location = 'fb://';

但这在 iOS9 中停止工作。

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

4

5 回答 5

3

iOS 9 URL Shchemes 更新:iOS 9 引入了 LSApplicationQueriesSchemes 以允许应用程序查询是否安装了其他应用程序。

1- 如果声明了 url 方案并调用 canOpenURL(scheme)

YES 如果已安装的应用支持该 URL 方案

如果没有应用程序支持该网址,则否

syslog 将显示 canOpenURL: failed for URL: "urlScheme://" - 错误: null

2- 如果未声明 url 方案并调用 canOpenURL(scheme)

总是返回 NO

syslog 将显示 canOpenURL: failed for URL: "urlScheme://" - 错误: null

在 iOS 9 中,开发者必须添加这些 info.plist LSApplicationQueriesSchemes

<array>
    <string>urlscheme</string>
    <string>urlscheme2</string>
    <string>urlscheme3</string>
    <string>urlscheme4</string>
</array>

最多 50 个 可以声明独特的 URL 方案!

于 2015-09-18T17:33:48.417 回答
2

在 iOS9 中,Apple 正在改变一些关于 URL 方案的事情。是一篇关于这些变化的文章。

基本上,您现在必须在 .plist 文件中注册您的应用程序支持的所有 URL 方案。

于 2015-07-11T20:52:54.410 回答
2

随着 ios9 的一般发布,将 window.location 设置为自定义 url 确实启动了应用程序,但只有在用户在弹出窗口中点击打开之后。我就此向苹果提交了一个错误,他们回复说这是从 safari 启动应用程序的预期行为。他们说他们会调查如果你点击取消它在未来的尝试中失败的问题。

于 2015-09-21T23:47:00.203 回答
0

只需为href属性分配所需的地址,而不是尝试替换整个window.location对象:

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

它在 iOS 9.0.2 上适用于我,但现在 safari 会显示一个确认对话框,以确保用户真的想在应用程序中打开您的链接。

于 2015-10-15T21:10:04.147 回答
-1

这就是我修改 Facebook/Google 登录集成以使其在最新更新上工作的方式。现在用户 Safari 网络视图。

<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>
于 2015-10-07T16:59:59.440 回答