如何区分并追踪来自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,可以结合以下特征判断:- 检查
navigator.userAgent是否包含Chrome且属于Android环境(TWA基于Chrome Custom Tabs内核),同时排除桌面端Chrome的standalone模式; - 使用
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:- 在项目的
app/build.gradle中添加依赖:dependencies { implementation 'com.android.installreferrer:installreferrer: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
相关产品推荐
相关产品推荐

