Skip to content

[firebase_messaging] No documentation for Android v2 embedding backgroundMessage handler #1775

Closed
@VictorUvarov

Description

@VictorUvarov

Describe the bug
Currently the documentation does NOT support the new Flutter Android v2 embedding that came along with flutter 1.12.13. The function GeneratedPluginRegistrant.registerWith(registry); no longer accepts a io.flutter.plugin.common.PluginRegistry object, but a io.flutter.embedding.engine.FlutterEngine object.

Current code in documentation:

 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;

 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);
   }
 }

Newer code attempt with error:

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

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

    @Override
    public void registerWith(PluginRegistry registry) {
        GeneratedPluginRegistrant.registerWith(registry); // ERROR: Expects io.flutter.embedding.engine.FlutterEngine
    }
}

To Reproduce
Steps to reproduce the behavior:

  1. Run flutter create -a java example
  2. Follow firebase_messaging background messaging instructions
  3. Notice GeneratedPluginRegistrant.registerWith(registry) no longer expects a PluginRegistry type

Activity

added
type: documentationImprovements or additions to documentation
and removed
type: bugSomething isn't working
on Jan 8, 2020
stoppiNeobiz

stoppiNeobiz commented on Jan 26, 2020

@stoppiNeobiz

any solution for this error?

sgehrman

sgehrman commented on Jan 27, 2020

@sgehrman

same issue

gakubhat

gakubhat commented on Jan 29, 2020

@gakubhat

Solved it with following:
app/src/build.gradle
add the following:
implementation "com.google.firebase:firebase-messaging:20.1.0"
Application.kt

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

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

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


}
woprandi

woprandi commented on Feb 19, 2020

@woprandi

That would be better to get an official fix and not have to do a workaround with potential side effect

woprandi

woprandi commented on Feb 20, 2020

@woprandi

I have another issue with the @gakubhat workaround (#116)
I followed this workaround : https://www.djamware.com/post/5e4b26e26cdeb308204b427f/flutter-tutorial-firebase-cloud-messaging-fcm-push-notification

Frustrating to have so many issues on a important plugin...

added
impact: crowdAffects many people, though not necessarily a specific customer with an assigned label. (P2)
on Feb 28, 2020
Zazo032

Zazo032 commented on May 15, 2020

@Zazo032
Contributor

@Ehesp hi, is there any ETA for solving this?

FabulousGee

FabulousGee commented on Jul 28, 2020

@FabulousGee

This issue has been opened about half a year ago and still not under real investigation? C'mon guys, this is a real show stopper, especially for newbies that want to get into this stuff...

Just set up a new, standard flutter project and follow the current documentation. It won't work...

kroikie

kroikie commented on Jul 29, 2020

@kroikie
Collaborator

@ALL Sorry about the delay here, we are currently working on updating the messaging plugin, the documentation will be updated according to those final updates. We should have more on this very soon.

videjunior

videjunior commented on Aug 10, 2020

@videjunior

É só você usar o PluginRegistry.PluginRegistrantCallback dessa forma:

class FirebaseCloudMessagingPluginRegistrant {
    companion object {
        fun registerWith(registry: PluginRegistry) {
            if (alreadyRegisteredWith(registry)) {
                return;
            }
            FirebaseMessagingPlugin.registerWith(registry.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"))
        }

        fun alreadyRegisteredWith(registry: PluginRegistry): Boolean {
            val key = FirebaseCloudMessagingPluginRegistrant::class.java.name
            if (registry.hasPlugin(key)) {
                return true
            }
            registry.registrarFor(key)
            return false
        }
    }
}
class MainActivity : FlutterActivity(), PluginRegistry.PluginRegistrantCallback {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        FlutterFirebaseMessagingService.setPluginRegistrant(this)
    }

    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine)
    }

    override fun registerWith(registry: PluginRegistry?) {
        registry?.let { FirebaseCloudMessagingPluginRegistrant.registerWith(it) }
    }
}

Funciona normalmente o "backgroundMessage handler" no meu projeto já modificado para embedding V2.

josh-burton

josh-burton commented on Aug 20, 2020

@josh-burton
Contributor

I'm a bit confused about which plugins need to be manually registered in the registerWith method.

Is it any plugin that we are using in the background, or is it plugins that haven't yet updated to the v2 embedding?

pangj

pangj commented on Oct 24, 2020

@pangj

Has this issue be resolved now, anybody knows? It is really important plugin for the Flutter framework.

LasseRosenow

LasseRosenow commented on Oct 24, 2020

@LasseRosenow

It will be resolved "very very soon", when version 8.0.0 will be released.

Salakar

Salakar commented on Nov 5, 2020

@Salakar
Member

Hey all 👋

As part of our roadmap (#2582) we've just shipped a complete rework of the firebase_messaging plugin that aims to solve this and many other issues. Specifically v2 embedding is now supported and requires no documentation/manual steps unless you still need to use v1 embedding.

If you can, please try out the dev release (see the migration guide for upgrading and for changes) and if you have any feedback then join in the discussion here.

Given the scope of the rework I'm going to go ahead and close this issue in favor of trying out the latest plugin.

Thanks everyone.

locked and limited conversation to collaborators on Dec 6, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    impact: crowdAffects many people, though not necessarily a specific customer with an assigned label. (P2)plugin: messagingtype: documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @sgehrman@Ehesp@josh-burton@woprandi@gakubhat

        Issue actions

          [firebase_messaging] No documentation for Android v2 embedding backgroundMessage handler · Issue #1775 · firebase/flutterfire