我目前正在使用Apple Push Notifications和基于令牌的身份验证方式(从keyId,teamId生成JWT,从后端服务器到我们的应用程序(macOS Catalina和iOS-同一代码库)实现push notifications ,...以及使用Apple开发人员控制台中生成的私钥对其进行签名)以将推送发送到APN服务。
我面临的问题是,我可以成功发送“警报”通知(状态200,标头为apns-push-type: alert
),并在我的iOS和MacOS设备上接收它们(推送通知在生产和沙箱模式下成功显示),但对于出于某些原因,“无声”推送(带有标题apns-push-type: background
)仅在我的iOS设备(iPhone)上收到,但在我的Mac上不接收((从不调用didReceiveRemoteNotification(...)
中的AppDelegate
)。
到目前为止我所做的:
apns-push-type: background
apns-topic: my.bundle.id
(对于沙箱/生产,这是不同的)apns-priority: 5
(仅在提供后台推送时)authorization: mytoken
(必须是这种情况,否则APN服务将不会以状态200进行响应)我正在执行的发送推送的APN请求是:
我正在发送到请求正文中的APN服务的有效负载(JSON)如下:
{
"aps": {
"content-available": 1 # defines push as "silent"
},
"data": { #some key-value pairs here }
}
[在任何情况下(无论是生产环境还是沙箱环境,都具有iOS和macOS的设备令牌),我对APN的请求都会返回状态代码200。我的MacBook运行的是Catalina 10.15.3。我在这里可能做错了什么,或者Catalyst应用程序根本不支持某些事情?