我能够以这种方式从 Safari 打开应用程序:
window.location = 'myapp://do/xx';
或打开 Facebook 应用程序:
window.location = 'fb://';
但这在 iOS9 中停止工作。
如何在 Safari 中使用 URL 方案打开应用程序?
我能够以这种方式从 Safari 打开应用程序:
window.location = 'myapp://do/xx';
或打开 Facebook 应用程序:
window.location = 'fb://';
但这在 iOS9 中停止工作。
如何在 Safari 中使用 URL 方案打开应用程序?
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 方案!
在 iOS9 中,Apple 正在改变一些关于 URL 方案的事情。这是一篇关于这些变化的文章。
基本上,您现在必须在 .plist 文件中注册您的应用程序支持的所有 URL 方案。
随着 ios9 的一般发布,将 window.location 设置为自定义 url 确实启动了应用程序,但只有在用户在弹出窗口中点击打开之后。我就此向苹果提交了一个错误,他们回复说这是从 safari 启动应用程序的预期行为。他们说他们会调查如果你点击取消它在未来的尝试中失败的问题。
只需为href
属性分配所需的地址,而不是尝试替换整个window.location
对象:
window.location.href = 'myapp://do/xx';
它在 iOS 9.0.2 上适用于我,但现在 safari 会显示一个确认对话框,以确保用户真的想在应用程序中打开您的链接。
这就是我修改 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>