gpt4 book ai didi

flutter - 在 Flutter 中调试 firebase_messaging 中的 onLaunch 回调

转载 作者:IT王子 更新时间:2023-10-29 06:58:47 27 4
gpt4 key购买 nike

我在我的 flutter 应用程序中使用 firebase_messaging,我希望能够调试 onLaunch 回调触发时发生的情况。

问题是它会在收到通知并终止应用程序时触发。

一定有办法调试它吧?

最佳答案

因此,在 OP 讨论之后,您可以使用 print()debugPrint() 函数调试 onLaunch

您可以像这样使用 adb 命令行在终端上获取 logcat 输出

$ adb shell 
$ logcat -e "flutter" -v color

如果您有多个设备,您可以使用 -s 参数来选择您的设备。

-e 仅用于过滤内部有 flutter 词的日志消息

-v color 是有格式化的颜色输出

由于 Android 插件不支持数据消息,您可以发送 notification 消息,以便调用 onLaunch 并提供此 data领域:

"data": {"click_action": "FLUTTER_NOTIFICATION_CLICK", "id": "1", "status": "done"}

你可以这样发送消息

{
"to" : "<your device token>",
"collapse_key" : "type_a",
"priority" : "high",
"notification" : {
"body" : "Test notification body",
"title": "Test notification title",
"sound": "default"
},
"data": {"click_action": "FLUTTER_NOTIFICATION_CLICK", "id": "1", "status": "done", "foo":"bar"}
}

问题是你得到了不同的 Map message JSON:

onMessage 你得到

{notification: {title: Custom sound alert.mp3, body: Test Notification body for custom sound 25/01/2019}, data: {status: done, id: 1, foo: bar, click_action: FLUTTER_NOTIFICATION_CLICK}}

取而代之的是 onLaunchonResume 你会得到

{collapse_key: com.example.flutterapptestfcmmessaging, google.original_priority: high, google.sent_time: 1548447425689, google.delivered_priority: high, foo: bar, google.ttl: 2419200, from: 945032663190, id: 1, click_action: FLUTTER_NOTIFICATION_CLICK, google.message_id: 0:15484474256938..., status: done}

1-25 21:14:43.802 3445 3491 I flutter : onLaunch type:CastMap<dynamic, dynamic, String, dynamic> 01-25 21:17:11.568 37893838 I flutter : onLaunch 01-25 21:17:11.571 3789 3838 I flutter :--->>>> onLaunch {collapse_key: com.example.flutterapptestfcmmessaging, google.original_priority:high, google.sent_time: 1548447425689, google.delivered_priority:high, foo: bar, google.ttl: 2419200, from: 945032663190, id: 1,click_action: FLUTTER_NOTIFICATION_CLICK, google.message_id:0:15484474256938..., status: done} 01-25 21:17:11.5733789 3838 I flutter : onLaunch type: CastMap<dynamic, dynamic,String, dynamic> 01-25 21:17:11.574 3789 3838 I flutter : onLaunchfoo: bar

我使用 adb 获取了我的 printDebug 函数:

$ logcat -e "onLaunch" -v color   

所以在 onMessage 中你可以得到这样的 foo 字段

print("onMessage foo: ${message['data']['foo']}");

onLaunch 中,您可以这样获取它:

debugPrint("onLaunch foo: " + message['foo']);

更新:iOS 设备

上面的调试 session 是针对 Android 设备的。

在 iOS 设备上,为了获得设备的控制台输出,您可以使用 Apple App Configurator 2Console 应用程序(来自 Applications 文件夹内的 Utilities 文件夹):

onMessage 上,您将收到:

{status: done, google.c.a.e: 1, id: 1, aps: {alert: {title: Test Notification, body: Test Notification at 26/01/2019}}, gcm.message_id: 0:15485106,,,, foo: bar, click_action: FLUTTER_NOTIFICATION_CLICK}

onResumeonLaunch 上:

{status: done, google.c.a.e: 1, id: 1, aps: {alert: {title: Test Notification, body: Test Notification at 26/01/2019}}, gcm.message_id: 0:15485109..., foo: bar, click_action: FLUTTER_NOTIFICATION_CLICK}

它们是相同的,所以我建议在 onMessage 中获取自定义数据之前检查平台。

为此你可以使用 dart.io library Platform类:

if (Platform.isAndroid) {
print("onMessage Android foo: ${message['data']['foo']}");
} else if (Platform.isIOS) {
debugPrint("onMessage iOS foo: " + message['foo']);
}

关于flutter - 在 Flutter 中调试 firebase_messaging 中的 onLaunch 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54367106/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com