How to implement apple token based push notifications (using p8 file) in C#?

前端 未结 6 1793
梦如初夏
梦如初夏 2020-12-14 22:04

For an app with some kind of chat based features I want to add push notification support for receiving new messages. What I want to do is use the new token based authenticat

6条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-14 22:26

    You can use PushSharp which is a nuget package which support push notification for Apple and also for Google and Microsoft.

    Here are the links to github and nuget.

    This is a sample to send push notification for Apple:

    // 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 ();
    

提交回复
热议问题