使用 pushsharp 发送存折更新
sending passbook update with pushsharp
我正在尝试测试与 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);
当我 运行 我得到
The maximum number of Send attempts was reached
我目前使用的PushSharp版本是2.2.1.0
我还需要做些什么吗?我需要在某处启用 SSL 吗?我的证书是否未正确安装在我的本地计算机上。我不确定我哪里出错了。
注意:p12 文件大约 3KB
我在本地计算机上安装了开发证书,只是为了在 运行 运行此控制台应用程序时进行测试
更新:
我设法将通知成功发送到 apns。然而,唯一的问题是通行证不会在用户设备上更新。根据this link,我的webservice是在收到来自APNS的存折更新通知后,一旦被设备调用,就得到一个有效序列号的列表。然而,这永远不会发生。
似乎我可以成功将我的通知发送到 Apple 通知服务,但 apns 无法从那里将它发送到设备。有什么想法吗?
现在我正在签署通行证并使用相同的通行证类型 ID 证书向 APNS 发送通知。
所以我终于可以使用 APNS 更新通行证存折了。这是一个艰巨的过程,有很多不同的事情我没有考虑到。请记住以下几点。
确保在签署通行证和使用 pushsharp 时使用相同的 .p12 文件。 (我最初使用与常规推送通知关联的不同 .p12)。因此,我最初在问题中发布的 link 有点误导,您可以按照这些步骤进行常规推送通知。但对于存折通知,您需要使用与您的通行证类型 ID 关联的 .p12 文件
在 PushSharp 中,务必禁用 production/sandbox 证书检查。存折没有沙箱环境,所以一切都应该指向生产。在这一行中,添加一个额外的 true
参数以禁用检查
push.RegisterAppleService(new ApplePushChannelSettings(false,appleCert,"password", true));
确保您在测试时没有使用测试设备。你也不能使用模拟器
您收到的推送令牌与注册常规推送通知时收到的 DeviceIDToken 不同。 push token为存折独享
确保在您的服务器上安装了正确的证书。例如,我必须安装通行证类型 ID 证书
执行 telnet feedback.push.apple.com 2196
以确保您可以访问 apns 服务器
我正在尝试测试与 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);
当我 运行 我得到
The maximum number of Send attempts was reached
我目前使用的PushSharp版本是2.2.1.0
我还需要做些什么吗?我需要在某处启用 SSL 吗?我的证书是否未正确安装在我的本地计算机上。我不确定我哪里出错了。
注意:p12 文件大约 3KB
我在本地计算机上安装了开发证书,只是为了在 运行 运行此控制台应用程序时进行测试
更新:
我设法将通知成功发送到 apns。然而,唯一的问题是通行证不会在用户设备上更新。根据this link,我的webservice是在收到来自APNS的存折更新通知后,一旦被设备调用,就得到一个有效序列号的列表。然而,这永远不会发生。
似乎我可以成功将我的通知发送到 Apple 通知服务,但 apns 无法从那里将它发送到设备。有什么想法吗?
现在我正在签署通行证并使用相同的通行证类型 ID 证书向 APNS 发送通知。
所以我终于可以使用 APNS 更新通行证存折了。这是一个艰巨的过程,有很多不同的事情我没有考虑到。请记住以下几点。
确保在签署通行证和使用 pushsharp 时使用相同的 .p12 文件。 (我最初使用与常规推送通知关联的不同 .p12)。因此,我最初在问题中发布的 link 有点误导,您可以按照这些步骤进行常规推送通知。但对于存折通知,您需要使用与您的通行证类型 ID 关联的 .p12 文件
在 PushSharp 中,务必禁用 production/sandbox 证书检查。存折没有沙箱环境,所以一切都应该指向生产。在这一行中,添加一个额外的
true
参数以禁用检查push.RegisterAppleService(new ApplePushChannelSettings(false,appleCert,"password", true));
确保您在测试时没有使用测试设备。你也不能使用模拟器
您收到的推送令牌与注册常规推送通知时收到的 DeviceIDToken 不同。 push token为存折独享
确保在您的服务器上安装了正确的证书。例如,我必须安装通行证类型 ID 证书
执行
telnet feedback.push.apple.com 2196
以确保您可以访问 apns 服务器