Application. Received Google message received: Violation of Usage of Android Advertising [duplicate] - google-play

I've just received this message from Google Play but I'm not collecting the Advertising ID.
Reason for warning: Violation of Usage of Android Advertising ID
policy and section 4.8 of the Developer Distribution Agreement
Google Play requires developers to provide a valid privacy policy when
the app requests or handles sensitive user or device information.
We’ve identified that your app collects and transmits the Android
advertising ID, which is subject to a privacy policy requirement.
Is it possible any of my dependencies uses it? Here's the list of dependencies:
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation "org.jetbrains.anko:anko-common:$anko_version"
implementation ("com.android.support:appcompat-v7:$android_support_version") {
exclude group: 'com.android.support', module: 'animated-vector-drawable'
exclude group: 'com.android.support', module: 'design'
}
implementation ("com.android.support:design:$android_support_version") {
exclude group: 'com.android.support', module: 'animated-vector-drawable'
}
implementation ("com.android.support:cardview-v7:$android_support_version") {
exclude group: 'com.android.support', module: 'animated-vector-drawable'
exclude group: 'com.android.support', module: 'design'
}
implementation 'com.github.PhilJay:MPAndroidChart:v3.0.2'
implementation 'com.github.apl-devs:appintro:v4.2.3'
implementation('com.crashlytics.sdk.android:crashlytics:2.6.8#aar') {
transitive = true
}
implementation 'com.firebase:firebase-jobdispatcher:0.7.0'
implementation ("com.google.firebase:firebase-firestore:$firestore_version") {
exclude group: 'com.google.firebase', module: 'firebase-auth'
}
implementation ("com.google.firebase:firebase-auth:$firebase_version") {
exclude group: 'com.google.firebase', module: 'firebase-firestore'
}
implementation ("com.google.firebase:firebase-storage:$firebase_version") {
exclude group: 'com.google.firebase', module: 'firebase-firestore'
}
implementation ('com.google.android.gms:play-services-auth:16.0.0') {
exclude group: 'com.google.firebase', module: 'firebase-firestore'
}
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:multidex:1.0.3'
implementation ("com.android.support:exifinterface:$android_support_version") {
exclude group: 'com.android.support', module: 'animated-vector-drawable'
exclude group: 'com.android.support', module: 'design'
}
implementation 'com.soundcloud.android:android-crop:1.0.1#aar'
implementation 'com.github.bumptech.glide:glide:4.7.1'

Disable advertising id collection
According to the Firebase docs you can disable advertising id collection by setting:
<meta-data android:name="google_analytics_adid_collection_enabled" android:value="false" />
in your AndroidManifest.xml under the <Application> tag.
EDIT: It seems like people are having mixed success with this approach. Try adding
configurations { all*.exclude group: 'com.google.firebase', module: 'firebase-core' all*.exclude group: 'com.google.firebase', module: 'firebase-iid' } to the Gradle app dependencies area as per comment below.

Today many developers are getting this same issue.
I also got this issue. I didn't collect any sensitive data, I am not even showing ads to my users. In your case the Crashlytics lib could be an issue. It deals with advertising IDs.
In the mail they mention the required action:
Action required: Add a privacy policy to your store listing and app
So I think all of us should add a privacy policy on the store listing as well as on the app. Before taking the action we should go through the related privacy policy.
Here are some links from where you can get help:
Privacy policy to upload an app
Usage of Android Advertising ID
Developer Distribution Agreement
Developer Program Policies

You are using crashlytics below 2.9.3. Apparently it's collecting and sending the google advertising id as a key in their header. That might be the or one of the issues.
You can check if it's sending the advertising id through a proxy like Charles.
Edit ***
It seems that version 2.9.3 and above are still getting the advertisingID from by calling AdvertisingIdClient.getAdvertisingIdInfo() from the com.google.android.gms.ads.identifier package. I checked it by setting a break point on the method. I am assuming it is somehow still being send to fabric. Which would mean updating to higher version will not solve it..

For Unity users, the problem is in Unity Analytics.
To resolve this problem, we need to do 2 tasks:
In Google Play Console, add the link: https://unity3d.com/legal/privacy-policy into Privacy Policy field in Store presence / Store listing
In your app, add a Privacy Policy button by using the Unity's own plugin Unity Data Privacy Plug-in: https://assetstore.unity.com/packages/add-ons/services/unity-data-privacy-plug-in-118922
After resubmitted about some minutes, Google Play approved my app.

