AppsFlyerSDK / appsflyer-react-native-plugin

AppsFlyer plugin for React Native
MIT License
276 stars 197 forks source link

Android - Applsflyer SDK still transmits identifier that do not comply with our Families Policy #469

Closed pabloearg closed 1 year ago

pabloearg commented 1 year ago

Report

Plugin Version

6.4.40

On what Platform are you having the issue?

Android

What did you do?

Install the sdk as the documentation said and have the app already in production for serveral years

What did you expect to happen?

The google play testers shouldn't be saying that your SDK in our app still transmits identifier(s) that do not comply with our Families Policy

What happened instead?

We received the following email:

During review, we found that your app, **: * (com.**) (App Bundle Version: *, Track: Production), still violates the [Families Policy Requirements] We’ve identified that your app or an SDK in your app still transmits identifier(s) that do not comply with our Families Policy. These identifiers may include, but are not limited to, Android Advertising ID.

For example, the destinations of Android Advertising ID transmission may include, but are not limited to, appsflyer.com and facebook.com.

Apps that solely target children, must not transmit the following:

Android Advertising ID (AAID) SIM Serial Build Serial BSSID MAC SSID IMEI and/or IMSI Apps that target both children and older audiences must not transmit the listed identifiers from children or users of unknown age.

You may also want to double check that your app complies with all other [Developer Program Policies]as additional enforcement could occur if there are further policy violations.

Before resubmitting your app for further review, please make sure to DEACTIVATE the non-compliant version (App Bundle Version: *****, Track: Production) and increment the version number of APK.

Please provide any other relevant information.

We been using the $RNAppsFlyerStrictMode=true for a long time, but your documentation says that we should do nothing with our current implementation in android:

android/build.gradle:

        buildToolsVersion = "31.0.0"
        minSdkVersion = 21
        compileSdkVersion = 31
        targetSdkVersion = 31

package.json: "react-native-appsflyer": "6.4.40",

github-actions[bot] commented 1 year ago

👋 Hi @pabloearg and Thank you for reaching out to us. In order for us to provide optimal support, please submit a ticket to our support team at support@appsflyer.com. When submitting the ticket, please specify:

Yann-prak commented 1 year ago

@pabloearg did you receive an answer from appsflyer's support ? I have the same issue and Google keep sending me the same mail.

Any solution would be very appreciate.

pabloearg commented 1 year ago

@Yann-prak I did, but it wasn't helpful, I'm still trying to get a real answer.

Yann-prak commented 1 year ago

Well... Google asked me to submit a new version otherwise they will delete my app in one month... I guess I'll have to remove appsflyer for now.

Thanks for your reply !

Yann-prak commented 1 year ago

Hey @pabloearg

I've found in the doc this method disableAdvertisingIdentifier(shouldDisable). Apparently, it's for iOS only but if you dive into the RNAppsFlyerModule.java, it can be use since, at least, the 6.5.0 release (react native plugin). Apparently it stops the GAID to be collecting according to the support team :

Moreover, our SDK has introduced an API called setDisableAdvertisingIdentifiers, which prevents the SDK from collecting the Google Advertising ID. This API was added in v6.3.2 of the SDK and can be utilized across all Android versions.

I'll try this one and see if Google accepts.

The doc should be updated accordingly.

Hope this help.

amit-kremer93 commented 1 year ago

@Yann-prak You are right, the api disableAdvertisingIdentifier is available in the RN plugin but not listed in the docs. we will update the docs soon. Thx!

novavision commented 4 months ago

@amit-kremer93 this method on Awake doesn't help at all. The app is rejected by Google because of AppsFlyer plugin adds permissions to the AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_ADSERVICES_ATTRIBUTION"/>
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>

Not sure about last one, but it wasn't there using older AppsFlyer SDK.

The only workaround here is to add

    <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
    <uses-permission android:name="android.permission.ACCESS_ADSERVICES_ATTRIBUTION" tools:node="remove"/>
    <uses-permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID" tools:node="remove"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" tools:node="remove"/>

in main AndroidManifest.xml in Assets/Plugins/Android directory

UPDATE Even removing these permissions the app was rejected by Google again.

Seems AppsFlyer added something in the background. Again - with the older version of SDK and just a single line

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

worked fine and Google accepted the build.