来自 WebApi 应用程序的 Apple 推送通知

Posted

技术标签:

【中文标题】来自 WebApi 应用程序的 Apple 推送通知【英文标题】:Apple Push Notifications from WebApi app 【发布时间】:2014-10-17 20:29:14 【问题描述】:

我将PushSharp 用于 Apple 推送通知,它在 Windows 8 和 Windows Server 2008R2 上的控制台应用程序和 Windows 服务中运行,但在同一台计算机上传输到 WebApi 应用程序的相同代码不起作用。我已经通过 mmc 在 Personal(私钥可用,授予 IIS_USRS 的权限)和受信任的根证书颁发机构中安装了证书和私钥。 代码有点明显,但以防万一:

var push = PushBroker();
var appleCert = File.ReadAllBytes("C:\Users\Documents\Certificates\Push.p12");
push.RegisterAppleService(new PushSharp.Apple.ApplePushChannelSettings(false, appleCert, "pwd"));
PushSharp.Apple.AppleNotification notif = new PushSharp.Apple.AppleNotification()
    .ForDeviceToken("xxx")
    .WithAlert("Updated...")
    .WithBadge(1)
    .WithSound("default");
push.QueueNotification(notif);
//Wait for queue to finish
push.StopAllServices(true);

没有错误/异常等,只是 iPhone 设备在 WebApi 应用程序中启动时没有收到通知。

【问题讨论】:

【参考方案1】:

您是否检查了所有事件句柄是否有错误? PushBroker 实例上有很多它们,您可以在其中订阅以拦截错误(如果有的话)。

订阅:OnServiceExceptionOnNotificationFailed

检查 IIS|app|users|roles 是否拥有访问网络的所有权限。

【讨论】:

看起来 [***.com/questions/23115394/… 包含答案。将 PushSharp 更新到 2.2.1 后问题解决了。 好消息!几天后,我将发布一个 git repo,其中包含在服务器和客户端上的完整 PushSharp 演示实现,我将在此处发布,以便您稍后查看。【参考方案2】:

当我遇到此错误时,这是​​一个证书问题。确保您使用正确的证书进行生产,因为 ApplePushChannelSettings 中的第一个参数为 false,否则消息将无法传递。还可以单步执行代码,看看是否有任何错误正在生成但没有被记录。

【讨论】:

以上是关于来自 WebApi 应用程序的 Apple 推送通知的主要内容,如果未能解决你的问题,请参考以下文章

APNS Apple 推送通知服务未收到来自 Apple 的成功消息

在 Apple Watch 上接收来自 iCloud 的推送通知

来自服务器的 Apple 推送通知

在 Apple Watch 模拟器上推送通知

来自 APNS(Apple 推送通知服务器)的反馈服务

Apple 推送通知服务是针对特定国家/地区的吗?