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

[firebase_messaging] PluginRegistrantCallback is not set on Android #2077

Closed
creativecreatorormaybenot opened this issue Feb 27, 2020 · 85 comments
Labels
impact: crowd Affects many people, though not necessarily a specific customer with an assigned label. (P2) platform: android Issues / PRs which are specifically for Android. plugin: messaging type: bug Something isn't working

Comments

@creativecreatorormaybenot
Copy link
Contributor

Fatal Exception: java.lang.RuntimeException
Unable to create service io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService: 
java.lang.RuntimeException: PluginRegistrantCallback is not set.

This is caused by:

Caused by java.lang.RuntimeException: PluginRegistrantCallback is not set.
       at io.flutter.plugins.firebasemessaging.
FlutterFirebaseMessagingService.executeDartCallbackInBackgroundIsolate(FlutterFirebaseMessagingService.java)
       at io.flutter.plugins.firebasemessaging.
FlutterFirebaseMessagingService.onCreate(FlutterFirebaseMessagingService.java)

This happens on Android when running a Flutter app built with firebase_messaging: 6.0.9 and Flutter 1.15.4-pre.199.


This also happens every time calling FirebaseMessaging.configure in the Flutter app when running on Android:

PlatformException(error, PluginRegistrantCallback is not set., null)
  StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7)
  MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:156:18)
<asynchronous suspension>
  MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:329:12)
  FirebaseMessaging.configure (package:firebase_messaging/firebase_messaging.dart:130:16)
@creativecreatorormaybenot creativecreatorormaybenot added the type: bug Something isn't working label Feb 27, 2020
@ClevercodeTech
Copy link

ClevercodeTech commented Mar 3, 2020

exact same issue. the error appears when using background notification.

``` `E/MethodChannel#plugins.flutter.io/firebase_messaging(12720): Failed to handle method call E/MethodChannel#plugins.flutter.io/firebase_messaging(12720): java.lang.RuntimeException: PluginRegistrantCallback is not set. E/MethodChannel#plugins.flutter.io/firebase_messaging(12720): at io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService.startBackgroundIsolate(FlutterFirebaseMessagingService.java:157) E/MethodChannel#plugins.flutter.io/firebase_messaging(12720): at io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin.onMethodCall(FirebaseMessagingPlugin.java:176) E/MethodChannel#plugins.flutter.io/firebase_messaging(12720): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:231) E/MethodChannel#plugins.flutter.io/firebase_messaging(12720): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:93) E/MethodChannel#plugins.flutter.io/firebase_messaging(12720): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:642) E/MethodChannel#plugins.flutter.io/firebase_messaging(12720): at android.os.MessageQueue.nativePollOnce(Native Method) E/MethodChannel#plugins.flutter.io/firebase_messaging(12720): at android.os.MessageQueue.next(MessageQueue.java:326) E/MethodChannel#plugins.flutter.io/firebase_messaging(12720): at android.os.Looper.loop(Looper.java:160) E/MethodChannel#plugins.flutter.io/firebase_messaging(12720): at android.app.ActivityThread.main(ActivityThread.java:6669) E/MethodChannel#plugins.flutter.io/firebase_messaging(12720): at java.lang.reflect.Method.invoke(Native Method) E/MethodChannel#plugins.flutter.io/firebase_messaging(12720): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) E/MethodChannel#plugins.flutter.io/firebase_messaging(12720): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

I/mattuvandi.use(12720): Background concurrent copying GC freed 18711(1011KB) AllocSpace objects, 12(304KB) LOS objects, 50% free, 2MB/4MB, paused 11.526ms total 155.904ms

E/flutter (12720): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(error, PluginRegistrantCallback is not set., null)
E/flutter (12720): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7)
E/flutter (12720): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:321:33)
E/flutter (12720):
E/flutter (12720): #2 FirebaseMessaging.configure (package:firebase_messaging/firebase_messaging.dart:130:16)
E/flutter (12720): #3 firebaseNotification (package:Mattuvandi/app_screens/home/Home.dart:432:27)
E/flutter (12720): #4 _HomeState.build (package:Mattuvandi/app_screens/home/Home.dart:48:7)
E/flutter (12720): #5 StatefulElement.build (package:flutter/src/widgets/framework.dart:4334:27)
E/flutter (12720): #6 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4223:15)
E/flutter (12720): #7 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
E/flutter (12720): #8 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
E/flutter (12720): #9 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
E/flutter (12720): #10 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
E/flutter (12720): #11 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (12720): #12 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (12720): #13 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
E/flutter (12720): #14 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (12720): #15 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (12720): #16 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
E/flutter (12720): #17 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
E/flutter (12720): #18 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
E/flutter (12720): #19 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
E/flutter (12720): #20 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (12720): #21 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (12720): #22 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
E/flutter (12720): #23 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (12720): #24 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (12720): #25 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
E/flutter (12720): #26 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (12720): #27 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (12720): #28 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
E/flutter (12720): #29 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
E/flutter (12720): #30 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
E/flutter (12720): #31 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
E/flutter (12720): #32 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5)
E/flutter (12720): #33 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (12720): #34 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (12720): #35 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
E/flutter (12720): #36 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (12720): #37 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (12720): #38 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14)
E/flutter (12720): #39 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14)
E/flutter (12720): #40 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12)
E/flutter (12720): #41 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16)
E/flutter (12720): #42 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5)
E/flutter (12720): #43 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5)
E/flutter (12720): #44 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11)
E/flutter (12720): #45 Com`

