簡體   English   中英

在C#中使用Pushsharp的iOS推送通知

[英]IOS Push notification using Pushsharp in c#

我已經在C#中的ios中開發了用於推送通知的代碼,但是它沒有在移動設備中發送通知。 我已經使用了pushsharp庫。

我的代碼如下:

PushNotificationApple pushNotification = new PushNotificationApple();
pushNotification.SendNotification(postData);

我的PushNotificationApple構造函數代碼如下:-

public PushNotificationApple()
        {
            if (_pushBroker == null)
            {
                //Create our push services broker
                _pushBroker = new PushBroker();

                //Wire up the events for all the services that the broker registers
                _pushBroker.OnNotificationSent += NotificationSent;
                _pushBroker.OnChannelException += ChannelException;
                _pushBroker.OnServiceException += ServiceException;
                _pushBroker.OnNotificationFailed += NotificationFailed;
                _pushBroker.OnDeviceSubscriptionExpired += DeviceSubscriptionExpired;
                _pushBroker.OnDeviceSubscriptionChanged += DeviceSubscriptionChanged;
                _pushBroker.OnChannelCreated += ChannelCreated;
                _pushBroker.OnChannelDestroyed += ChannelDestroyed;


                var appleCert = File.ReadAllBytes(System.Web.Hosting.HostingEnvironment.MapPath("~/Certificates" + ConfigSettings.SnaptymAPNSCertificate));


                _pushBroker.RegisterAppleService(new ApplePushChannelSettings(false, appleCert,ConfigSettings.SnaptymAPNSPassword)); //Extension method                
            }
        }

我的SendNotification函數如下:

public bool SendNotification(GcmNotificationPostDataModel postData)
        {

            if (_pushBroker != null)
            {
                foreach (var registrationId in postData.RegistrationIds)
                {

                    _pushBroker.QueueNotification(new AppleNotification()
                                                .ForDeviceToken(registrationId) //the recipient device id
                                                .WithAlert(postData.Data.Message) //the message
                                                .WithBadge(1)
                                                .WithSound("sound.caf"));

                }
            }

            return true;
        }

我正在使用PushSharp 4.0.10,以下代碼對我有用。

     private void SendMessage()
        {
            //IOS
            var MainApnsData = new JObject();
            var ApnsData = new JObject();
            var data = new JObject();

            MainApnsData.Add("alert", Message.Text.Trim());
            MainApnsData.Add("badge", 1);
            MainApnsData.Add("Sound", "default");

            data.Add("aps", MainApnsData);

            ApnsData.Add("CalledFromNotify", txtboxID.Text.Trim());
            data.Add("CustomNotify", ApnsData);

            //read the .p12 certificate file
            byte[] bdata = System.IO.File.ReadAllBytes(Server.MapPath("~/App_Data/CertificatesPushNew.p12"));

 //create push sharp APNS configuration
            var config = new ApnsConfiguration(ApnsConfiguration.ApnsServerEnvironment.Sandbox,bdata,"YourPassword");


            //create a apnService 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!");
            };

            var fbs = new FeedbackService(config);
            fbs.FeedbackReceived += (string deviceToken1, DateTime timestamp) =>
            {
                //Remove the deviceToken from your database
                // timestamp is the time the token was reported as expired
                Console.WriteLine("Feedback received!");
            };
            fbs.Check();

            // Start the broker
            apnsBroker.Start();

            var deviceToken = "Your device token";
            // Queue a notification to send
            apnsBroker.QueueNotification(new ApnsNotification
            {
                DeviceToken = deviceToken,
                Payload= data

 });

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM