Команда Google Play отклонила мое приложение по следующим причинам:
The advertising identifier must not be connected to personally-identifiable information or associated with any persistent device identifier (for example: SSAID, MAC address, IMEI, etc.) without explicit consent of the user.
For example, we have identified that your app's attribution SDK enables collection of IMEI from devices which have an Android advertising ID without prominent disclosure, which is a violation of our Android Advertising ID policy.
Я не собираю 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://stackoverflow.com/a/43407421/1121497
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);
Есть ли у вас разрешение android.permission.READ_PHONE_STATE в вашем manifest? Тебе это нужно ? Вы не можете получить IMEI без него (для API> 4). См. Также SDK атрибуции и аналитики для справки Лучшие практики для уникальных идентификаторов. Может быть crashlytics?
Да, у меня есть разрешение android.permission.READ_PHONE_STATE. Я не уверен, что я нарушу, удалив это разрешение. Я собираюсь проверить предоставленные вами ресурсы, спасибо. Почему вы подозреваете crashlytics?
Вы используете Appsflyer ниже SDK 4.3. Это проблема. Это электронное письмо, которое они отправили всем разработчикам.
Hi there,
The AppsFlyer and Google Play teams are collaborating to ensure that all advertisers using the AppsFlyer SDK are compliant with the Google Play privacy policy. To avoid any disruption to your business, we strongly encourage that all advertisers take the following steps.
If you are running the AppsFlyer SDK version 4.3 or earlier: Please update to the latest AppsFlyer SDK as soon as possible to maintain full compliance. If you have enabled IMEI collection in a newer SDK version: Disable IMEI collection via the AppsFlyer SDK by removing the following code AppsFlyerLib.getInstance().setImeiData("IMEI_DATA_HERE") If your apps are not yet compliant with the Google Play privacy policy, we recommend that you correct your data collection in a timely manner. For more information about the AppsFlyer SDK, please visit the Help Center or contact your success manager.
Thank you, The AppsFlyer Team
Спасибо за ответ @Bruno, я ценю это. Однако я хотел бы знать, существует ли процедура / приложение / что-то еще, чтобы определить, кто обращается к IMEI, вместо того, чтобы проверять каждую зависимость индивидуально (в зависимости от проекта может быть действительно тяжелая работа). К счастью, мое приложение было одобрено, так что мне просто любопытно, не случится ли со мной такое снова.
@ilopezluna Привет. У меня такая же проблема в моем приложении. Был ли отклонен appflyer? Как инициализировать appflyer в последней версии, чтобы убедиться, что он не собирает IMEI? Спасибо!
Мы добавили следующие строки: AppsFlyerLib.setCollectIMEI(false); // https://play.google.com/about/monetization-ads/ads/ad-id/ AppsFlyerLib.setCollectMACAddress(false); AppsFlyerLib.setCollectAndroidID(false);Примечание: мы не используем последнюю версию.
Crashlytics использует различные идентификаторы для предоставления своих услуг, включая Android ID и Рекламный идентификатор Android.
Так что библиотека crashlytics может быть проблемой. Эта библиотека имеет дело с рекламным идентификатором. Это предупреждение получают многие разработчики, использующие crashlytics lib и не использующие AppsFlyerLib. Поэтому я думаю, что вам также следует позаботиться о библиотеке crashlytics.
Для получения дополнительной информации посетите страница безопасности crashlytics.
Вы можете прислать доказательства? Например ссылку.
Если вы перейдете по этой ссылке, вы получите разъяснения по поводу информации try.crashlytics.com/security
You have to add privacy policy on your application.
Сначала вы должны создать URL-адрес политики конфиденциальности, а затем добавить этот URL-адрес в КОНСОЛЬ ИЗДАТЕЛЯ GOOGLE в зависимости от приложения. Вы можете легко создать политику конфиденциальности, используя этот сайт.
Если у вас есть сервер / хост, попробуйте загрузить страницу политики конфиденциальности на свой собственный сервер, иначе вы можете использовать этот веб-сайт для хранения.
Упомянул: вы должны добавить эту страницу политики в свое приложение. Создайте меню в качестве политики конфиденциальности и покажите все содержимое вашей политики в диалоговом окне. Самый простой способ
Только добавление политики конфиденциальности в список Google Play Store не работает.
В моем случае это было связано с тем, что URL-адрес политики конфиденциальности не был установлен в консоли Google Play. Еще я использую Crashlytic. Но когда я добавил Политику конфиденциальности, это заняло некоторое время, а затем проблема была решена. Мне не пришлось переиздавать это снова.
Чем ваш ответ отличается от других ответов, последовавших за вами?
Мое приложение тоже удалено гуглом. Я использовал следующий метод, чтобы переиздать его.
Создайте политику конфиденциальности приложения, используя Бесплатный URL-адрес Политики конфиденциальности
Опубликуйте политику конфиденциальности на URL
Надеюсь, это поможет и вам.
Идеально ! Обратите внимание, что сейчас на первом веб-сайте размещена ваша политика конфиденциальности, поэтому вам даже не нужно использовать вторую ссылку.
Не могли бы вы опубликовать свои зависимости Gradle