![](/img/trans.png)
[英]Flutter FCM on iOS not calling onMessage and onResume
[英]Flutter iOS FCM notifications onMessage
我在嘗試在 iOS 上顯示 onMessage 通知時遇到問題,Android 工作正常。 我發送通知並且 onMessage 被觸發,但沒有在 Android 設備上顯示 Flushbar。 奇怪的是,它在控制台中打印了 onMessage 但它沒有在應用程序上顯示 Flushbar。
@override
void initState() {
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
print("onMessage: $message");
int idEvent = int.parse(message['data']['idevent']);
String image = message['data']['image'];
Flushbar(
title: message['notification']['title'],
message: message['notification']['body'],
duration: Duration(seconds: 5),
flushbarPosition: FlushbarPosition.TOP,
flushbarStyle: FlushbarStyle.GROUNDED,
onTap: (Flushbar fb) async {
fb.dismiss();
ServiceEvent.fetchEvent(idEvent).then((event) {
if (event != null) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => EventDetailsPage(
event,
fromNotification: true,
),
),
);
} else {
DialogUtility.dialogInfo(
context, "There was an error didn't find event");
}
}).catchError((error) {
DialogUtility.dialogInfo(context, error.toString());
});
},
icon: image != null
? Padding(
padding: const EdgeInsets.symmetric(horizontal: 5.0),
child: Image.network('$image', height: 40, width: 40,),
)
: Padding(
padding: const EdgeInsets.symmetric(horizontal: 5),
child: SvgPicture.asset(
'assets/icons/tarjeta-rocket-entries.svg',
semanticsLabel: 'Acme Logo',
width: 40,
height: 40,
),
),
)..show(buildContext);
},
onLaunch: (Map<String, dynamic> message) async {
print("onLaunch: $message");
},
onResume: (Map<String, dynamic> message) async {
print("onResume: $message");
},
);
_firebaseMessaging.requestNotificationPermissions(
const IosNotificationSettings(
sound: true, badge: true, alert: true, provisional: true));
_firebaseMessaging.onIosSettingsRegistered
.listen((IosNotificationSettings settings) {
print("Settings registered: $settings");
});
_firebaseMessaging.getToken().then((String token) {
assert(token != null);
setState(() {
//_homeScreenText = "Push Messaging token: $token";
});
//print('token: '+token);
});
super.initState();
}
剛注意到問題。 json 在接收 onMessage 通知時與 Android 和 iOS 不同,並且在 firebase onMessage 上沒有顯示任何異常。
應用程序本地通知像這樣對我有用
setUpLocalNotification() async {
//Local Notification Configuration--------
var initializationSettingsAndroid = AndroidInitializationSettings('logo');
var initializationSettingsIOS = IOSInitializationSettings();
var initializationSettings = InitializationSettings(
initializationSettingsAndroid, initializationSettingsIOS);
await flutterLocalNotificationsPlugin.initialize(initializationSettings,
onSelectNotification: onSelectNotification);
//end local notification
}
在 init 狀態下調用該函數,然后檢查操作系統類型並顯示通知。
if (Platform.isIOS) {
await flutterLocalNotificationsPlugin.show(
0,
message['aps']['alert']['title'],
message['aps']['alert']['body'],
platformChannelSpecifics,
payload: JsonEncoder.withIndent(" ").convert(message),
);
}
我遇到了同樣的問題,我使用https://pub.dev/packages/flutter_local_notifications插件解決了它,或者確保您正確調用 Flushbar API
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.