迁移至Google Play Install Referrer Library后,如何未上架测试?
嘿,这个问题我太有共鸣了!之前从旧的INSTALL_REFERRER广播迁移到新库时,也纠结了好久怎么不用上架就能测试。其实Google提供了几种实用的方式,不用把应用推到Play商店就能验证你的referrer逻辑:
方法一:adb安装时直接传递referrer参数
这是最直接的方式,安装应用时就把测试用的referrer数据传进去,安装完成后你的InstallReferrerClient就能正常获取到这些参数。
命令格式如下:
adb install -r --referrer="utm_source=adb_test&utm_medium=adb_install&utm_campaign=2024_test" /path/to/your/app.apk
-r参数表示覆盖安装已有的应用--referrer后面跟着你的测试参数,格式和正常的UTM参数一致
安装完成后,启动你的应用,调用InstallReferrerClient的getInstallReferrer()方法,就能拿到你设置的测试referrer了。
方法二:模拟Play服务的referrer响应(调试模式)
如果你不想重新安装应用,可以利用InstallReferrerClient的调试参数来模拟返回结果,不过这个需要在代码里做临时的调试配置:
在初始化InstallReferrerClient的时候,添加测试参数(记得只在Debug模式下使用,正式发布前要移除):
// Java示例 InstallReferrerClient referrerClient = InstallReferrerClient.newBuilder(context).build(); if (BuildConfig.DEBUG) { // 添加模拟的referrer参数 referrerClient.addTestParameter("referrer", "utm_source=debug_mode&utm_medium=debug&utm_campaign=debug_test"); } referrerClient.startConnection(new InstallReferrerStateListener() { @Override public void onInstallReferrerSetupFinished(int responseCode) { if (responseCode == InstallReferrerClient.InstallReferrerResponse.OK) { try { ReferrerDetails details = referrerClient.getInstallReferrer(); String referrer = details.getInstallReferrer(); // 处理你的referrer逻辑 } catch (RemoteException e) { e.printStackTrace(); } } } @Override public void onInstallReferrerServiceDisconnected() { // 重新连接逻辑 } });
这个方法的前提是你的测试设备上安装的Google Play服务版本足够新(至少11.6.0以上),支持这个调试参数。
方法三:兼容旧广播的测试方式(临时过渡用)
如果你还保留着旧的BroadcastReceiver用于兼容,也可以继续用原来的adb广播命令测试,新的InstallReferrerLibrary也能捕获到这个广播的referrer数据:
adb shell am broadcast -a com.google.android.finsky.ACTION_REFERRER \ -n com.your.package.name/com.your.receiver.YourInstallReferrerReceiver \ --es "referrer" "utm_source=old_broadcast_test&utm_medium=broadcast&utm_campaign=transition_test"
不过这个方法更适合过渡阶段,建议还是用前两种专门针对新库的测试方式。
需要注意的是,所有测试都需要确保设备上安装了最新版的Google Play服务,否则InstallReferrerClient可能无法正常工作。
内容的提问来源于stack exchange,提问作者Bart Kerfeld

