【问题标题】:How can I detect if my website is opened inside a Trusted Web Actvity?如何检测我的网站是否在受信任的 Web 活动中打开?
【发布时间】:2020-09-26 16:50:34
【问题描述】:

我在受信任的 Web 活动中打开我的页面,我想检测它何时在其中打开以自定义行为并用于分析目的。如何检测到页面正在从 TWA 打开?

【问题讨论】:

    标签: trusted-web-activity


    【解决方案1】:

    有三个选项可以帮助检测页面是否从受信任的 Web 活动中打开:

    1. 打开页面时,Referral 将为android-app://<twa.package.name>,其中 twa.package.name 是受信任的 Web 活动的 Android 端使用的包名称。在 JavaScript 中,检查用户是否在受信任的 Web 活动中:
    document.referrer.includes('android-app://<twa.package.name>')
    
    1. 添加 URL 参数。将查询字符串附加到使用 PWA 启动的 URL 的末尾。 Passing Information into a Trusted Web Activity using Query Parameters 文章中有更多信息。

    2. 请求标头:您现在可以在针对应用验证来源时设置自定义请求标头。 This article explains how do do it。不过,并非所有浏览器都支持这种方法。

    【讨论】:

    • FYI,有一些缺点 1.,如果用户将他的 Android 手机的默认浏览器设置为其他人,即勇敢,document.referrer 将返回空。最后使用了查询参数。
    • 注意第一种方法不可靠,你不应该使用它。
    • 为什么第一种方法不可靠?唯一需要注意的是,在加载第一页时将设置引荐来源网址。当发生内部导航时,将相应地设置来自 Web 应用程序的推荐。像下面这样的脚本可以用来保存跨页面加载的信息gist.github.com/andreban/550f34ed19cc3d7f51d0f95bd246a1a6
    【解决方案2】:

    正如 andreban 所说,我使用过:

    document.referrer.includes('android-app://')
    

    如果来自 TWA,则返回 true。

    【讨论】:

    • 请不要这样,如果您调用window.location.reload(),则document.referrer将为空
    • @DedeHamzah 有用的一件事是使用 sessionStorage 来保存如果这条线曾经评估为真。然后即使重新加载也不会清除它。
    • 只检查android-app:// 是不够的,它会给你错误的结果。您应该将包名称作为检查的一部分,否则任何在常规浏览器中打开您的页面的 android 应用程序或自定义选项卡将被识别为来自受信任的 Web 活动。
    • 它可以在 Chromebook 上运行吗?
    猜你喜欢
    • 2019-09-18
    • 2010-09-20
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 2020-06-30
    相关资源
    最近更新 更多