- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我是 flutter 和 dart 的新手。我正在尝试将我的应用程序与 FCM 连接起来.当应用程序处于前台时,我创建了 flutterLocalNotificationsPlugin 并且一切正常,但是当我的应用程序处于后台时,我不知道如何处理 onMessage 方法。有人知道我该如何解决吗?
FirebaseMessaging firebaseMessaging = new FirebaseMessaging();
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();
@override
void initState() {
super.initState();
var androidInitSettings = new AndroidInitializationSettings('mipmap/ic_launcher');
var iosInitSettings = new IOSInitializationSettings();
var initSettings = new InitializationSettings(androidInitSettings, iosInitSettings);
flutterLocalNotificationsPlugin.initialize(initSettings, selectNotification: onSelectNotification);
firebaseMessaging.configure(
onLaunch: (Map<String, dynamic> msg) {
print(" onLaunch called ${(msg)}");
},
onResume: (Map<String, dynamic> msg) {
print(" onResume called ${(msg)}");
},
onMessage: (Map<String, dynamic> msg) {
showNotification(msg);
print(" onMessage called ${(msg)}");
},
);
firebaseMessaging.requestNotificationPermissions(const IosNotificationSettings(sound: true, alert: true, badge: true));
firebaseMessaging.onIosSettingsRegistered.listen((IosNotificationSettings setting) {
print('IOS Setting Registed');
});
firebaseMessaging.getToken().then((token) {
update(token);
});
}
最佳答案
我看到你在 onMessage
被触发时强制显示通知,如果应用程序在后台,你不需要这样做,通知将自动创建。
onMessage
在您收到通知并且应用程序打开并在前台运行时触发。例如,您打开了 Gmail 应用程序,并收到了一封新电子邮件,在这种情况下,您不需要在通知区域弹出通知。应用程序可能会选择直接处理它,并且在收到通知后立即触发 onMessage
- 这很好,因此您无需继续连接服务器。
onResume
和onLaunch
有点不同 - 这两个事件不会在收到通知时触发。它们仅在用户从通知区域选择/点击通知时触发。因此,在这两种情况下,应用程序当前处于隐藏状态,要么根本不运行(终止),要么应用程序处于后台 - 未显示。在这种情况下,通知会在手机中收到并自动放置在通知区域中(您不需要为此编写“showNotification
”代码)。在此状态下,用户可以看到通知,但应用本身还不知道。
只有当用户选择这些通知之一时,该应用才会意识到该通知。
如果应用根本没有运行,onLaunch
将在用户点击通知时触发。这意味着该应用程序未运行,并且由于收到通知,它必须“从头开始启动”。
如果应用程序在后台,当用户选择通知时将触发onResume
,将应用程序恢复到前台状态。
编辑:
正如@boformer 所指出的,这仅适用于“通知”消息。如果您发送“数据”消息,则不会创建任何通知,并且消息仅通过 onMessage
传递。更多详细信息,请参阅 the plugin readme和 firebase docs .
关于android - flutter 应用在后台时调用 onMessage 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52115255/
在 background.html : chrome.tabs.query({active:true, currentWindow:true},function(tabs){ chrome.tab
作为 websocket 客户端,我们可以访问 onMessage 函数,该函数在客户端每次从服务器接收到消息时都会触发。我试图了解如果在 onMessage 事件上调用的代码块需要更长的时间来运行接
这是我的代码: initializeApp() async { FirebaseMessaging firebaseMessaging = FirebaseMessaging(); fireb
对于 Delphi Win32 (VCL),我使用: Application.OnMessage := MyAppMessage; FireMonkey 中的等效项是什么? 我有一个例程,需要捕获应用
我使用 Application.OnMessage 事件处理程序来处理来自程序中其他线程的消息(通知)。我发现如果弹出菜单处于事件状态(打开),则不会调用此事件处理程序。测试代码如下(没有线程但原理是
所以我正在为 Firefox 开发我的下一个附加组件,但是,在阅读 ContextMenus 的文档时,似乎永远不会调用 onMessage 事件,这是我的代码: exports.main = fun
我尝试在我的项目中实现 GCM,但 onMessage 函数出现问题。根据例子,我写: @Override protected void onMessage(Context arg0, Intent
hi This : var fees=document.getElementById("conn"); var btn=document.getE
当添加回调以捕获通过 web worker 管道传输的数据时,您通常会这样做: worker.addEventListener("message", function(event) { var
我有一个发送消息的浏览器操作 chrome.browserAction.onClicked.addListener(function(tab) { var message = {
我正在使用 django-channels 在 django 应用程序中实现套接字。 我关注了instructions它起作用了: socket = new WebSocket("ws://127.0
我正在挂载中设置回调: data() { return { code: 'Apple', } }, mounted() { console.log(this.c
我尝试通过 JS-WebSocket 在 Java WebsocketServer ( https://github.com/TooTallNate/Java-WebSocket) 与网页之间进行通信
我遇到过这样的问题,如果我的下面的方法失败或者是异常,我仍然会使用 msg。我希望该功能在捕获期间进行回滚并将消息放回队列/主题。 public void onMessage(Message mess
我正在使用 ActiveMQ 编写应用程序,其中我使用异步 onMessage() 方法从 ActiveMQ 获取消息。 假设我从 activemq 收到 1000 条消息,因此所有消息都将存储在 O
我正在尝试实现我自己的 websocket 服务器,但在使用 JavaScript 中的 onmessage 函数时遇到了一些麻烦。就是火不起来!我将一个警报放入其中,以便在它被调用时触发,但警报永远
如何使用 JavaScript 从 WebSocket 完全读取 event.data? onMessage: function(event) { var msg = event.data; al
我正在实现 MessageListner 类的 onMessgae () 方法,但即使我将调试点放入此方法中,它也不起作用,但调试器也不会进入此方法中。 使用该方法接收来自Queue的消息。下面是我用
我正在订阅 OnMessage 事件,当用户发送消息时它会被调用两次;一旦他/她开始打字,在这种情况下 Message 对象内容如下: Body = null Chatstate = composin
在我的应用程序中,我使用了 GCM 服务。我想在 onMessage 函数中发出哔哔声或播放一个小的 mp3 文件。 我的 GCMIntentService 是从 GCMBaseIntentServi
我是一名优秀的程序员,十分优秀!