You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何区分并追踪来自Play Store的PWA(TWA)安装量?

区分浏览器PWA与Play Store TWA的低成本方案

以下是几个无需引入Firebase、改动量较小的解决方案:

  • 给TWA启动URL添加来源标识参数
    直接修改bubblewrap生成的twa-manifest.json,在start_url末尾追加查询参数,比如?source=play_store。例如:

    {
      "start_url": "/?source=play_store",
      // 其他配置项...
    }
    

    修改后执行bubblewrap build重新生成.aab包即可。你的PWA只需在加载时解析URL的source参数,就能直接区分Play Store安装的TWA和浏览器内安装的PWA,完全不需要修改Android原生代码,仅需前端做简单的参数判断。

  • 检测TWA特有的环境特征
    除了display-mode: standalone,可以结合以下特征判断:

    1. 检查navigator.userAgent是否包含Chrome且属于Android环境(TWA基于Chrome Custom Tabs内核),同时排除桌面端Chrome的standalone模式;
    2. 使用navigator.getInstalledRelatedApps() API,该API能识别与PWA关联的TWA应用(需提前配置好Digital Asset Links验证你的域名与Play Store应用的关联)。如果返回的应用列表中包含你的Play Store应用ID,即可判定为TWA启动。
  • 轻量集成Install Referrer API(极小Android代码改动)
    如果你能接受对bubblewrap生成的Android项目做几行代码修改,可以集成Play Install Referrer API,将安装来源信息传递给PWA:

    1. 在项目的app/build.gradle中添加依赖:
      dependencies {
        implementation 'com.android.installreferrer:installreferrer:2.2'
      }
      
    2. 在MainActivity.java中获取referrer,并通过JavaScript接口注入到网页:
      // 初始化Install Referrer客户端
      InstallReferrerClient referrerClient = InstallReferrerClient.newBuilder(this).build();
      referrerClient.startConnection(new InstallReferrerStateListener() {
          @Override
          public void onInstallReferrerSetupFinished(int responseCode) {
              switch (responseCode) {
                  case InstallReferrerClient.InstallReferrerResponse.OK:
                      try {
                          ReferrerDetails response = referrerClient.getInstallReferrer();
                          String referrer = response.getInstallReferrer();
                          // 将referrer注入到网页
                          webView.evaluateJavascript("window.playReferrer = '" + referrer + "';", null);
                      } catch (RemoteException e) {
                          e.printStackTrace();
                      }
                      break;
              }
          }
          @Override
          public void onInstallReferrerServiceDisconnected() {
              // 重试逻辑(可选)
          }
      });
      

    之后你的PWA就能通过window.playReferrer获取安装来源,判断是否来自Play Store。这个改动仅涉及几行Android代码,不会让项目脱离PWA的本质。


内容的提问来源于stack exchange,提问作者Bayernator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 18:42:21