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

时间:2016-05-26 14:57:03

标签: apple-push-notifications pushsharp

我正在使用最新的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 ();

混乱 -

  1. 我不知道方法apnsBroker.QueueNotification是否会发送推送,或者只是排队。

  2. 如果我需要在Windows机器上以某种方式安装Apple证书,我不会这样做。

  3. 最新版本的PushSharp没有正确的在线示例代码。

    请帮忙!

2 个答案:

答案 0 :(得分:0)

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

  2. Apple一次只允许一个推送令牌进行推送通知。

答案 1 :(得分:0)

代码就像它一样工作。但是你说的有一些不确定的地方。

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

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

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

我希望能帮助你。