Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

User Messaging Platform SDK is not COPPA compliant #735

Closed
c0ffeec0der opened this issue Jan 4, 2023 · 20 comments
Closed

User Messaging Platform SDK is not COPPA compliant #735

c0ffeec0der opened this issue Jan 4, 2023 · 20 comments
Labels
admob Issues related to admob or the ads sdk p1-high

Comments

@c0ffeec0der
Copy link

c0ffeec0der commented Jan 4, 2023

Plugin Version

2.3.0

Steps to Reproduce

Follow https://developers.google.com/admob/flutter/targeting section

implement below

await MobileAds.instance.initialize();
await MobileAds.instance.updateRequestConfiguration(RequestConfiguration(
     tagForChildDirectedTreatment: TagForChildDirectedTreatment.yes));

publish to google play

Expected results:

Pass google play

Actual results:

Google play reject aps with below error

Policy Declaration - Data Safety Section: Device Or Other IDs Data Type - Device Or Other IDs (some common examples may include Advertising ID, Android ID, IMEI, BSSID, MAC address)

After removing plugin googleads-mobile-flutter ; it works

@huycozy huycozy added the in triage Issue currently being evaluated label Jan 4, 2023
@huycozy
Copy link
Collaborator

huycozy commented Jan 4, 2023

@c0ffeec0der Can you confirm you have filled Data safety and have been approved from Google play console? Please check this SO if it helps: https://stackoverflow.com/a/71234298/5921933

@huycozy huycozy added the feedback required Further information is requested label Jan 4, 2023
@c0ffeec0der
Copy link
Author

COPPA does not allow Ads Id, therefore step
6. go to Device or other IDs and check it then next
in SO for COPPA case is not checked.

By setting

await MobileAds.instance.initialize(); await MobileAds.instance.updateRequestConfiguration(RequestConfiguration( tagForChildDirectedTreatment: TagForChildDirectedTreatment.yes));

The expectation it should pass google play data safety with device id unchecked. But it does not.

This means that all children apps could not use admob for flutter. Because the code above does not work...

@github-actions github-actions bot removed the feedback required Further information is requested label Jan 4, 2023
@huycozy
Copy link
Collaborator

huycozy commented Jan 5, 2023

Thanks for the update. Labeling the issue for further insights from the team!

@huycozy huycozy added admob Issues related to admob or the ads sdk and removed in triage Issue currently being evaluated labels Jan 5, 2023
@c0ffeec0der
Copy link
Author

@huycozy please hold a bit. I think it might be ump that ask for consent causing this. I'm waiting google play with the check result

@huycozy huycozy added the feedback required Further information is requested label Jan 5, 2023
@c0ffeec0der
Copy link
Author

c0ffeec0der commented Jan 6, 2023

@huycozy

It is the UMP sdk that send out some id that cause Google play to show error on data safety.

Follow issue #660 for the code

and add in main

await MobileAds.instance.initialize(); await MobileAds.instance.updateRequestConfiguration(RequestConfiguration( tagForChildDirectedTreatment: TagForChildDirectedTreatment.yes));

Add in AndroidManifest.xml to turn off analytics using adid, ssaid and personalization signal

<meta-data android:name="google_analytics_adid_collection_enabled" android:value="false" /> <meta-data android:name="google_analytics_ssaid_collection_enabled" android:value="false" /> <meta-data android:name="google_analytics_default_allow_ad_personalization_signals" android:value="false" />

submit to google play with data safety device id unchecked.

