深度链接回退
Posted
技术标签:
【中文标题】深度链接回退【英文标题】:Deep Link Fallback 【发布时间】:2014-05-17 08:57:35 【问题描述】:我将发布指向 Facebook 和 Twitter 的链接,以获取我的应用程序的深层链接。我已经开始使用 Facebook 进行测试,只要安装了 Facebook 应用程序,我的链接就可以工作。如果他们没有安装 Facebook 应用程序,他们只会被带到我的网站。
如果用户没有安装 Facebook 应用或更普遍地点击我的应用的链接并且我总是希望将它们发送到我的应用中,那么处理回退的最佳做法是什么?
【问题讨论】:
【参考方案1】:嗨,杰弗里·尼科尔森·卡雷 在 javascript 中使用 android 波纹管意图代码
if(userAgentString.indexOf('Android')>0)
window.location="intent://DataSchemeDataHostname/UV="+UVvalue+"&forgetuserId="+userID+"#Intent;scheme=https;package=com.sisystems.Sisystems;S.browser_fallback_url=https://example.com/index.html?UV="+UVvalue+";end";
【讨论】:
我会尽快更新的。 请参考以下 url tudip.com/blog-post/deep-linking-in-react-native 如果您需要任何示例项目,请参考我的示例 xamarin 项目,其中包含 Android 和 ios 深度链接 github.com/SheikMydeenMuthu/DeeplinkingSample【参考方案2】:很好的问题。与其共享直接指向您的应用程序的深层链接,不如在您的网站上托管一个带有 Javascript 后备代码的页面。该页面可以直接打开应用,也可以退回到 App Store(而不是您的网站)。
这是您需要在服务器上托管并链接到 Facebook 的页面的具体示例。它也适用于电子邮件、社交媒体等。只需替换为您的应用的 URI 和您的应用的 App Store 链接。请注意,iframe 适用于更多浏览器。
<!DOCTYPE html>
<html>
<body>
<script type="text/javascript">
window.onload = function()
// Deep link to your app goes here
document.getElementById("l").src = "my_app://";
setTimeout(function()
// Link to the App Store should go here -- only fires if deep link fails
window.location = "https://itunes.apple.com/us/app/my.app/id123456789?ls=1&mt=8";
, 500);
;
</script>
<iframe id="l" style="visibility:hidden"></iframe>
</body>
</html>
因此,如果用户安装了您的应用,则带有 URI 的链接将成功,并且用户将在触发重定向到 App Store 的脚本之前离开浏览器。如果用户没有您的应用,则重定向成功(在出现简短的错误消息后)。
披露:我是Branch Metrics 的开发人员,上述代码是我们解决此问题的一部分。
【讨论】:
正是我需要的,oyu 是否有适用于 android 和 IOS 的示例? 根据您的回答和doc,我尝试在 android 中实现此功能,但无法使其正常工作。看来android使用的uri略有不同。您能否为 android 提供一个示例-如果已安装,它将在其中打开应用程序,或者将您带到应用程序商店?我尝试使用 Chrome 显示弹出窗口,但不会阻止代码执行。您找到解决此类问题的方法了吗? 这个方法在ios上已经不行了Safari cannot open the page because the address is invalid
以上是关于深度链接回退的主要内容,如果未能解决你的问题,请参考以下文章
git reset revert 回退回滚取消提交返回上一版本