</details>

@azabazay
Copy link

same issue, is there any solution yet?

@h0x539
Copy link

h0x539 commented Mar 15, 2020

Application.java replace:
public class Application extends FlutterApplication implements PluginRegistrantCallback {
  @Override
  public void onCreate() {
    super.onCreate();
    FlutterFirebaseMessagingService.setPluginRegistrant(this);
  }

  @Override
  public void registerWith(PluginRegistry registry) {
    GeneratedPluginRegistrant.registerWith(registry);
  }
}
Application.java with:
import io.flutter.app.FlutterApplication;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService;
import io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin;

public class Application extends FlutterApplication implements PluginRegistrantCallback {

    @Override
    @CallSuper
    public void onCreate() {
        super.onCreate();
        FlutterFirebaseMessagingService.setPluginRegistrant(this);
    }

    @Override
    public void registerWith(PluginRegistry pluginRegistry) {
        FirebaseMessagingPlugin.registerWith(pluginRegistry.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"));
    }
}

@ClevercodeTech
Copy link

ClevercodeTech commented Mar 16, 2020

I run in to error while using @callsuper. As per android document it is deprecated.
with your suggested code i get same error.

manifest.xml:

`
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
     calls FlutterMain.startInitialization(this); in its onCreate method.
     In most cases you can leave this as-is, but you if you want to provide
     additional functionality it is fine to subclass or reimplement
     FlutterApplication and put your custom class here. -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />       
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<application
    android:name="io.flutter.app.FlutterApplication"
    android:label="Mattuvandi"
    android:icon="@mipmap/ic_launcher">
 
     <meta-data android:name="com.google.android.geo.API_KEY"
           android:value="*************************************"/>               
    <activity
        android:name=".MainActivity"
        android:launchMode="singleTop"
        android:theme="@style/LaunchTheme"
        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
        android:hardwareAccelerated="true"
        android:windowSoftInputMode="adjustResize">
        <!-- This keeps the window background of the activity showing
             until Flutter renders its first frame. It can be removed if
             there is no splash screen (such as the default splash screen
             defined in @style/LaunchTheme). -->
        <meta-data
            android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
            android:value="true" />
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
          <intent-filter>
            <action android:name="FLUTTER_NOTIFICATION_CLICK" />
            <category android:name="android.intent.category.DEFAULT" />
          </intent-filter>
    </activity>    
     <activity android:name=".Application"
              android:launchMode="singleTop"
              android:theme="@android:style/Theme.Black.NoTitleBar"
              android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection"
              android:hardwareAccelerated="true"
              android:windowSoftInputMode="adjustResize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>     
</application>   

`

Mainactivity.Java
import android.os.Bundle;
import io.flutter.app.FlutterActivity;
import io.flutter.plugins.GeneratedPluginRegistrant;

public class MainActivity extends FlutterActivity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    GeneratedPluginRegistrant.registerWith(this); //auto generated?
  }
}

Application.java

```` package com.mattuvandi.user; import android.os.Bundle; import io.flutter.app.FlutterApplication; import io.flutter.app.FlutterActivity; import io.flutter.plugin.common.PluginRegistry; import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback; import io.flutter.plugins.GeneratedPluginRegistrant; import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService; import io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin;

