使用pushsharp发送存折更新

我正在尝试与apple的推送通知沙箱服务器进行测试。

我根据此链接制作了证书(启用推送通知,请求的证书颁发机构,上传,生成证书,导出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。 但是,唯一的问题是传递不会在用户设备上更新。 根据此链接 ,我的web服务是在收到APNS的存折更新通知后获取设备调用的有效序列号列表。 但是,这从未发生过。

似乎我可以成功地将我的通知发送到Apple Notification Service,但是从那里apns无法将其发送到设备。 有什么想法吗?

现在我正在签署通行证并使用相同的通行证类型ID证书向APNS发送通知。

所以我终于能够使用APNS更新存折中的传递。 这是一个艰难的过程,有很多不同的事情,我没有考虑到。 这里有几点要记住。

  1. 签名传递和使用pushsharp时,请确保使用相同的.p12文件。 (我最初使用了与常规推送通知相关联的不同.p12)。 所以我最初在问题中发布的链接有点误导,你会按照这些步骤进行常规推送通知。 但是对于存折通知,您需要使用与您的传递类型ID关联的.p12文件

  2. 在PushSharp中,请务必禁用生产/沙盒证书检查。 存折没有沙盒环境,所以一切都应该指向生产。 在此行中,添加一个额外的true参数以禁用检查

    push.RegisterAppleService(new ApplePushChannelSettings(false,appleCert,"password", true));

  3. 测试时确保没有使用测试设备。 你也不能使用模拟器

  4. 您收到的推送令牌与注册常规推送通知时收到的DeviceIDToken不同。 推送令牌是独家存折

  5. 确保在服务器上安装了正确的证书。 例如,我必须安装传递类型ID证书

  6. 做一个telnet feedback.push.apple.com 2196以确保你可以点击apns服务器