我的应用违反了Android广告ID政策

22

谷歌应用商店团队拒绝了我的应用,原因是:

广告标识符不得与可识别个人身份信息或任何持久设备标识符(例如:SSAID、MAC地址、IMEI等)相关联,而不经用户明确同意。

例如,我们发现您的应用归因SDK可以从具有Android广告标识符的设备中收集IMEI,且未进行突出披露,这违反了我们的Android广告标识符政策。

我没有明确地收集IMEI,因此IMEI必须是由应用程序的某个依赖项访问的。

我如何检测哪个依赖项正在访问IMEI?

更新:这些是我的依赖项

    compile "com.android.support:appcompat-v7:$support_version"
    compile "com.android.support:mediarouter-v7:$support_version"      // I'm using icons from here, like ic_media_pause and such
    compile "com.android.support:recyclerview-v7:$support_version"
    compile "com.android.support:design:$support_version"
    compile "com.android.support:support-compat:$support_version"

    compile 'com.android.support:multidex:1.0.2'

    // individual dependencies -- https://dev59.com/MVcQ5IYBdhLWcg3wD_ho#43407421
    compile "com.google.android.gms:play-services-maps:$gms_version"
    compile "com.google.android.gms:play-services-analytics:$gms_version"
    compile "com.google.android.gms:play-services-gcm:$gms_version"
    compile "com.google.firebase:firebase-appindexing:$gms_version"
    compile "com.google.firebase:firebase-core:$gms_version"

    compile "com.facebook.android:facebook-android-sdk:$facebook_version"
    compile 'com.facebook.android:notifications:1.0.2'

    compile 'com.batch.android:batch-sdk:1.11.0'

    compile 'commons-codec:commons-codec:1.9'
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
    compile 'com.github.chrisbanes.photoview:library:1.2.2'
    compile 'de.greenrobot:eventbus:2.4.0'
    compile 'info.hoang8f:android-segmented:1.0.5'
    compile 'io.card:android-sdk:5.4.2'
    compile 'me.dm7.barcodescanner:zxing:1.9'
    compile 'com.google.android.exoplayer:exoplayer:r2.2.0'
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'com.squareup.okhttp:okhttp:2.2.0'

    compile 'io.reactivex:rxandroid:1.1.0'
    compile 'io.reactivex:rxjava:1.1.0'
    //compile 'io.reactivex:rxjava-joins:0.22.0' // to use JoinObservable (and-then-when combinator)

    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    // In libs we have:
    // - ZooZ 1.02 : From https://github.com/Zooz/Zooz-Android/releases/tag/1.02
    // - AppsFlyer : AF-Android-SDK 2.3.1.13 jar
    // - Volley
    compile fileTree(dir: '../libs', include: '*.jar')

    compile('com.crashlytics.sdk.android:crashlytics:2.7.1@aar') {
        transitive = true
    }

注意AppsFlyer已配置为:

        AppsFlyerLib.setCollectIMEI(false); // https://play.google.com/about/monetization-ads/ads/ad-id/
        AppsFlyerLib.setCollectMACAddress(false);
        AppsFlyerLib.setCollectAndroidID(false);

你可以发布一下你的Gradle依赖吗? - Farabi Abdelwahed
1
你的 manifest 中是否有 android.permission.READ_PHONE_STATE 权限?你需要它吗?如果 API >4,没有该权限就无法获取 IMEI。另请参阅归因和分析 SDK。关于唯一标识符的最佳实践,请参考Best practices for unique identifiers。这可能是 crashlytics 的问题吗? - Jon Goodwin
1
是的,我拥有android.permission.READ_PHONE_STATE权限。我不确定移除此权限会带来什么影响。我将检查您提供的资源,谢谢。为什么您怀疑是crashlytics的原因? - Ignasi
5个回答

20

谷歌也删除了我的应用程序。我已经采取以下方法重新发布它:

  1. 使用免费隐私政策URL创建应用程序的隐私政策。

  2. URL上发布隐私政策。

  3. 复制已发布的隐私政策链接并将其添加到开发者Play控制台中。
  4. 还可以在应用程序中添加隐私政策链接(可选)。

希望这也有助于您。


2
完美!请注意,现在第一个网站托管了您的隐私政策,因此您甚至不必使用第二个链接。 - Dan Chaltiel

14

Crashlytics使用各种标识符提供服务,包括Android ID和Android广告ID

Crashlytics库可能会有问题。该库涉及广告ID。许多开发人员在使用Crashlytics库而没有使用AppsFlyerLib的情况下收到此警告。

因此,我认为您也应关注Crashlytics库。

欲了解更多详细信息,请访问Crashlytics安全页面


你能发一份证据吗?例如一个链接。 - vihkat
2
如果您访问此链接,您将获得有关信息的澄清 http://try.crashlytics.com/security/ - Mafujul

5
您需要在您的应用程序中添加隐私政策。首先,您需要创建一个隐私政策URL,然后根据应用程序在GOOGLE PUBLISHER CONSOLE中添加此URL。您可以使用此网站轻松创建隐私政策。 Privacy Policies 如果您有自己的服务器/主机,则尝试将隐私政策页面上传到您自己的服务器上,否则您可以使用此网站进行存储。
提醒:您需要在应用程序中添加此政策页面。创建一个名为隐私政策的菜单,并在对话框中显示所有政策内容。这是最简单的方法。

仅仅在 Google Play 商店列表中添加隐私政策是不够的。 - pseudozach

3
您正在使用低于sdk 4.3版本的Appsflyer。这是问题所在。 以下是他们发给所有开发人员的电子邮件。
“大家好, AppsFlyer和Google Play团队正在合作,确保所有使用AppsFlyer SDK的广告商符合Google Play隐私政策。为避免业务中断,我们强烈建议所有广告商采取以下措施。 如果您正在运行低于4.3版本的AppsFlyer SDK:请尽快更新到最新版本的AppsFlyer SDK以保持完全合规性。如果您在较新的SDK版本中启用了IMEI收集:请通过删除以下代码来禁用AppsFlyer SDK中的IMEI收集功能 AppsFlyerLib.getInstance().setImeiData("IMEI_DATA_HERE") 如果您的应用程序尚未符合Google Play隐私政策,我们建议您及时纠正数据收集。如需了解有关AppsFlyer SDK的更多信息,请访问帮助中心或联系您的成功经理。” 谢谢,AppsFlyer团队

谢谢你的回答,@Bruno,我很感激。不过,我想知道是否存在一种程序/应用程序/其他方法来检测是谁正在访问IMEI,而不是逐个检查每个依赖项(根据项目的不同可能会非常辛苦)。幸运的是,我的应用已经获得了批准,所以我只是好奇以防再次发生这种情况。 - Ignasi
@ilopezluna 你好。我在我的应用程序中遇到了同样的问题。是appsflyer导致了拒绝吗?您如何在最新版本中初始化appsflyer以确保它不会收集IMEI呢?谢谢! - dor506
我们已添加了以下代码行:AppsFlyerLib.setCollectIMEI(false); // https://play.google.com/about/monetization-ads/ads/ad-id/ AppsFlyerLib.setCollectMACAddress(false); AppsFlyerLib.setCollectAndroidID(false);注意 :我们未使用最新版本。 - Ignasi

1
在我的情况下,是因为在Google Play控制台中未设置隐私政策URL。我还使用Crashlytic。但是当我添加了隐私政策时,需要一些时间来处理,然后就解决了。我甚至不需要重新发布它。

2
你的回答与之前的其他回答有何不同? - kenlukas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接