我们正在开发一个Ionic
用于应用程序Android
和iOS
有Push Notifications
。我们通过以下方式发送这些通知Firebase Cloud Messaging
关于iOS
我们有此问题(我们已接受该应用程序的通知权限):
foreground
,我们会立即收到通知(我们将其发送到应用程序内,而不是使用卡)。background
,我们似乎没有收到通知。但是,如果我们打开或恢复该应用程序,则会收到与中收到该应用程序的通知一样的通知foreground
。我们的假设是我们正在得到silent notifications
。我们有以下配置:
- Xcode:功能->后台模式->远程通知(显示一项检查)
- Xcode:功能->推送通知(显示两个检查)
- Apple Developer:标识符->我的应用程序->推送通知(带有针对开发和生产的证书)
- Apple Developer:具有“ Apple Push Notifications服务(APN)”的键-> .p8键
- Firebase:我的应用程序->配置->云消息传递(.p8文件上传了密钥和团队ID)
这是我们尝试通过Firebase POST API发送的几种通知之一,该通知几乎结合了我们在研究此问题时已阅读的所有内容。(我们还会发送所需的Firebase HTTP标头)
{
"to": "<firebase_token>",
"notification": {
"body": "NOTIFICATION BODY",
"title": "NOTIFICATION TITLE",
},
"apns": {
"headers": {
"apns-push-type": "alert",
"apns-expiration": 0,
"apns-priority": 5,
"apns-topic": "<my_app>"
},
"payload": {
"alert": {
"title": "NOTIFICATION TITLE",
"body": "NOTIFICATION BODY"
},
"aps": {
"content-available": 1,
"alert": {
"title": "NOTIFICATION TITLE",
"body": "NOTIFICATION BODY"
}
},
"sound": "default",
"content-available": 1
}
},
"data": {
"field": "1",
"type": "CHAR"
}
}
尽管此POST
请求对于免费通知可能是不正确的,但我们认为这不是问题,因为Firebase测试通知在后台时也无法显示。
我们终于能够在后台和前台通过应用程序获得通知。
Firebase的有效负载为:
{
"to": "<firebase token>",
"notification": {
"title": "TITLE",
"body": "BODY"
},
"data": {
"title": "TITLE",
"body": "BODY",
"extraField1": "extra value 1",
"extraField2": "extra value 2"
},
"apns": {
"headers": {
"apns-topic": "<my-app>",
"apns-push-type": "background",
"apns-priority": 10
}
}
}
在更新到iOS 13之后,似乎使用.p12证书存在问题,我们使用.p8证书解决了该问题。在Firebase上更改证书后,开始接收后台通知,但是前台停止了最初的几个小时。