我正在尝试使用FCM发送后台通知,但我无法使其工作。我可以让推送通知正常工作,只是不能让后台通知正常工作。关于这个问题,我查阅了很多资料,尝试了很多方法,但似乎都不起作用。
- 我有"推送通知";在XCode中启用>能力
- 我有";远程通知";在XCode中的背景模式中选中>能力
- 我已经正确注册了设备令牌并正确配置了APN(推送通知有效(
问题是这个方法永远不会在后台调用:
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
我尝试过的一些JSON格式是
{
"notification": {
"title": "title",
"body": "body",
},
"data":{
"name":"name",
},
"content_available": true,
"apns":{
"headers":{
"apns-priority": "5",
"apns-push-type": "background"
},
},
topic: topic,
}
{
"data":{
"title":'title",
"body":"body",
},
"notification":{
"title":"mytitle",
"body":"mybody",
"content_available": true
},
topic: topic
}
还有许多其他人。
我使用了不同的";"优先级";以及";content_available":是的。包括";"通知";而不包括他们。我把";content_available":在不同的层面上都是如此,但似乎什么都不起作用。
我看过:
FCM后台通知在iOS中不起作用https://izziswift.com/fcm-background-notifications-not-working-in-ios/
https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app
Firebase FCM iOS 静默推送通知
https://firebase.google.com/docs/cloud-messaging/ios/receive
以及许多其他堆栈溢出帖子。
对于我尝试过的一些JSON配置,我得到了这个错误,我不确定为什么:
Error: Process exited with code 16
at process.on.code (/layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/invoker.js:275:22)
at process.emit (events.js:198:13)
at process.EventEmitter.emit (domain.js:448:20)
at process.exit (internal/process/per_thread.js:168:15)
at Object.sendCrashResponse (/layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/logger.js:37:9)
at process.on.err (/layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/invoker.js:271:22)
at process.emit (events.js:198:13)
at process.EventEmitter.emit (domain.js:448:20)
at emitPromiseRejectionWarnings (internal/process/promises.js:140:18)
at process._tickCallback (internal/process/next_tick.js:69:34)
我真的很挣扎,任何帮助都将不胜感激!
解决方案是放置contentAvailable: true
尝试在AppDelegate中添加代码:
'Messaging.messaging().delegate = self'
'Messaging.messaging().isAutoInitEnable = true'
'Messaging.messaging().shouldEstablishDirectChannel = true'