我正在尝试测试与apple的推送通知沙箱服务器的对话。
我在this link之后签了证书 (启用推送通知,请求的证书颁发机构,上载,生成证书,导出p12)
我制作了一个示例C#控制台应用程序,如下所示
PushBroker push = new PushBroker();
var appleCert = File.ReadAllBytes(@"devapns.p12");
push.OnNotificationSent += NotificationSent;
push.OnChannelException += ChannelException;
push.OnServiceException += ServiceException;
push.OnNotificationFailed += NotificationFailed;
push.OnDeviceSubscriptionExpired += DeviceSubscriptionExpired;
push.OnChannelCreated += ChannelCreated;
push.OnChannelDestroyed += ChannelDestroyed;
push.RegisterAppleService(new ApplePushChannelSettings(false,appleCert,"password"));
push.QueueNotification(new AppleNotification()
.ForDeviceToken(token)
.WithPasskitUpdate());
push.StopAllServices(waitForQueuesToFinish: true);
当我跑步时,我得到了
已达到最大发送尝试次数
我目前使用的PushSharp版本是2.2.1.0
我还需要做些什么吗?我是否需要在某处启用SSL?我的证书是否未在我的本地计算机上正确安装。我不确定我哪里出错了。
注意:p12文件大约是3KB
我在本地计算机上安装了开发证书,仅用于在运行此控制台应用程序时进行测试
更新
我设法成功将通知发送到apns。但是,唯一的问题是传递不会在用户设备上更新。根据{{3}},我的网络服务是在收到APNS的存折更新通知后获取设备调用的有效序列号列表。但是,这从未发生过。
似乎我可以成功将通知发送到Apple Notification Service,但是从那里apns无法将其发送到设备。有什么想法吗?
现在我正在签署通行证,并使用相同的通行证类型ID证书向APNS发送通知。
答案 0 :(得分:2)
所以我终于能够使用APNS更新存折中的传递。这是一个艰难的过程,有许多不同的事情,我没有考虑到。这里有几点要记住。
确保在签署通行证和使用pushsharp时使用相同的.p12文件。 (我最初使用了与常规推送通知相关的不同.p12)。所以我最初在问题中发布的链接有点误导,你会按照这些步骤进行常规推送通知。但是对于存折通知,您需要使用与您的通行证类型ID
在PushSharp中,请务必禁用生产/沙盒证书检查。存折没有沙箱环境,所以一切都应该指向生产。在此行中,添加额外的true
参数以禁用检查
push.RegisterAppleService(new ApplePushChannelSettings(false,appleCert,"password", true));
确保在测试时未使用测试设备。您也无法使用模拟器
您收到的推送令牌与注册常规推送通知时收到的DeviceIDToken不同。推送令牌是独家存折
确保服务器上安装了正确的证书。例如,我必须安装传递类型ID证书
执行telnet feedback.push.apple.com 2196
以确保您可以访问apns服务器