invertase / notifee

⚛️ A feature rich notifications library for React Native.
https://notifee.app
Apache License 2.0
1.88k stars 228 forks source link

How to remove USE_FULL_SCREEN_INTENT? #1027

Closed ezequielobreque closed 2 months ago

ezequielobreque commented 7 months ago

Hello! I recently uploaded a version of my application that uses notifee to the Play Store and the Android people made me notice that I was using USE_FULL_SCREEN_INTENT, and that I had until May 31 to solve it. Notice that notifee is adding these permissions to the intermediate files. Is there a way to remove this permission that I really don't think I'm using?

notifee 7.8.2

RohanRajGautam commented 7 months ago

Faced a similar issue with Play Store complaining about FULL_SCREEN_INTENT permission, and removing my app from the Play Store. So, I removed the permission manually from AndroidManifest.xml, and it works now.

<manifest
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools" <= ADD THIS LINE
  package="com.something">
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" tools:node="remove" />

source: https://stackoverflow.com/questions/49025927/react-native-remove-default-android-permissions

murat-aksoy commented 7 months ago

Faced a similar issue with Play Store complaining about FULL_SCREEN_INTENT permission, and removing my app from the Play Store. So, I removed the permission manually from AndroidManifest.xml, and it works now.

<manifest
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools" <= ADD THIS LINE
  package="com.something">
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" tools:node="remove" />

source: https://stackoverflow.com/questions/49025927/react-native-remove-default-android-permissions

Will notifee work as expected If I remove the permission manually?

sboo commented 6 months ago

Faced a similar issue with Play Store complaining about FULL_SCREEN_INTENT permission, and removing my app from the Play Store. So, I removed the permission manually from AndroidManifest.xml, and it works now.

<manifest
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools" <= ADD THIS LINE
  package="com.something">
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" tools:node="remove" />

source: https://stackoverflow.com/questions/49025927/react-native-remove-default-android-permissions

I tried this, but it still seems to show up in the generated Manifest. I would have expected that the project manifest would be leading.

Muha-coinmotion commented 6 months ago

I am also experiencing the same issue with my notifee configuration. I am not using asForgroundService and the category is Message. However, I can still see the USE_FULL_SCREEN_INTENT permission in the merged Manifest file.

 await notifee
            .displayNotification({
                id: messageId,
                title: title,
                body: body,
                data: {
                    deepLink: deepLink,
                },
                android: {
                    channelId: pushNotificationChannels.id,
                    groupSummary: true,
                    smallIcon: smallIcon ? smallIcon : 'ic_notification',
                    timestamp: Date.now() - 480000,
                    showTimestamp: true,
                    showChronometer: true,
                    // pressAction is needed if you want the notification to open the app when pressed
                    pressAction: {
                        id: 'default',
                    },
                    category: AndroidCategory.MESSAGE,
                    asForegroundService: false,
                },
                ios: {
                    critical: true,
                    sound: 'default',
                    // iOS > 12
                    // play at 90% sound volume
                    criticalVolume: 0.9,
                },
            })
            .catch((e) => {
                console.log(
                    'Error in pushNotificationController notifee.displayNotification',
                    e,
                );
            });

Please let me know how to remove the USE_FULL_SCREEN_INTENT permission, and if I remove it manually, will it affect the functionality of notifee.

taylorkline commented 6 months ago

Faced a similar issue with Play Store complaining about FULL_SCREEN_INTENT permission, and removing my app from the Play Store. So, I removed the permission manually from AndroidManifest.xml, and it works now.

<manifest
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools" <= ADD THIS LINE
  package="com.something">
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" tools:node="remove" />

source: https://stackoverflow.com/questions/49025927/react-native-remove-default-android-permissions

Confirming that this worked, android/app/build/outputs/logs/manifest-merger-release-report.txt shows that the USE_FULL_SCREEN_INTENT is REJECTED

Will need to test on Android 14 and Android 12 or under to confirm this causes no actual issues.

radko93 commented 6 months ago

I tested on Android 14 and foreground service works.

walterholohan commented 6 months ago

Thanks @taylorkline @RohanRajGautam you saved us. @mikehardy will this library be updated to handle this change?

anatooly commented 5 months ago

In my case I use only one function of library

 notifee.getBadgeCount().then(count => {
      if (count) {
        notifee.setBadgeCount(0)
      }
 }

and all application not approve because use this USE_FULL_SCREEN_INTENT permission :-)

murat-aksoy commented 5 months ago

Faced a similar issue with Play Store complaining about FULL_SCREEN_INTENT permission, and removing my app from the Play Store. So, I removed the permission manually from AndroidManifest.xml, and it works now.

<manifest
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools" <= ADD THIS LINE
  package="com.something">
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" tools:node="remove" />

source: https://stackoverflow.com/questions/49025927/react-native-remove-default-android-permissions

Confirming that this worked, android/app/build/outputs/logs/manifest-merger-release-report.txt shows that the USE_FULL_SCREEN_INTENT is REJECTED

Will need to test on Android 14 and Android 12 or under to confirm this causes no actual issues.