public class Application extends FlutterApplication implements PluginRegistrantCallback {
@OverRide
// @callsuper
public void onCreate() {
super.onCreate();
FlutterFirebaseMessagingService.setPluginRegistrant(this);
}

@OverRide
public void registerWith(PluginRegistry pluginRegistry) {
FirebaseMessagingPlugin.registerWith(pluginRegistry.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"));
}
}````

Error:

````E/MethodChannel#plugins.flutter.io/firebase_messaging(14771): Failed to handle method call E/MethodChannel#plugins.flutter.io/firebase_messaging(14771): java.lang.RuntimeException: PluginRegistrantCallback is not set. E/MethodChannel#plugins.flutter.io/firebase_messaging(14771): at io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService.startBackgroundIsolate(FlutterFirebaseMessagingService.java:157) E/MethodChannel#plugins.flutter.io/firebase_messaging(14771): at io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin.onMethodCall(FirebaseMessagingPlugin.java:176) E/MethodChannel#plugins.flutter.io/firebase_messaging(14771): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:231) E/MethodChannel#plugins.flutter.io/firebase_messaging(14771): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:93) E/MethodChannel#plugins.flutter.io/firebase_messaging(14771): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:642) E/MethodChannel#plugins.flutter.io/firebase_messaging(14771): at android.os.MessageQueue.nativePollOnce(Native Method) E/MethodChannel#plugins.flutter.io/firebase_messaging(14771): at android.os.MessageQueue.next(MessageQueue.java:326) E/MethodChannel#plugins.flutter.io/firebase_messaging(14771): at android.os.Looper.loop(Looper.java:160) E/MethodChannel#plugins.flutter.io/firebase_messaging(14771): at android.app.ActivityThread.main(ActivityThread.java:6669) E/MethodChannel#plugins.flutter.io/firebase_messaging(14771): at java.lang.reflect.Method.invoke(Native Method) E/MethodChannel#plugins.flutter.io/firebase_messaging(14771): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) E/MethodChannel#plugins.flutter.io/firebase_messaging(14771): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) I/flutter (14771): Login Status true I/mattuvandi.use(14771): Background concurrent copying GC freed 12428(1431KB) AllocSpace objects, 23(684KB) LOS objects, 49% free, 2024KB/3MB, paused 1.106ms total 237.579ms E/flutter (14771): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(error, PluginRegistrantCallback is not set., null) E/flutter (14771): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7) E/flutter (14771): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:321:33) E/flutter (14771): E/flutter (14771): #2 FirebaseMessaging.configure (package:firebase_messaging/firebase_messaging.dart:130:16) E/flutter (14771): #3 firebaseNotification (package:Mattuvandi/app_screens/home/Home.dart:432:27) E/flutter (14771): #4 _HomeState.build (package:Mattuvandi/app_screens/home/Home.dart:48:7) E/flutter (14771): #5 StatefulElement.build (package:flutter/src/widgets/framework.dart:4334:27) E/flutter (14771): #6 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4223:15) E/flutter (14771): #7 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5) E/flutter (14771): #8 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5) E/flutter (14771): #9 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11) E/flutter (14771): #10 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5) E/flutter (14771): #11 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) E/flutter (14771): #12 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) E/flutter (14771): #13 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14) E/flutter (14771): #14 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) E/flutter (14771): #15 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) E/flutter (14771): #16 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16) E/flutter (14771): #17 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5) E/flutter (14771): #18 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5) E/flutter (14771): #19 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5) E/flutter (14771): #20 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) E/flutter (14771): #21 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) E/flutter (14771): #22 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14) E/flutter (14771): #23 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) E/flutter (14771): #24 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) E/flutter (14771): #25 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14) E/flutter (14771): #26 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) E/flutter (14771): #27 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) E/flutter (14771): #28 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16) E/flutter (14771): #29 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5) E/flutter (14771): #30 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5) E/flutter (14771): #31 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11) E/flutter (14771): #32 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4201:5) E/flutter (14771): #33 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) E/flutter (14771): #34 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) E/flutter (14771): #35 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14) E/flutter (14771): #36 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) E/flutter (14771): #37 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) E/flutter (14771): #38 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5445:14) E/flutter (14771): #39 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3194:14) E/flutter (14771): #40 Element.updateChild (package:flutter/src/widgets/framework.dart:2988:12) E/flutter (14771): #41 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4243:16) E/flutter (14771): #42 Element.rebuild (package:flutter/src/widgets/framework.dart:3947:5) E/flutter (14771): #43 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4206:5) E/flutter (14771): #44 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4381:11) ````

@creativecreatorormaybenot
Copy link
Contributor Author

@ClevercodeTech @h0x539 Could you maybe wrap your code into a <details> </details> to make this thread more readable?

@ClevercodeTech
Copy link

@ClevercodeTech @h0x539 Could you maybe wrap your code into a <details> </details> to make this thread more readable?

thanks for the suggestion. Updated as per your suggestion.

@h0x539
Copy link

h0x539 commented Mar 27, 2020

@ClevercodeTech

Try to make a standalone build of the android module.

Android Studio -> right click on android package -> Flutter -> Open Android module in Android Studio

Flutter Android module in Android Studio -> Terminal -> ./gradlew clean && ./gradlew build

@ClevercodeTech
Copy link

Resolved the issue. Flutter instruction was not clear or i didn't get what they were saying.
i changed the following line in the beginning of my manifest.xml:

android:name="io.flutter.app.FlutterApplication"

to

android:name=".Application"

<application
android:name="io.flutter.app.FlutterApplication"
android:name=".Application"
android:label="Mattuvandi"
android:icon="@mipmap/ic_launcher">


















@kalibu
Copy link

kalibu commented Mar 31, 2020

I did it and the error is out, but it is not calling the onBackgroundMessage anymore.

@helenaford helenaford added platform: android Issues / PRs which are specifically for Android. plugin: messaging labels Apr 20, 2020
@helenaford
Copy link
Contributor

Closing this issue because it looks like it's resolved.

@kalibu if you are still experiencing issues calling the onBackgroundMessage with the latest version of Flutter and FlutterFire plugin, can you please provide your updated flutter doctor -v
and your flutter run --verbose/flutter build --verbose ?
Also, to better address the issue, would be helpful
if you could post a self contained app on github
or the steps to reproduce it.
Thank you

@creativecreatorormaybenot
Copy link
Contributor Author

@helenaford

This has not been resolved at all.
Hint: there has not been an update to the plugin (on Android) since I opened this issue. I only replaced one deprecated method that had nothing to do with this, so basically there has not been an update since I opened the issue..

@helenaford
Copy link
Contributor

helenaford commented Apr 20, 2020

@creativecreatorormaybenot did you try the solution provided by @ClevercodeTech ?

@helenaford helenaford reopened this Apr 20, 2020
@creativecreatorormaybenot
Copy link
Contributor Author

@helenaford That "solution" only makes the error message go away and does not fix the underlying problem (the plugin is broken on Android, see #2017 for a start; there are way more issues for background messages).

The plugin would at least need to address this somewhere. Even if the underlying problem is not fixed immediately, the README section and more would need to be updated.

@ClevercodeTech
Copy link

@helenaford That "solution" only makes the error message go away and does not fix the underlying problem (the plugin is broken on Android, see #2017 for a start; there are way more issues for background messages).

The plugin would at least need to address this somewhere. Even if the underlying problem is not fixed immediately, the README section and more would need to be updated.

Background message works for me.

you need to add a static method to capture the incoming message from firebase server. Below is a sample code

static Future<dynamic> myBackgroundMessageHandler(Map<String, dynamic> message) async { print(message); return Future<void>.value(); }

below is the detailed code

 import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:flutter/material.dart';
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();

class FirebaseClass {

 firebaseNotification(context,topic ) {
   var platform = Theme.of(context).platform;
   final requestServer = RequestServer();
   print("firebaseinitiated");
   _firebaseMessaging.subscribeToTopic(topic);
   _firebaseMessaging.configure(
     onMessage: (Map<String, dynamic> message) async {
       print("onMessage: $message");
     },
     onBackgroundMessage: platform == TargetPlatform.iOS ? null : myBackgroundMessageHandler,
     onLaunch: (Map<String, dynamic> message) async {
       print("onLaunch: $message");
     },
     onResume: (Map<String, dynamic> message) async {
       print("onResume: $message");
     },
   );
   if (platform == TargetPlatform.iOS) {
     _firebaseMessaging
         .requestNotificationPermissions(const IosNotificationSettings(sound: true, badge: true, alert: true));
     _firebaseMessaging.onIosSettingsRegistered.listen((IosNotificationSettings settings) {
       print("Settings registered: $settings");
     });
   }
   _firebaseMessaging.getToken().then((String token) {
     assert(token != null);
  //setting fire base toke in own server this is needed to message from your server
// requestServer is a custom class to connect with my server
     requestServer.requestServer("SetFirebaseToken", context).then((e) {
       e == 1 ? print("Push Messaging token: $token") : print("errror sending data to server");
     });
   });

 }

 notification() async {
   FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();
   var initializationSettingsAndroid = new AndroidInitializationSettings('logo');
   var initializationSettingsIOS = new IOSInitializationSettings();
   var initializationSettings = new InitializationSettings(initializationSettingsAndroid, initializationSettingsIOS);
   flutterLocalNotificationsPlugin.initialize(
     initializationSettings, 
   );
   var androidPlatformChannelSpecifics = AndroidNotificationDetails(
       'your channel id', 'your channel name', 'your channel description',
       importance: Importance.Max, priority: Priority.High, ticker: 'ticker');
   var iOSPlatformChannelSpecifics = IOSNotificationDetails();
   var platformChannelSpecifics = NotificationDetails(androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
   await flutterLocalNotificationsPlugin.show(0, 'plain title', 'plain body', platformChannelSpecifics,
       payload: 'item x');
 }

 static Future<dynamic> myBackgroundMessageHandler(Map<String, dynamic> message) async {
   print(message);
   return Future<void>.value();
 }

}

@creativecreatorormaybenot
Copy link
Contributor Author

@ClevercodeTech

If that works with all versions (Flutter beta + master too), then I suppose that would be a solution.
Still, the issue should remain open until this is at least integrated into the README.

@demon-zhonglin
Copy link

@ClevercodeTech Can you provide detailed instructions?

@ClevercodeTech
Copy link

ClevercodeTech commented Apr 24, 2020

@ClevercodeTech Can you provide detailed instructions?

Please follow the instruction as shown in the following link
https://pub.dev/packages/firebase_messaging

for receiving background message.
importantly you need to change your android manifest.

usually flutter application starts like this

<application
    android:name="io.flutter.app.FlutterApplication"

you need to change the name to below

<application android:name=".Application" ...>

.Application refers to Application.java. Which contains below.
package com.mattuvandi.user is my application. This should be changed to yours. e.g

package com.domain.application

package com.mattuvandi.user; 
import android.os.Bundle; 
import io.flutter.app.FlutterApplication; 
import io.flutter.app.FlutterActivity;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService;
import io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin;

public class Application extends FlutterApplication implements PluginRegistrantCallback {
@override
public void onCreate() {
super.onCreate();
FlutterFirebaseMessagingService.setPluginRegistrant(this);
}

@override
public void registerWith(PluginRegistry pluginRegistry) {
FirebaseMessagingPlugin.registerWith(pluginRegistry.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"));
}
}

@lexdevel
Copy link

Doesn't work for me. Tried to switch branch from stable to master, didn't help.

@ClevercodeTech
Copy link

Doesn't work for me. Tried to switch branch from stable to master, didn't help.

could you please post your code.

@lexdevel
Copy link

Sure.

// Application.kt

class Application : FlutterApplication(), PluginRegistry.PluginRegistrantCallback {
    override fun onCreate() {
        super.onCreate()
        FlutterFirebaseMessagingService.setPluginRegistrant(this);
        // ...
    }

    override fun registerWith(registry: PluginRegistry?) {
        FirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"))
        // ...
    }
}
// AndroidManifest.xml

<application
    android:name=".Application" // Changed from `io.flutter.app.FlutterApplication`
    ... />
// build.gradle under app

// ...

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    implementation 'com.google.firebase:firebase-messaging:20.1.6'

    // ...
}

@ClevercodeTech
Copy link

have you included

// under [project]/android/app/build.gradle
apply plugin: 'com.google.gms.google-services'

@lexdevel
Copy link

lexdevel commented May 5, 2020

Yes.

// under [project]/android/build.gradle
buildscript {
    ext.kotlin_version = '1.3.72'

    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.3'
        classpath 'com.google.gms:google-services:4.3.3'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
// under [project]/android/app/build.gradle
// ...
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

@ClevercodeTech
Copy link

@lexdevel

Not sure if this helps. But i added activity tag as below in manifest.

<activity android:name=".Application"
   android:launchMode="singleTop"
   android:theme="@android:style/Theme.Black.NoTitleBar"
          android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection"
   android:hardwareAccelerated="true"
   android:windowSoftInputMode="adjustResize">
   <intent-filter>
       <action android:name="android.intent.action.MAIN"/>
       <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
   <intent-filter>
       <action android:name="FLUTTER_NOTIFICATION_CLICK" />
       <category android:name="android.intent.category.DEFAULT" />
   </intent-filter>
</activity>   

@lexdevel
Copy link

lexdevel commented May 5, 2020

@ClevercodeTech, thanks, unfortunately I have pretty similar config.

@yourshinsuke
Copy link

Unable to create service io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService: java.lang.RuntimeException: PluginRegistrantCallback is not set.

@yourshinsuke
Copy link

how to fix?
Does Google Engineer develop?

@cuongvue
Copy link

have the same issue on android only, setting Background Message resolves the issue

@rochi88
Copy link

rochi88 commented Oct 5, 2020

@Bretie, Kotlin worked for me. The procedure is the following:

  1. Improve android/app/build.gradle file:
// At the bottom of the file, you will find a `dependencies` section

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    // Required for firebase messaging
    implementation 'com.google.firebase:firebase-messaging:20.1.6'
}
  1. Create an Application class
package YOUR_PACKAGE_NAME

import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry
import io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService

class Application : FlutterApplication(), PluginRegistry.PluginRegistrantCallback {
    override fun onCreate() {
        super.onCreate()
        FlutterFirebaseMessagingService.setPluginRegistrant(this);
    }

    override fun registerWith(registry: PluginRegistry?) {
        FirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"))
    }
}
  1. In AndroidManifest.xml improve the application tag:
<!-- FROM -->
<application android:name="io.flutter.app.FlutterApplication" ... />

<!-- TO -->
<application android:name=".Application" ... />
  1. In the dart code make sure the onBackgroundMessage callback is static or out of class function.
Future<dynamic> _onBackgroundMessage(Map<String, dynamic> message) async {
  debugPrint('On background message $message');
  return Future<void>.value();
}

class _WhateverState extends State<Whatever> {
  final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();

  @override
  void initState() {
    super.initState();
    _firebaseMessaging.configure(
      onBackgroundMessage: _onBackgroundMessage,
      // ...
    );
  }
}

Thanks so much you save my life

This one worked for me

@TahaTesser TahaTesser added the impact: crowd Affects many people, though not necessarily a specific customer with an assigned label. (P2) label Oct 20, 2020
@signshah
Copy link

signshah commented Oct 28, 2020

My app crashes when app is in the background or not running and receives notification.

The official flutter migration guide (https://firebase.flutter.dev/docs/migration/) is saying the following.

Ensure that you're not manually importing any Firebase Android SDK dependencies in your android/app/build.gradle files dependencies { ... } section.

e.g. remove any lines similar to: implementation 'com.google.firebase:firebase-{PRODUCT}:{VERSION}

But the solution says that we need to add the com.google.firebase:firebase-messaging to the gradle file.

@xlcod
Copy link

xlcod commented Nov 6, 2020

How did you resolved? now using new flutter dependency : firebase_messaging: "^8.0.0-dev.6"

@jgithaiga
Copy link

@xlcod I followed the migration guide and on dart code I have:

// Define a top-level named handler which background/terminated messages will call.
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  print('_firebaseMessagingBackgroundHandler > message: $message');
  // call `initializeApp` before using other Firebase services.
 
  ...
}

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  // Set the background messaging handler early on, as a named top-level function
  FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);

  ...
}

@pratamatama
Copy link

My app crashes when app is in the background or not running and receives notification.

The official flutter migration guide (https://firebase.flutter.dev/docs/migration/) is saying the following.

Ensure that you're not manually importing any Firebase Android SDK dependencies in your android/app/build.gradle files dependencies { ... } section.

e.g. remove any lines similar to: implementation 'com.google.firebase:firebase-{PRODUCT}:{VERSION}

But the solution says that we need to add the com.google.firebase:firebase-messaging to the gradle file.

I also get confused by this. The readme on pub.dev is totally different with one on FlutterFire's migration guide.
Solution given by @lexdevel 's procedure works for me so I'll stick with it.

@jpiabrantes
Copy link

Using the new version 8.0.0-dev.10

I am getting these errors:

Running Gradle task 'assembleDebug'...
Application.kt: (5, 27): Unresolved reference: firebasemessaging
Application.kt: (6, 27): Unresolved reference: firebasemessaging
Application.kt: (11, 9): Unresolved reference: FlutterFirebaseMessagingService
Application.kt: (15, 9): Unresolved reference: FirebaseMessagingPlugin

@mahdismall9
Copy link

Solution !
change manifest!

<application
...
android:name=".Application">
<activity
android:name=".MainActivity"
....>

@z85510
Copy link

z85510 commented Dec 29, 2020

Using the new version 8.0.0-dev.10

I am getting these errors:

Running Gradle task 'assembleDebug'...
Application.kt: (5, 27): Unresolved reference: firebasemessaging
Application.kt: (6, 27): Unresolved reference: firebasemessaging
Application.kt: (11, 9): Unresolved reference: FlutterFirebaseMessagingService
Application.kt: (15, 9): Unresolved reference: FirebaseMessagingPlugin

Same problem

Solution :
In the new version no need to register anything in the platform side.

@Akiat
Copy link

Akiat commented Jan 7, 2021

Using the new version 8.0.0-dev.10

I am getting these errors:

Running Gradle task 'assembleDebug'...
Application.kt: (5, 27): Unresolved reference: firebasemessaging
Application.kt: (6, 27): Unresolved reference: firebasemessaging
Application.kt: (11, 9): Unresolved reference: FlutterFirebaseMessagingService
Application.kt: (15, 9): Unresolved reference: FirebaseMessagingPlugin

Same here

@z85510
Copy link

z85510 commented Jan 7, 2021

Using the new version 8.0.0-dev.10
I am getting these errors:

Running Gradle task 'assembleDebug'...
Application.kt: (5, 27): Unresolved reference: firebasemessaging
Application.kt: (6, 27): Unresolved reference: firebasemessaging
Application.kt: (11, 9): Unresolved reference: FlutterFirebaseMessagingService
Application.kt: (15, 9): Unresolved reference: FirebaseMessagingPlugin

Same here

You have to delete platform initialization, in the new version you don't need to add any code in android platform.

@DeanPack
Copy link

Using the new version 8.0.0-dev.10
I am getting these errors:

Running Gradle task 'assembleDebug'...
Application.kt: (5, 27): Unresolved reference: firebasemessaging
Application.kt: (6, 27): Unresolved reference: firebasemessaging
Application.kt: (11, 9): Unresolved reference: FlutterFirebaseMessagingService
Application.kt: (15, 9): Unresolved reference: FirebaseMessagingPlugin

Same here

You have to delete platform initialization, in the new version you don't need to add any code in android platform.
I've removed the platform initialization and the app will run again, but I now have an issue that the background channel isn't working. I added this in my android manifest to set up the notification channel:

and then in strings.xml, I add 9c81f06, but I'm still getting errors. Here is the error I'm getting.
W/FirebaseMessaging( 4261): Notification Channel set in AndroidManifest.xml has not been created by the app. Default value will be used.
E/CloudMessagingReceiver( 4261): Notification pending intent canceled
W/ConnectionTracker( 4261): Exception thrown while unbinding
W/ConnectionTracker( 4261): java.lang.IllegalArgumentException: Service not registered: ls@9c81f06

@DeanPack
Copy link

if I take out the notification channels setup stuff, I get this error
W/FirebaseMessaging( 5109): Missing Default Notification Channel metadata in AndroidManifest. Default value will be used.
E/CloudMessagingReceiver( 5109): Notification pending intent canceled
W/ConnectionTracker( 5109): Exception thrown while unbinding
W/ConnectionTracker( 5109): java.lang.IllegalArgumentException: Service not registered: ls@c3c65e1

@obadajasm
Copy link

obadajasm commented Feb 20, 2021

Using the new version 8.0.0-dev.10

I am getting these errors:

Running Gradle task 'assembleDebug'...
Application.kt: (5, 27): Unresolved reference: firebasemessaging
Application.kt: (6, 27): Unresolved reference: firebasemessaging
Application.kt: (11, 9): Unresolved reference: FlutterFirebaseMessagingService
Application.kt: (15, 9): Unresolved reference: FirebaseMessagingPlugin

change your imports to
import io.flutter.plugins.firebase.messaging
insted of
import io.flutter.plugin.firebasemessaging

@obadajasm
Copy link

That's what worked for me
Change your Application.kt to
note the imports

package com.domain.example

import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry

import io.flutter.plugins.firebase.messaging.FlutterFirebaseMessagingPlugin

class Application() : FlutterApplication(), PluginRegistry.PluginRegistrantCallback {
  override fun registerWith(registry: PluginRegistry?) {
      val key: String? = FlutterFirebaseMessagingPlugin::class.java.canonicalName
      if (!registry?.hasPlugin(key)!!) {
          FlutterFirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebase.messaging.FlutterFirebaseMessagingPlugin"));
        }
    }
}

dont forget to change your AndroridManifest.xml

   <application
       android:name=".Application"
       ...

if you receiving a blank body/title message you may try this workaround here

@Darksoulsong
Copy link

package YOUR_PACKAGE_NAME

import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry
import io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService

class Application : FlutterApplication(), PluginRegistry.PluginRegistrantCallback {
    override fun onCreate() {
        super.onCreate()
        FlutterFirebaseMessagingService.setPluginRegistrant(this);
    }

    override fun registerWith(registry: PluginRegistry?) {
        FirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"))
    }
}

Where should I create the Application.java file? Same directory as google-services.json?

@lexdevel
Copy link

@Darksoulsong, right near the MainActivity.java file.

@codewithaquib
Copy link

@Bretie, Kotlin worked for me. The procedure is the following:

  1. Improve android/app/build.gradle file:
// At the bottom of the file, you will find a `dependencies` section

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    // Required for firebase messaging
    implementation 'com.google.firebase:firebase-messaging:20.1.6'
}
  1. Create an Application class
package YOUR_PACKAGE_NAME

import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry
import io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService

class Application : FlutterApplication(), PluginRegistry.PluginRegistrantCallback {
    override fun onCreate() {
        super.onCreate()
        FlutterFirebaseMessagingService.setPluginRegistrant(this);
    }

    override fun registerWith(registry: PluginRegistry?) {
        FirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"))
    }
}
  1. In AndroidManifest.xml improve the application tag:
<!-- FROM -->
<application android:name="io.flutter.app.FlutterApplication" ... />

<!-- TO -->
<application android:name=".Application" ... />
  1. In the dart code make sure the onBackgroundMessage callback is static or out of class function.
Future<dynamic> _onBackgroundMessage(Map<String, dynamic> message) async {
  debugPrint('On background message $message');
  return Future<void>.value();
}

class _WhateverState extends State<Whatever> {
  final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();

  @override
  void initState() {
    super.initState();
    _firebaseMessaging.configure(
      onBackgroundMessage: _onBackgroundMessage,
      // ...
    );
  }
}

@lexdevel - This worked for me! I am not sure if the notifications are loading yet but at least I got around to building a working APK! Thanks again!

@russellwheatley
Copy link
Member

Hey @creativecreatorormaybenot, are you still experiencing the same problem using the latest messaging version: 9.1.2?

@bonaparta13
Copy link

still same error with latest version of the fcm package firebase_messaging 10.0.0

@omarreess
Copy link

After A lot of searching . The problem is from this import
io.flutter.plugins.firebasemessaging
it changed to
io.flutter.plugins.firebase.messaging

this is Kotlin Applictaion class replace it with yours (credits to Obadajasm)

package com.domain.example

import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry

import io.flutter.plugins.firebase.messaging.FlutterFirebaseMessagingPlugin

class Application() : FlutterApplication(), PluginRegistry.PluginRegistrantCallback {
  override fun registerWith(registry: PluginRegistry?) {
      val key: String? = FlutterFirebaseMessagingPlugin::class.java.canonicalName
      if (!registry?.hasPlugin(key)!!) {
          FlutterFirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebase.messaging.FlutterFirebaseMessagingPlugin"));
        }
    }
}

@Johnconfit
Copy link

// In your Application.java, Try this, it works for me

import io.flutter.app.FlutterApplication;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugins.firebase.messaging.FlutterFirebaseMessagingBackgroundService;

public class Application extends FlutterApplication implements PluginRegistrantCallback {
// ...
@OverRide
public void onCreate() {
super.onCreate();
FlutterFirebaseMessagingBackgroundService.setPluginRegistrant(this);
}

@OverRide
public void registerWith(PluginRegistry registry) {
GeneratedPluginRegistrant.registerWith((FlutterEngine) registry);
}
// ...
}

// In your manifeste make sure to change android:name="io.flutter.app.FlutterApplication" to android:name=".Application"

// from official manual : https://firebase.flutter.dev/docs/messaging/overview/
// I hope that will help.

@MohammedHussein5
Copy link

// In your Application.java, Try this, it works for me

import io.flutter.app.FlutterApplication; import io.flutter.embedding.engine.FlutterEngine; import io.flutter.plugin.common.PluginRegistry; import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback; import io.flutter.plugins.GeneratedPluginRegistrant; import io.flutter.plugins.firebase.messaging.FlutterFirebaseMessagingBackgroundService;

public class Application extends FlutterApplication implements PluginRegistrantCallback { // ... @OverRide public void onCreate() { super.onCreate(); FlutterFirebaseMessagingBackgroundService.setPluginRegistrant(this); }

@OverRide public void registerWith(PluginRegistry registry) { GeneratedPluginRegistrant.registerWith((FlutterEngine) registry); } // ... }

// In your manifeste make sure to change android:name="io.flutter.app.FlutterApplication" to android:name=".Application"

// from official manual : https://firebase.flutter.dev/docs/messaging/overview/ // I hope that will help.

I don't see this line in my android manifest ( android:name="io.flutter.app.FlutterApplication" to android:name=".Application" )

@russellwheatley
Copy link
Member

Closing this issue as it is no longer a problem on the latest firebase_messaging plugin & flutter versions.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
impact: crowd Affects many people, though not necessarily a specific customer with an assigned label. (P2) platform: android Issues / PRs which are specifically for Android. plugin: messaging type: bug Something isn't working
Projects
None yet
Development

No branches or pull requests