Как использовать библиотеку PushSharp для отправки push-уведомлений на iOS?

Я использую последнюю версию PushSharp для отправки push-уведомлений через APN. Я использую приведенный ниже код, указанный на их вики-странице git, для отправки уведомлений.

// 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 push вообще или просто ставит его в очередь.

  2. Я не хочу, если мне нужно каким-то образом установить сертификат Apple на моем компьютере с Windows.

В последней версии PushSharp нет надлежащего примера кода, доступного в Интернете.

Пожалуйста помоги!


person Lakshay    schedule 26.05.2016    source источник
comment
Инфраструктура Apple временами действительно раздражает. Инфраструктура Google похожа на ветерок перед Apple.   -  person Lakshay    schedule 26.05.2016


Ответы (2)


  1. Просто запустите приведенный выше код в консольном приложении, и Pushsharp отправит уведомления.

  2. Apple разрешает использовать один push-токен для push-уведомления за раз.

person Lakshay    schedule 04.03.2017

Код работает так. Но есть некоторые неясные моменты, как вы сказали.

Первое уведомление будет отправлено сразу же, когда вы его поставите в очередь, это просто асинхронный механизм, чтобы не ждать код там. Поэтому, если что-то пойдет не так (или правильно), вы можете справиться с этим через события брокера.

Вторая часть немного сложнее. Прежде всего, вы создали сертификат для push-уведомлений на компьютере с macOS. Затем вам нужно загрузить его в свою учетную запись разработчика и т. Д. Вы можете найти видео, как это сделать, через Google. Описывать это здесь довольно долго. Затем вам нужно экспортировать сертификат «Apple Push Services» с вашего macOSmachine в файл p12. И получите и поместите этот файл .p12 в папку службы .net, например, в папку «App_Data», и загрузите его следующим образом (я предполагаю, что вы пишете веб-службу):

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

Я надеюсь, что это поможет вам.

person Umut Bebek    schedule 15.03.2017