如何使用库 PushSharp 向 iOS 发送推送通知?

Posted

技术标签:

【中文标题】如何使用库 PushSharp 向 iOS 发送推送通知?【英文标题】:How to use the library PushSharp to send push notifications to iOS? 【发布时间】:2016-05-26 14:57:02 【问题描述】:

我正在使用最新的PushSharp 版本通过 APN 发送推送通知。我正在使用他们的 Git wiki 页面中给出的以下代码来发送通知:

// Configuration (NOTE: .pfx can also be used here)
var config = new ApnsConfiguration (ApnsConfiguration.ApnsServerEnvironment.Sandbox, 
    "push-cert.p12", "push-cert-pwd");

// Create a new broker
var apnsBroker = new ApnsServiceBroker (config);

// Wire up events
apnsBroker.OnNotificationFailed += (notification, aggregateEx) => 

    aggregateEx.Handle (ex => 

        // See what kind of exception it was to further diagnose
        if (ex is ApnsNotificationException) 
            var notificationException = (ApnsNotificationException)ex;

            // Deal with the failed notification
            var apnsNotification = notificationException.Notification;
            var statusCode = notificationException.ErrorStatusCode;

            Console.WriteLine ($"Apple Notification Failed: ID=apnsNotification.Identifier, Code=statusCode");

         else 
            // Inner exception might hold more useful information like an ApnsConnectionException           
            Console.WriteLine ($"Apple Notification Failed for some unknown reason : ex.InnerException");
        

        // Mark it as handled
        return true;
    );
;

apnsBroker.OnNotificationSucceeded += (notification) => 
    Console.WriteLine ("Apple Notification Sent!");
;

// Start the broker
apnsBroker.Start ();

foreach (var deviceToken in MY_DEVICE_TOKENS) 
    // Queue a notification to send
    apnsBroker.QueueNotification (new ApnsNotification 
        DeviceToken = deviceToken,
        Payload = JObject.Parse ("\"aps\":\"badge\":7")
    );


// Stop the broker, wait for it to finish   
// This isn't done after every message, but after you're
// done with the broker
apnsBroker.Stop ();

困惑 -

    我不知道 apnsBroker.QueueNotification 方法是根本发送推送,还是只是排队。

    我不知道是否需要以某种方式在我的 Windows 机器上安装苹果证书。

最新版本的 PushSharp 在线没有合适的示例代码。

【问题讨论】:

Apple infra 有时真的很烦人.. Google infra 在苹果面前就像微风一样 【参考方案1】:

    只需在控制台应用程序中触发上述代码,Pushsharp 就会发送通知。

    Apple 允许一次推送通知使用一个推送令牌。

【讨论】:

【参考方案2】:

代码按原样工作。但正如你所说,有一些不确定的地方。

第一个通知将在您排队时立即发送,它只是一种异步机制,不在那里等待代码。因此,如果出现任何问题(或正确),您可以通过经纪人的事件进行处理。

第二部分有点复杂。首先,您已经为 macOS 机器上的推送通知创建了一个证书。比你必须将它上传到你的开发者帐户等。你可以通过谷歌找到视频。在这里描述它很长。比您必须将您的“Apple Push Services”证书从 macOS 机器导出到 p12 文件。并获取该 .p12 文件并将其放入您的 .net 服务文件夹,例如“App_Data”文件夹并加载它(我假设您正在编写 Web 服务):

 var config = new ApnsConfiguration(ApnsConfiguration.ApnsServerEnvironment.Sandbox,
                Path.Combine(HostingEnvironment.ApplicationPhysicalPath, "App_Data", "yourfileName.p12"),"yourFilePassword");

希望对你有帮助。

【讨论】:

以上是关于如何使用库 PushSharp 向 iOS 发送推送通知?的主要内容,如果未能解决你的问题,请参考以下文章

向 iOS PushSharp 证书发送推送通知

pushsharp 2 在向苹果 ios 发送通知时触发异常

PushSharp 向 iOS 发送通知成功但未收到

PushSharp 是不是允许向 GCM for iOS 发送通知?

如何向多个设备(iOS)发送推送通知?

如何知道是不是使用 Pushsharp 将推送通知传递到 iOS 应用程序?