在用户同意的情况下将引荐来源意图传递给第三方指标库
Passing Referrer Intent to Third-Party Metrics Libraries with User Consent
根据 Google Play's Developer Program Policies,开发者
- 不得在获得明确同意之前开始收集个人或敏感数据;
不过,目前我们使用三种不同的第三方服务跟踪用户安装:Branch.io、Mixpanel 和 AppsFlyer。我在 AndroidManifest.xml
上注册了一个 BroadcastReceiver
<receiver
android:name="org.example.InstallListener"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
BroadcastReceiver 的代码如下:
public class InstallListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Mixpanel
InstallReferrerReceiver mixpanelReferrerTracking = new InstallReferrerReceiver();
mixpanelReferrerTracking.onReceive(context, intent);
// Branch.io
InstallListener branchIoReferrerTracking = new InstallListener();
branchIoReferrerTracking.onReceive(context, intent);
// AppsFlyer
SingleInstallBroadcastReceiver appsFlyerReferrerTracking = new SingleInstallBroadcastReceiver();
appsFlyerReferrerTracking.onReceive(context, intent);
}
}
这基于 guide by AppsFlyer 用于注册多个安装跟踪器。
现在的问题是,如果我们要遵守 Google Play 的上述政策,我们如何在将引荐来源数据发送到我们的第三方库之前获得用户同意?
据我所知,com.android.vending.INSTALL_REFERRER
在安装后由 BroadcastReceiver
从 Google Play 广播和接收,所以我想这可能是在我什至可以启动询问用户同意的对话框。
安装跟踪数据是该政策所指的个人或敏感数据的一部分是否也正确?
我们正在考虑的一种解决方案是在收到广播后将referrer
extra从intent保存到SharedPreferences
,然后在获得用户同意后从那里提取它,然后再通过它到第三方跟踪器。这个解决方案是否正确?
没有真正需要将数据存储在您的 SharedPreferences
"independently" - 您可以简单地实现 AppsFlyer SDK 提供的 MultipleInstallBroadcastReceiver
并将 SDK 初始化保持在获取之后用户的同意。这可能适用于收集此数据的其他 SDK。
此外,我可以说绝大多数 AppsFlyer 用户都在使用(其中之一)MultipleInstallBroadcastReceiver
/ SingleInstallBroadCastReceiver
接收器,我们从未遇到过任何与此相关的问题。
P.S。有点偏离主题,但可能是相关的 - Google 提供了一种更新/更好/更安全的方式来获取商店的 INSTALL_REFERRER
:https://developer.android.com/google/play/installreferrer/igetinstallreferrerservice
使用 AppsFlyer,您只需使用 gradle 导入 'com.android.installreferrer:installreferrer:1.0'
库,AppsFlyer SDK 将完成剩下的工作。
根据 Google Play's Developer Program Policies,开发者
- 不得在获得明确同意之前开始收集个人或敏感数据;
不过,目前我们使用三种不同的第三方服务跟踪用户安装:Branch.io、Mixpanel 和 AppsFlyer。我在 AndroidManifest.xml
BroadcastReceiver
<receiver
android:name="org.example.InstallListener"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
BroadcastReceiver 的代码如下:
public class InstallListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Mixpanel
InstallReferrerReceiver mixpanelReferrerTracking = new InstallReferrerReceiver();
mixpanelReferrerTracking.onReceive(context, intent);
// Branch.io
InstallListener branchIoReferrerTracking = new InstallListener();
branchIoReferrerTracking.onReceive(context, intent);
// AppsFlyer
SingleInstallBroadcastReceiver appsFlyerReferrerTracking = new SingleInstallBroadcastReceiver();
appsFlyerReferrerTracking.onReceive(context, intent);
}
}
这基于 guide by AppsFlyer 用于注册多个安装跟踪器。
现在的问题是,如果我们要遵守 Google Play 的上述政策,我们如何在将引荐来源数据发送到我们的第三方库之前获得用户同意?
据我所知,com.android.vending.INSTALL_REFERRER
在安装后由 BroadcastReceiver
从 Google Play 广播和接收,所以我想这可能是在我什至可以启动询问用户同意的对话框。
安装跟踪数据是该政策所指的个人或敏感数据的一部分是否也正确?
我们正在考虑的一种解决方案是在收到广播后将referrer
extra从intent保存到SharedPreferences
,然后在获得用户同意后从那里提取它,然后再通过它到第三方跟踪器。这个解决方案是否正确?
没有真正需要将数据存储在您的 SharedPreferences
"independently" - 您可以简单地实现 AppsFlyer SDK 提供的 MultipleInstallBroadcastReceiver
并将 SDK 初始化保持在获取之后用户的同意。这可能适用于收集此数据的其他 SDK。
此外,我可以说绝大多数 AppsFlyer 用户都在使用(其中之一)MultipleInstallBroadcastReceiver
/ SingleInstallBroadCastReceiver
接收器,我们从未遇到过任何与此相关的问题。
P.S。有点偏离主题,但可能是相关的 - Google 提供了一种更新/更好/更安全的方式来获取商店的 INSTALL_REFERRER
:https://developer.android.com/google/play/installreferrer/igetinstallreferrerservice
使用 AppsFlyer,您只需使用 gradle 导入 'com.android.installreferrer:installreferrer:1.0'
库,AppsFlyer SDK 将完成剩下的工作。