It will not pass. Somehow UMP SDK is sending some id. But I cannot check using devtools network tab (doesn't catch traffic from SDK).

You need a rooted device and follow this guide to use MITM method to catch the traffic. This is where I don't pursue anymore.

Hope this info helps

@github-actions github-actions bot removed the feedback required Further information is requested label Jan 6, 2023
@c0ffeec0der c0ffeec0der changed the title The method to implement COPPA does not pass google play data safety User Messaging Platform SDK is not COPPA compliant Jan 6, 2023
@huycozy
Copy link
Collaborator

huycozy commented Jan 11, 2023

@c0ffeec0der thanks for the investigation.
But I just want to confirm this again. Does your project request Consent Info and also set Child-directed? You have configured Consent Info before and then this issue is happening when you send an update with Child-directed?

@huycozy huycozy added the feedback required Further information is requested label Jan 11, 2023
@c0ffeec0der
Copy link
Author

@huycozy Yes correct. The issue also happen when set 'Child-directed' first and then ask 'Consent Info'. However, remove 'Consent Info' and the issue is gone

@github-actions github-actions bot removed the feedback required Further information is requested label Jan 11, 2023
@huycozy
Copy link
Collaborator

huycozy commented Jan 11, 2023

/cc @jjliu15 for thoughts

@timothyhoang-google
Copy link
Collaborator

It's unclear to me whether the UMP SDK is being used in the steps to reproduce:

await MobileAds.instance.initialize();
await MobileAds.instance.updateRequestConfiguration(RequestConfiguration(
     tagForChildDirectedTreatment: TagForChildDirectedTreatment.yes));

Was the UMP consent form is used to collect the user's consent? If the form was not used, was the user's consent forwarded to the GMA SDK?

@jjliu15
Copy link
Collaborator

jjliu15 commented Feb 1, 2023

Can you try passing ConsentRequestParameters(tagForUnderAgeOfConsent: true) as params when calling ConsentInformation.instance.requestConsentInfoUpdate()?

ConsentInformation.instance.requestConsentInfoUpdate(
  ConsentRequestParameters(tagForUnderAgeOfConsent: true))

@c0ffeec0der
Copy link
Author

It's unclear to me whether the UMP SDK is being used in the steps to reproduce:

await MobileAds.instance.initialize();
await MobileAds.instance.updateRequestConfiguration(RequestConfiguration(
     tagForChildDirectedTreatment: TagForChildDirectedTreatment.yes));

Was the UMP consent form is used to collect the user's consent? If the form was not used, was the user's consent forwarded to the GMA SDK?

It is in that order with UMP consent form

@c0ffeec0der
Copy link
Author

Can you try passing ConsentRequestParameters(tagForUnderAgeOfConsent: true) as params when calling ConsentInformation.instance.requestConsentInfoUpdate()?

ConsentInformation.instance.requestConsentInfoUpdate(
  ConsentRequestParameters(tagForUnderAgeOfConsent: true))

Hello, Updated code as suggested. Issue still persists

SPLIT_BUNDLE 19: Policy Declaration - Data Safety Section: Device Or Other IDs Data Type - Device Or Other IDs (some common examples may include Advertising ID, Android ID, IMEI, BSSID, MAC address)

Can we first have an agreement that UMP sdk is not COPPA compliant? I think its important to acknowledge this first. I don't think there is much to fix/update on the app code but more on the sdk itself..

@jjliu15
Copy link
Collaborator

jjliu15 commented Feb 15, 2023

Some additional questions:

  • Are you publishing a kids app?
  • Did your app previously pass submission while using ads, but just not calling ConsentInformation.instance.requestConsentInfoUpdate()? Or did your app previously not use this plugin at all
  • Could you ask the play team to clarify exactly which IDs are in violation?

@c0ffeec0der
Copy link
Author

c0ffeec0der commented Feb 15, 2023

Are you publishing a kids app?
Yes

Did your app previously pass submission while using ads, but just not calling ConsentInformation.instance.requestConsentInfoUpdate()?
Or did your app previously not use this plugin at all

Yes passed submission earlier then not calling ConsentInformation.instance.requestConsentInfoUpdate(). This function is in the same GMA sdk

Could you ask the play team to clarify exactly which IDs are in violation?

I am sorry to say that it's pointless. I once asked why a release hang, appeal that it should pass. Its either a nice respond or release reset.. Probably they have high load

@jjliu15
Copy link
Collaborator

jjliu15 commented Feb 16, 2023

Can you try adding this to your AndroidManifest?

<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>

@c0ffeec0der
Copy link
Author

I got error during bundle build

Error while evaluating property 'namespace' of task ':app:generateProductionReleaseBuildConfig'.
Failed to calculate the value of task ':app:generateProductionReleaseBuildConfig' property 'namespace'.
> Failed to calculate the value of property 'namespace'.
> org.xml.sax.SAXParseException; systemId: file:/[some file name]/AndroidManifest.xml; lineNumber: 5; columnNumber: 97; The prefix "tools" for attribute "tools:node" associated with an element type "uses-permission" is not bound.

@jjliu15
Copy link
Collaborator

jjliu15 commented Feb 22, 2023

Do you have xmlns:tools="http://schemas.android.com/tools" in your manifest?

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="your_package"
    xmlns:tools="http://schemas.android.com/tools">
        
    <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>

@timothyhoang-google
Copy link
Collaborator

We've identified that this issue requires a fix in the Android/iOS UMP SDK. We'll provide an update once the UMP SDK issue has been fixed, which should fix this issue for the Flutter GMA plugin.

@jjliu15
Copy link
Collaborator

jjliu15 commented May 4, 2023

@c0ffeec0der just want to confirm, did adding the permission to your AndroidManifest.xml fix the issue?

@huycozy
Copy link
Collaborator

huycozy commented Jul 21, 2023

We’re closing this issue due to inactivity. If you’re still impacted, please create a new issue via the Developer Forum.

@huycozy huycozy closed this as not planned Won't fix, can't repro, duplicate, stale Jul 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
admob Issues related to admob or the ads sdk p1-high
Projects
None yet
Development

No branches or pull requests

4 participants