I am not using Crashlytics or any other thing. Just a simple offline app with Facebook Ads. Still my app was removed from the Play Store.
Issue: Violation of Usage of Android Advertising ID policy and section 4.8 of the Developer Distribution Agreement
Issue Description: Google Play requires developers to provide a valid privacy policy when the app requests or handles sensitive user or device information. We’ve identified that your app collects and transmits the Android advertising identifier, which is subject to a privacy policy requirement. If your app collects the Android advertising ID, you must provide a valid privacy policy in both the designated field in the Play Console, and from within the app.
Solution:
I created a Privacy Policy for my app using this link and edited it according to my app.
I created a url for my privacy policy using this link.
Log in to Google Play Console and Go to the Store presence and then store listing and paste your url in Privacy Policy section.
Submit your update.
Note - In my case I did not have to submit any new build with privacy policy as mentioned in mail and my app was visible in play store within hours I did the steps I mentioned above. If in case your app is not visible in play store after following the above points then you should put one privacy policy section in your app too and submit a new build.

I also recieved the same message and got some of my apps suspended today.
So i just deleted those three firebase dependencies:
compile 'com.google.firebase:firebase-core:10.0.1'
compile 'com.google.firebase:firebase-ads:10.0.1'
compile 'com.google.firebase:firebase-appindexing:10.0.1'
Then, i re-submitted the apps, and they was accepted after review :)

If your app uses Firebase SDKs like analytics and all, you can disable Advertising ID collection on SDK level by putting the following line in your AndroidManifest.xml file under the Application tag.
<meta-data android:name="google_analytics_adid_collection_enabled" android:value="false" />
You can read more about it here.
My app was not even an ad supported application but still it got hit by this section 4.8 clause. By employing the above technique I was able to get it back on Google Play without submitting any privacy policy.

this is the cause
Google Play Services version 4.0 introduced new APIs and an ID for use by advertising and analytics providers.
We need to provide a privacy statement and make it available on the web.
For a sample go
https://digital.com/blog/best-privacy-policy-generators/
To change settings on your android app. Developer Console, Store Listing, scroll down to Privacy Policy. Add the url here.

copied from google mail
Please contact policy support team.
If your app requests user data or makes sensitive permissions requests such as Phone, Accounts, Contacts, Camera, Microphone, or if your app uses the Android advertising identifier, you'll need to add a valid privacy policy in two places: your app's Store Listing page (instructions below) and within your app.
As a second option, you can remove any requests for user data or sensitive permissions. For example, you would need to remove {copy and paste permissions here} from the manifest. You will not need to add a privacy policy if you remove these requests.
If you cannot complete steps 1 or 2, you'll need to unpublish the app from the Play Store.
If your app is already unpublished, you don’t need to take action unless you re-publish the app in the future.
You can follow these steps to add a privacy policy to your Store Listing:
Sign in to your Play Console.
Select your app.
On the left side, select Store presence > Store listing.
Under "Privacy Policy," enter the URL where you have the privacy policy hosted online.
Save your changes to submit the update to your app.
Please visit our help center for more information about Google Play privacy policy requirements.

Disabling Advertising ID collection:
https://firebase.google.com/support/guides/disable-analytics#disable_advertising_id_collection
via those two lines in Manifest file:
<meta-data android:name="firebase_analytics_collection_deactivated" android:value="true" />
<meta-data android:name="google_analytics_adid_collection_enabled" android:value="false" />

my app deleted from store today .. same issue
all i do that i add privacy policy to the app from(App console - Store presence - Store listing)
Like the image
you can create it from App Privacy Policy Generator
and uplaod it and write the link in Store listing and resubmit the app
That is work for me
and sorry for my bad language

I am using Crashlytics and OneSignal. Relying on #RikvanVelzen tests with Crashlytics 2.9.3, it is not the reason for my getting the messasge from Google, but OneSignal.
Google requirement is "you must provide a valid privacy policy in both the designated field in the Play Console, and from within the app."
Therefore, I believe that I need to do only two things which are not too complicated:
Add a privacy policy link from Google Play's console, to a webpage with the info
Add privacy policy info in the app
The following seems to provide instructions on how to do it (just one of many):
https://www.iubenda.com/blog/warning-google-play-developer-policy-violation-action-required-policy-issue/

Privacy policy webpage creation:
First, create a page with the privacy policy of the blocked
application.
Write what information you process. If you do not process private data, write it clearly.
Add information (link) about app privacy policy in Google Play Console
App update with consent:
Follow the instruction from Google website: https://developers.google.com/admob/android/eu-consent
Add link to your privacy policy:
privacyUrl = new URL("https://www.your.com/privacyurl");
ConsentForm form = new ConsentForm.Builder(context, privacyUrl)
Add the privacy policy webpage by opening it in browser or in webview in your application
Update app with consent and upload on Google Play Console

