Flutter,Firebase ios,应用在后台时不显示云消息,仅在应用在前台时显示
Flutter, Firebase ios, cloud message doesn't show when app in background, only if app in foreground
我正在使用 flutter 依赖项:
firebase_messaging: ^7.0.3
flutter_local_notifications: ^3.0.1+6
我这样发送 firebase 云消息:
{
"to": "/topics/demo_ios"
"notification" : {
"body" : "Hi there now now",
"title" : "Wow!",
"sound": "default"
},
"priority": "high"
"data": {
"title": "Hi there yes",
"body": "Wow",
}
}
在 ios 中,通知会在应用程序位于前台时显示,但在后台时则根本不显示。我尝试阅读和修复很多东西,但仍然不起作用。我从 xcode 设置了后台获取、远程通知和后台处理,但它仍然不起作用。
我在 plist 文件中将 FirebaseAppDelegateProxyEnabled 设置为 false,但它没有帮助。
我请求许可:
_messaging.requestNotificationPermissions(
const IosNotificationSettings(sound: true, badge: true, alert: true, provisional: false)
);
_messaging.onIosSettingsRegistered.listen((event) {print('2124: ios Setting registered');});
首先,我建议您将插件更新为 firebase_messaging: ^8.0.0-dev.8
,因为 iOS 后台处理已启用。请参阅 here 此更改:
- iOS 后台处理程序支持。
接下来,如何将所有这些集成到你的flutter项目中,请参考官方文档FlutterFire(这是插件8.x.x-dev版本之后的文档。
最后,请阅读有关 APN 的更多信息,因为 Apple 处理这些消息的方式不同,您需要在脚本中包含 APNSConfig
属性 以发送通知。
如果您通过 FirebaseAdmin 发送通知,请阅读 this。
不要忘记,在那种情况下,您需要设置 APNSConfig
属性 中包含的 content_available=True
,所以基本上,如果您使用的是 FirebaseAdmin,您还应该包括属性 与此类似:
apns=messaging.APNSConfig(
payload=messaging.APNSPayload(
aps=messaging.Aps(
alert='alert text',
sound='s',
content_available=True,
mutable_content=True,
category='c',
thread_id='t',
custom_data={
'id': 'xxx',
'type': 'xxx',
'title': 'Robb',
'content': 'Axxxx',
'image': 'xxx',
'deepLink': 'xxxx',
},
),
)
),
我也遇到了同样的问题,尝试在testflight上上传IPA文件,希望能成功。
好吧,解决方法很简单,我犯了一个错误。
如文件 pub.dev 所述:
按照 Firebase 文档中的本指南生成 Apple 接收推送通知所需的证书。您可以跳过标题为“创建配置文件”的部分。
这是 link:
https://firebase.google.com/docs/cloud-messaging/ios/certs
我忘记执行这些步骤了。这样做之后,它起作用了
我正在使用 flutter 依赖项:
firebase_messaging: ^7.0.3
flutter_local_notifications: ^3.0.1+6
我这样发送 firebase 云消息:
{
"to": "/topics/demo_ios"
"notification" : {
"body" : "Hi there now now",
"title" : "Wow!",
"sound": "default"
},
"priority": "high"
"data": {
"title": "Hi there yes",
"body": "Wow",
}
}
在 ios 中,通知会在应用程序位于前台时显示,但在后台时则根本不显示。我尝试阅读和修复很多东西,但仍然不起作用。我从 xcode 设置了后台获取、远程通知和后台处理,但它仍然不起作用。
我在 plist 文件中将 FirebaseAppDelegateProxyEnabled 设置为 false,但它没有帮助。
我请求许可:
_messaging.requestNotificationPermissions(
const IosNotificationSettings(sound: true, badge: true, alert: true, provisional: false)
);
_messaging.onIosSettingsRegistered.listen((event) {print('2124: ios Setting registered');});
首先,我建议您将插件更新为 firebase_messaging: ^8.0.0-dev.8
,因为 iOS 后台处理已启用。请参阅 here 此更改:
- iOS 后台处理程序支持。
接下来,如何将所有这些集成到你的flutter项目中,请参考官方文档FlutterFire(这是插件8.x.x-dev版本之后的文档。
最后,请阅读有关 APN 的更多信息,因为 Apple 处理这些消息的方式不同,您需要在脚本中包含 APNSConfig
属性 以发送通知。
如果您通过 FirebaseAdmin 发送通知,请阅读 this。
不要忘记,在那种情况下,您需要设置 APNSConfig
属性 中包含的 content_available=True
,所以基本上,如果您使用的是 FirebaseAdmin,您还应该包括属性 与此类似:
apns=messaging.APNSConfig(
payload=messaging.APNSPayload(
aps=messaging.Aps(
alert='alert text',
sound='s',
content_available=True,
mutable_content=True,
category='c',
thread_id='t',
custom_data={
'id': 'xxx',
'type': 'xxx',
'title': 'Robb',
'content': 'Axxxx',
'image': 'xxx',
'deepLink': 'xxxx',
},
),
)
),
我也遇到了同样的问题,尝试在testflight上上传IPA文件,希望能成功。
好吧,解决方法很简单,我犯了一个错误。
如文件 pub.dev 所述:
按照 Firebase 文档中的本指南生成 Apple 接收推送通知所需的证书。您可以跳过标题为“创建配置文件”的部分。
这是 link: https://firebase.google.com/docs/cloud-messaging/ios/certs
我忘记执行这些步骤了。这样做之后,它起作用了