Hello, I did the same but I do not see that permission is rejected in the manifest log. When I upload my .aab file to the store, the warning still exists.

Could It be cache?

Thanks.

MohsinAtArbisoft commented 5 months ago

Faced a similar issue with Play Store complaining about FULL_SCREEN_INTENT permission, and removing my app from the Play Store. So, I removed the permission manually from AndroidManifest.xml, and it works now.

<manifest
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools" <= ADD THIS LINE
  package="com.something">
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" tools:node="remove" />

source: https://stackoverflow.com/questions/49025927/react-native-remove-default-android-permissions

Confirming that this worked, android/app/build/outputs/logs/manifest-merger-release-report.txt shows that the USE_FULL_SCREEN_INTENT is REJECTED

Will need to test on Android 14 and Android 12 or under to confirm this causes no actual issues.

I also did the same but google play store still rejecting my app due to use of Full-screen intent permission.

Screenshot 2024-06-03 at 2 54 48 PM

My android/app/build/outputs/logs/manifest-merger-release-report.txt looks like

UmRAsLoE
mars-lan commented 5 months ago

Faced a similar issue with Play Store complaining about FULL_SCREEN_INTENT permission, and removing my app from the Play Store. So, I removed the permission manually from AndroidManifest.xml, and it works now.

<manifest
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools" <= ADD THIS LINE
  package="com.something">
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" tools:node="remove" />

source: https://stackoverflow.com/questions/49025927/react-native-remove-default-android-permissions

Confirming that this worked, android/app/build/outputs/logs/manifest-merger-release-report.txt shows that the USE_FULL_SCREEN_INTENT is REJECTED Will need to test on Android 14 and Android 12 or under to confirm this causes no actual issues.

I also did the same but google play store still rejecting my app due to use of Full-screen intent permission.

Screenshot 2024-06-03 at 2 54 48 PM

My android/app/build/outputs/logs/manifest-merger-release-report.txt looks like

UmRAsLoE

I can confirm that https://github.com/invertase/notifee/issues/1027#issuecomment-2050295835 works as expected. You can see the merged manifest in android/app/build/intermediates/merged_manifest.

The message on the Play Store is super confusing. If you click into it, you'll see that the declaration is for existing bundles, not the new bundle you're trying to upload. However, you can't proceed with the new upload until the declaration is made.

foreteesCaddie1 commented 5 months ago

This works. Thank you all.

AronBe commented 5 months ago

If anyone is wondering how to do it in Expo, you can simply set in android object: blockedPermissions: ['android.permission.USE_FULL_SCREEN_INTENT'],

List of permissions to block in the final AndroidManifest.xml. This is useful for removing permissions that are added by native package AndroidManifest.xml files which are merged into the final manifest. Internally this feature uses the tools:node="remove" XML attribute to remove permissions.

fmendez89 commented 5 months ago

If anyone is wondering how to do it in Expo, you can simply set in android object: blockedPermissions: ['android.permission.USE_FULL_SCREEN_INTENT'],

List of permissions to block in the final AndroidManifest.xml. This is useful for removing permissions that are added by native package AndroidManifest.xml files which are merged into the final manifest. Internally this feature uses the tools:node="remove" XML attribute to remove permissions.

I added to the app.json the _android.permission.USE_FULL_SCREENINTENT ,but when I uploaded de aab file, it stills shows the android.permission.USE_FULL_SCREEN_INTENT permission on the list of permissions. Strange.

Do I need anything else? prebuild?

EDIT: yep, a prebuild is needed

pke commented 5 months ago

Will this permission be removed from the notifee manifest now? It does not seem to be required for it to function?

eyu0415 commented 5 months ago

If anyone is wondering how to do it in Expo, you can simply set in android object: blockedPermissions: ['android.permission.USE_FULL_SCREEN_INTENT'],

List of permissions to block in the final AndroidManifest.xml. This is useful for removing permissions that are added by native package AndroidManifest.xml files which are merged into the final manifest. Internally this feature uses the tools:node="remove" XML attribute to remove permissions.

I added to the app.json the _android.permission.USE_FULL_SCREENINTENT ,but when I uploaded de aab file, it stills shows the android.permission.USE_FULL_SCREEN_INTENT permission on the list of permissions. Strange.

Do I need anything else? prebuild?

EDIT: yep, a prebuild is needed

Did you solved? the aab bundle still has permission.. file: manifest-merger-release-report.txt has follow lines

ADDED from project/android/app/src/main/AndroidManifest.xml:11:3-98
REJECTED from [app.notifee:core:202108261754] ~/.gradle/caches/transforms-4/c28e4249bb622db06eef1ba986aafe27/transformed/jetified-core-202108261754/AndroidManifest.xml:16:5-81
    tools:node
        ADDED from project/android/app/src/main/AndroidManifest.xml:11:77-96
    android:name
        ADDED from project/android/app/src/main/AndroidManifest.xml:11:20-76

even if set the below manifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
...
  <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" tools:node="remove"/>
...
fmendez89 commented 5 months ago