step 1 : add privacy and policy url to play store console
step 2 : create a button example in side bar when button clicked just call this below method and add your url here
private void callThisMethodWhenPrivacyButtonClicked() {
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Title here");
WebView wv = new WebView(this);
wv.loadUrl("{your privacy and policy uurl }");
wv.setWebViewClient(new WebViewClient() {
#Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
alert.setView(wv);
alert.setNegativeButton("Close", new DialogInterface.OnClickListener() {
#Override
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
alert.show();
}

First, you have to create a privacy policy URL and then add this URL in GOOGLE PUBLISHER CONSOLE based on application.
You can easily create privacy policy using this website.
Privacy Policies
If you have a server/host try to upload privacy policy page on your own server otherwise you can use this website for storing.
Mentioned: you have to add this policy page on your application. Create a menu as privacy police and show all your policy content on a dialog. Easiest way.

I had one of my app removed and another got warning for reason given as
Issue: Violation of Usage of Android Advertising ID policy and section 4.8 of the Developer Distribution Agreement
I created the privacy policies for both the apps, updated the link in play console store listing, included privacy policy link in main menu of both apps and resubmitted apps.
Both the apps are now live and running .
If you need you can copy the policy, make sure to do edits according to your app permissions and name.
Privacy policy
I don't know if these play console removal and warning count as strike, or somebody can enlighten me.

I received a warning from Google recently mentioning that I have violated the Usage of Android Advertising ID policy and section 4.8 of the Developer Distribution Agreement.
I dont use ads on my app , but I am tracking users events / analytics using Amplitude and Fabric , which might be the cause of this warning.
Action required to solve the problem:
Generate privacy policy using Firebase app privacy policy generator
Include your generated privacy policy into your app , and make it accessible to users.
Update the app, and add privacy policy link (via Web page, or Google doc) to your store listing.

The issue states the violation is due to using user's Android Advertising ID. I had the same problem. I created a privacy policy and added the url to that in my app and to the Google Play page. Submitted an update and the App is live again. Make sure to mention that you are collecting a personally identifiable information, Android Advertising ID, in your app. I've given a link to my app's privacy policy, refer to that if you need to know how exactly it is mentioned.
This is my privacy policy:
https://nwsty.com/privacy-policy-and-terms-of-use-android/
You can easily create a privacy policy here:
https://app-privacy-policy-generator.firebaseapp.com/
Just for reference, this is the app in question:
https://play.google.com/store/apps/details?id=com.instancea.nwsty&hl=en_US

I got 3 apps suspended today.
I had a busy day but managed to start working on the apps after lunch. I worked on and submitted 2 updates out of 3. Now I'm working on the third one.
A few minutes ago, one just got approved.
Most of my apps already have privacy policies. The ones that got suspended did not.
The suspect libraries in my case are Admob and Firebase Analytics.
What I did:
1. I created a privacy policy web-page and added a link in the Google Play Store listing.
2. I added the privacy policy as a string in the app and it pops up via a dialog the user can accept or decline one time.
After the updates, I held my breath for 2 hours and voila!

Related

APK REQUIRES VALID PRIVACY POLICY​ Your app is uploading users' Primary Account information

At first the sata application was accepted by google play until several releases. However, at the time of doing the 12th release, my app was removed from google play.
APK REQUIRES VALID PRIVACY POLICY​
Your app is uploading users' Primary Account information to https:.......... without posting a privacy policy in both the designated field in the Play Developer Console and from within the Play distributed app itself.
how to solve it?, i need help immediately. thank you.
The solution is clear:
You need a Privacy Policy
You need to add the Privacy Policy:
In the app itself
On the Play Developer Console
You have multiple options how to link to your Privacy Policy from within your app: About or Settings screen, Sign-up or Login screens, separate item in the menu etc.
When you add the Privacy Policy on Play Developer Console it would be made available on your app listing page:
You can read Google's requirements for having a Privacy Policy on this help page here:
https://support.google.com/googleplay/android-developer/answer/113469#privacy

What does Google Play do with the Privacy Policy Link I provide it with?

I am developing an app that will stand on its own without a Website (at the moment).
According to Google Play, I must provide a Privacy Policy URL because my app requires the android.permission.CAMERA permission.
I know that I can place a Privacy Policy on a static hosted Website and give that URL to Google Play, but I would like to know what Google Play will use that URL for.
Does it just give the users the link and if clicked will take the user to the static page where the privacy policy is hosted?
Does it crawl the page and extracts information from it to display the info within the Play Store?
Thanks
There are 2 types of permissions : Normal and Dangerous as listed here
The purpose of a permission is to protect the privacy of an Android
user.
Android apps must request permission to access sensitive user data (such as contacts and SMS), as well as certain system features (such as camera and internet). Depending on the feature, the system might grant the permission automatically or might prompt the user to approve the request.
read more here : https://developer.android.com/guide/topics/permissions/overview
So if you using some of Dangerous level permissions in your app , google will definitely ask you to provide Privacy Policy before uploding apk to playstore .
so if you not provide link , they will not approve your apk build to publish in playstore.
Yes , they also display Privacy Policy Link to all users in ADDITIONAL INFORMATION section in Playstore .
For Example See Below Picture :

Email from Google: Using a Google product name as the project in OAuth consent screen

I received this message for the second time and i still dont understand why. Can someone help me?
Action required: Critical problem with your Google Cloud/API project
Youtube API (id: tonal-topic-123301)
Dear Developer, We have recently
detected that your Google Cloud/API project Youtube API (id:
tonal-topic-123301) is using a Google product name as the project name
shown to users on the OAuth consent screen, which violates the Google
API Services: User Data Policy. You can fix the problem by revising
the project name and other relevant content so that the OAuth consent
screen shown to users accurately reflects the identity of your
application. To revise the project name visible to users, please take
the following steps:
Please review the Google API Services: User Data Policy, specifically
the following section- "Do not make false or misleading statements
about any entities that have allegedly authorized or managed your
application. You must accurately represent the company, organization,
or other authority that manages your application. Making false
representations about client credentials to Google or Google users is
grounds for suspension."
Sign in to the Google Cloud Platform Console.
Select your project.
On the Home Page Dashboard, select Go to APIs overview under APIs.
In API manager, select Credentials on the left bar, then select OAuth
consent screen. Change the name in the field under Product name shown
to users and then click on Save. We will suspend your Cloud project in
3 days unless you correct the problem. Please submit an appeal if you
have any questions. Please note that you should be logged in as the
project owner to access the appeals page. For more help on submitting
an appeal or to learn more about the process check the Policy
Violation FAQ. Please take a moment to review the Google API Services:
User Data Policy, the Google API Terms of Service, the Google Cloud
Terms of Service and the applicable Terms of Service for the specific
Google API you are using so that you do not violate our terms and
policies in the future.
This is obviously a naming issue regarding something in the google product range.
You Should be able to re-name your project to solve this.
If not, try a Google forum or help pages.
The problem you are having is that Google does not allow you to use a Google product name as the name of your in your application. Users can become confused and assume your third party application was created by them.
How to fix it:
Go to Google Developer console find the credentials screen. Click on the Oauth consent screen tab at the top rename your application.
Note: If you don't do this google is going to shut down your application they are very picky about this.

Why GeneXus is using the READ_PHONE_STATE permission in my Android app?

So I have an app generated with GeneXus in the Play Store and I received the following e-mail from the store:
[...] Policy issue: Google Play requires developers to provide a valid privacy policy when the app requests or handles sensitive user or device information. Your app requests sensitive permissions (e.g. camera, microphone, accounts, contacts, or phone) or user data, but does not include a valid privacy policy. [...]
So I went to the Developer Console and found this in the privacy police section (translated from portuguese):
Your app have an APK with the version code 40 thar require these permissions: android.permission.READ_PHONE_STATE. Using these permissions in an APK require a privacy police.
So my question is: What am I using in GeneXus that needs this permission? I get the NetworkId from the ClientInformation object, is it?
Yes, that is precisely the reason. The Android method that obtains the IMEI number (and that GeneXus applications call to obtain it) needs the READ_PHONE_STATE permission to execute. This is understandable, as it's considered private information.
Following Android's Best Practices for Unique Identifiers I would suggest using the ClientInformation.Id property instead. As a bonus, it doesn't persist over device wipes, which in 99% of cases is the intended behavior (unless the app is only installed in controlled devices, which doesn't seem to be the case if it's published in the Play Store).
If you decide to go this route, just remember to reset the Send Device Information on Requests property to false.
(Note: the property name has been/will be changed to Include Network Id in Client Information as of GeneXus 15 U3, since the old name was prone to confusion).

Annoying new confirmation page in Google App Engine Launcher

After upgrading to GoogleAppEngineLauncher 1.9.18 and clicking on the Deploy button, a new tab appears in the browser with a page reading:
Google App Engine appcfg would like to:
* View and manage your applications deployed on Google App Engine
* View and manage your data across Google Cloud Platform services
By clicking Accept, you allow this app and Google to use your information in accordance with their respective terms of service and privacy policies. You can change this and other Account Permissions at any time.
So I click the Accept button and a new page appears:
The authentication flow has completed.
The deploy completes, but this happens every time I Deploy a new version. What's up with this? Why doesn't it remember that I accepted the TOS and Privacy Policy? This is annoying!
Another question: How can I turn off this new "feature"?
Update: This only seems to apply to Mac launchers
Update on 2015-04-20: Upgrading to 1.9.19 has solved this problem
Did you just upgrade the appenginelauncher to version 1.9.18?
Per the release notes:
Mac Launcher now uses OAuth2 exclusively for app deployments.
Permissions are granted through the browser instead of a login dialog.
It looks like this is the way it is now.

Resources