如何使用firebase推送通知唤醒flutter android应用程序

Posted

技术标签:

【中文标题】如何使用firebase推送通知唤醒flutter android应用程序【英文标题】:How to wake up flutter android app with firebase push notification 【发布时间】:2021-08-19 12:37:04 【问题描述】:

我如何在接收到 firebase 消息时使用广播接收器/意图打开 Flutter android 应用程序。

【问题讨论】:

当它不是一个打开的应用程序时,即在后台或前台(意味着当应用程序对用户可见时)。 你可以在这里查看***.com/questions/48403786/… 【参考方案1】:

实现 FirebaseMessagingService 并从 onMessageReceived 启动 Main Activity:


public class FirebaseMsgService extends FirebaseMessagingService 

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) 

    //...
    Intent intent = new Intent(this, MainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    

您可能还想在 MainActivity 中解锁设备:


public class MainActivity extends FlutterActivity 

    @Override
  public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) 
    GeneratedPluginRegistrant.registerWith(flutterEngine);
        

    Window window = this.getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
    window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
        
       

  

【讨论】:

flutter项目如何实现?【参考方案2】:

@Develocode777 提供的答案将在 android 9 之前有效。从 android 10 开始,不再允许这种行为。您可以在此页面中了解更多信息,Restrictions on starting activities from the background。 如果您打算显示通知,并且在单击通知时要打开应用程序,它会正常工作,但在没有用户交互的情况下打开应用程序,在 Android 10 及更高版本中是不允许的。

【讨论】:

whatsapp 上的 incominhcalls 怎么样? 这是一种特殊类型的通知,称为全屏意图通知。当您接到 whatsapp 电话并且正在使用设备时,您将看到一个提醒通知,而不是整个应用程序。仅当任一手机被锁定或您点击提醒通知时,才会显示整个应用程序。 flutter如何实现? 对于这么晚的回复非常抱歉,我完全忘记了这一点。这将在原生的 android 和 ios 上单独实现。如果您尝试将您的 mainactivity 显示为全屏应用程序,那么颤振应用程序本身就会出现,但它的行为非常奇怪。如果设置了唤醒锁,事情会变得更加奇怪。更好地原生实现

以上是关于如何使用firebase推送通知唤醒flutter android应用程序的主要内容,如果未能解决你的问题,请参考以下文章

使用firebase发送静默推送通知,以便在应用程序被杀死时唤醒它

如何在没有 Firebase 和自定义后端的情况下使用 Flutter 设置推送通知

Flutter 推送通知应用背景:firebase_messaging

如果应用程序未启动,Flutter Firebase 推送通知无法数据

如何翻译 Firebase 推送通知?

Flutter Firebase 消息传递 - 应用打开时未显示推送通知