If anyone is wondering how to do it in Expo, you can simply set in android object: blockedPermissions: ['android.permission.USE_FULL_SCREEN_INTENT'],

List of permissions to block in the final AndroidManifest.xml. This is useful for removing permissions that are added by native package AndroidManifest.xml files which are merged into the final manifest. Internally this feature uses the tools:node="remove" XML attribute to remove permissions.

I added to the app.json the _android.permission.USE_FULL_SCREENINTENT ,but when I uploaded de aab file, it stills shows the android.permission.USE_FULL_SCREEN_INTENT permission on the list of permissions. Strange. Do I need anything else? prebuild? EDIT: yep, a prebuild is needed

Did you solved? the aab bundle still has permission.. file: manifest-merger-release-report.txt has follow lines

ADDED from project/android/app/src/main/AndroidManifest.xml:11:3-98
REJECTED from [app.notifee:core:202108261754] ~/.gradle/caches/transforms-4/c28e4249bb622db06eef1ba986aafe27/transformed/jetified-core-202108261754/AndroidManifest.xml:16:5-81
  tools:node
      ADDED from project/android/app/src/main/AndroidManifest.xml:11:77-96
  android:name
      ADDED from project/android/app/src/main/AndroidManifest.xml:11:20-76

even if set the below manifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
...
  <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" tools:node="remove"/>
...

When I run the expo prebuild it removed the permission from the manifest and when uploaded the aab, it showed that the permission was effectively removed in the Play Console.

FURY-PERSON commented 5 months ago

If anyone is wondering how to do it in Expo, you can simply set in android object: blockedPermissions: ['android.permission.USE_FULL_SCREEN_INTENT'],

List of permissions to block in the final AndroidManifest.xml. This is useful for removing permissions that are added by native package AndroidManifest.xml files which are merged into the final manifest. Internally this feature uses the tools:node="remove" XML attribute to remove permissions.

I added to the app.json the _android.permission.USE_FULL_SCREENINTENT ,but when I uploaded de aab file, it stills shows the android.permission.USE_FULL_SCREEN_INTENT permission on the list of permissions. Strange. Do I need anything else? prebuild? EDIT: yep, a prebuild is needed

Did you solved? the aab bundle still has permission.. file: manifest-merger-release-report.txt has follow lines

ADDED from project/android/app/src/main/AndroidManifest.xml:11:3-98
REJECTED from [app.notifee:core:202108261754] ~/.gradle/caches/transforms-4/c28e4249bb622db06eef1ba986aafe27/transformed/jetified-core-202108261754/AndroidManifest.xml:16:5-81
  tools:node
      ADDED from project/android/app/src/main/AndroidManifest.xml:11:77-96
  android:name
      ADDED from project/android/app/src/main/AndroidManifest.xml:11:20-76

even if set the below manifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
...
  <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" tools:node="remove"/>
...

This logs looks correct, the final androidManifest will not have USE_FULL_SCREEN_INTENT. To check this try to upload bundle to the Play Market and go thought bundle details (App bundle explorer). Here you can find all permissions that you are using in your app.

github-actions[bot] commented 4 months ago

Hello 👋, to help manage issues we automatically close stale issues.

This issue has been automatically marked as stale because it has not had activity for quite some time.Has this issue been fixed, or does it still require attention?

This issue will be closed in 15 days if no further activity occurs.

Thank you for your contributions.

taylorkline commented 4 months ago

This appears to be work-around-able but not fixed.

gagtic commented 4 months ago

Hi, having the same issue, can someone confirm if the library works fine after we remove the permission?

MohsinAtArbisoft commented 4 months ago

@gagtic the library works fine unless you have full screen notifications. (Alarm, calls etc)

taylorkline commented 4 months ago

@gagtic the library works fine unless you have full screen notifications. (Alarm, calls etc)

Confirmed on our end as well, we tested iOS and Android both with foreground and background notifications, no issues.

pke commented 4 months ago

What is s fullscreen notification? How is it triggered?

MohsinAtArbisoft commented 4 months ago

What is s fullscreen notification? How is it triggered?

Full Screen Notifications are notifications that cover the whole screen. Your app might need to display an urgent, time-sensitive message, such as an incoming phone call or a ringing alarm. In these situations, you can associate a full-screen intent with your notification.

When the notification is invoked, users see one of the following, depending on the device's lock status:

github-actions[bot] commented 3 months ago

Hello 👋, to help manage issues we automatically close stale issues.

This issue has been automatically marked as stale because it has not had activity for quite some time.Has this issue been fixed, or does it still require attention?

This issue will be closed in 15 days if no further activity occurs.

Thank you for your contributions.

hackily commented 3 months ago

This issue still exists. Will try the workaround

hochonin93 commented 2 months ago

This works for me "android": { "blockedPermissions": [ "android.permission.USE_FULL_SCREEN_INTENT" ] },

lakshayasachdeva commented 2 months ago

This is working. Those who are struggling might be adding it to the wrong manifest file. It has to be added in the main Manifest file i.e. android/app/src/main/AndroidManifest.xml