我正在尝试使用Firebase消息将通知发送到IOS设备-- Firebase控制台中的每个IOS项目都有一个有效的an P8 Auth密钥,该密钥是从Apple帐户中新生成的。
我用的是这个方法:
curl -X POST \
https://fcm.googleapis.com/fcm/send \
-H 'Authorization: key=<My Key>' \
-H 'Content-Type: application/json' \
-H 'cache-control: no-cache' \
-d '{
"to": "<Device Token>",
"notification": {
"title": "Push Notification Test to IOS",
"body":"Push Notification Test to IOS"
},
"data": {
"message": "Push Notification Test to IOS"
}
}'
这将导致FCM产生以下错误:
{
"multicast_id": <Id>,
"success": 0,
"failure": 1,
"canonical_ids": 0,
"results": [
{
"error": "InvalidApnsCredential"
}
]
}
如果我从消息中删除了“通知”块,FCM就会成功地进行响应,但是设备上没有接收到任何信息。
我可以使用上面的示例消息向Android设备发送和接收通知。
FCM文档建议,当包含“通知”块时,当令牌用于IOS设备时,FCM尝试通过an发送:
如果提供了通知有效负载,或者将content_available选项设置为iOS设备的消息为true,则通过an发送消息,否则通过FCM连接服务器发送消息。
我试过的是:
发布于 2021-06-03 09:48:40
InvalidApnsCredential
并不意味着该问题与APNS证书或密钥直接相关。
在我的例子中,我用一个白标签的应用程序来面对这个问题&经过调查,我发现我的app bundle id (PRODUCT_BUNDLE_IDENTIFIER)与Firebase中的不匹配(我使用的是一个开发包id,而不是生产包)。
发布于 2021-08-31 13:45:15
确保您的捆绑ID是正确的。
如果不一样,创建一个新的iOS应用程序iOS→General→添加一个应用程序),并确保正确设置名称。
在我的例子中,我使用了最短版本的包ID (com.company
),而不是long ID (com.company.appname
)。
这样做,你应该,而不是需要重新编译和重新上传应用程序。
https://stackoverflow.com/questions/53822811
复制相似问题