firebase - AngularFireMessaging requestPermission not functioning only on android cordova app - Stack Overflow

admin2025-04-16  1

I am working on an ionic cordova application, I have implemented the @angular/fire/compat/messaging plugin

I have the following code

requestPermission() {
console.log('requestPermission()');
this.afMessaging.requestPermission
  .subscribe(
    {
      next: (v) => console.log(v),
      error: (e) => console.error(e),
      complete: () => console.info('complete')
    }
  );

}

when I run the app using ionic serve this code works fine, it hits the next observable and grants permission however when i compile the app into an apk and run it on android. it dose not succeed, it only logs the "complete" message. and dose not throw an error or hit the next observable with a denied or a granted. It simply dose nothing.

when you go into app permissions you can go enable notifications manually however this dose not change the result. the same happens with all the afMessaging functions like getToken or requestToken

the firebase-messaging-sw.js is being regestered on mobile successfully and i assume everthing else is setup correctly as it works on browser.

my AndroidManifest.xml file is also as follows:

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" xmlns:android=";>
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:networkSecurityConfig="@xml/network_security_config" android:supportsRtl="true">
    <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode" android:exported="true" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@style/Theme.App.SplashScreen" android:windowSoftInputMode="adjustResize">
        <intent-filter android:label="@string/launcher_name">
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <provider android:authorities="${applicationId}.cdv.core.file.provider" android:exported="false" android:grantUriPermissions="true" android:name="androidx.core.content.FileProvider">
        <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/cdv_core_file_provider_paths" />
    </provider>
    <service android:exported="false" android:name="by.chemerisuk.cordova.firebase.FirebaseMessagingPluginService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
    <meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="default" />
</application>
<queries>
    <intent>
        <action android:name="android.media.action.IMAGE_CAPTURE" />
    </intent>
</queries>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
转载请注明原文地址:http://www.anycun.com/QandA/1744764192a87287.html