zoukankan      html  css  js  c++  java
  • 在. net平台下,推送IOS,Android,Windows Phone消息

    1,新建项目,在项目中添加引用,dll文件已经上传在百度网盘,点击下载

    2,引入命名空间

    using PushSharp;
    using PushSharp.Android;
    using PushSharp.Apple;
    using PushSharp.Core;
    using PushSharp.Windows;
    using PushSharp.WindowsPhone;

    3,初始化写入下面代码

    var push = new PushBroker();
    
                //Wire up the events for all the services that the broker registers
                push.OnNotificationSent += NotificationSent;
                push.OnChannelException += ChannelException;
                push.OnServiceException += ServiceException;
                push.OnNotificationFailed += NotificationFailed;
                push.OnDeviceSubscriptionExpired += DeviceSubscriptionExpired;
                push.OnDeviceSubscriptionChanged += DeviceSubscriptionChanged;
                push.OnChannelCreated += ChannelCreated;
                push.OnChannelDestroyed += ChannelDestroyed;
                
    
                //-------------------------
                // 苹果推送
                //-------------------------
                //Configure and start Apple APNS
                // IMPORTANT: 获取正确的证书
                var appleCert = File.ReadAllBytes(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "../../../Resources/PushSharp.Apns.Sandbox.p12"));
                //IMPORTANT: 正确的密码
                push.RegisterAppleService(new ApplePushChannelSettings(appleCert, "CERTIFICATE PASSWORD HERE")); //Extension method
                //开始推送
                push.QueueNotification(new AppleNotification()
                                           .ForDeviceToken("设备的TokenID")
                                           .WithAlert("Hello World!")
                                           .WithBadge(7)
                                           .WithSound("sound.caf"));
    
                
                //---------------------------
                // ANDROID GCM 推送
                //---------------------------
                //Configure and start Android GCM
                //IMPORTANT: 正确的Google API's key
                push.RegisterGcmService(new GcmPushChannelSettings("YOUR Google API's Console API Access  API KEY for Server Apps HERE"));
                //IMPORTANT: 手机设备注册号
                push.QueueNotification(new GcmNotification().ForDeviceRegistrationId("手机设备注册号")
                                      .WithJson("{"alert":"Hello World!","badge":7,"sound":"sound.caf"}"));
                
    
                //-----------------------------
                // WINDOWS PHONE 推送
                //-----------------------------
                //Configure and start Windows Phone Notifications
                push.RegisterWindowsPhoneService();
                push.QueueNotification(new WindowsPhoneToastNotification()
                    .ForEndpointUri(new Uri("设备注册CHANNEL URI"))
                    .ForOSVersion(WindowsPhoneDeviceOSVersion.MangoSevenPointFive)
                    .WithBatchingInterval(BatchingInterval.Immediate)
                    .WithNavigatePath("/MainPage.xaml")
                    .WithText1("PushSharp")
                    .WithText2("This is a Toast"));
                
    
                Console.WriteLine("Waiting for Queue to Finish...");
    
                //停止
                push.StopAllServices();
    
                Console.WriteLine("Queue Finished, press return to exit...");
                Console.ReadLine();            

    4,实现注册方法

    static void DeviceSubscriptionChanged(object sender, string oldSubscriptionId, string newSubscriptionId, INotification notification)
            {
                //Currently this event will only ever happen for Android GCM
                Console.WriteLine("Device Registration Changed:  Old-> " + oldSubscriptionId + "  New-> " + newSubscriptionId + " -> " + notification);
            }
    
            static void NotificationSent(object sender, INotification notification)
            {
                Console.WriteLine("Sent: " + sender + " -> " + notification);
            }
    
            static void NotificationFailed(object sender, INotification notification, Exception notificationFailureException)
            {
                Console.WriteLine("Failure: " + sender + " -> " + notificationFailureException.Message + " -> " + notification);
            }
    
            static void ChannelException(object sender, IPushChannel channel, Exception exception)
            {
                Console.WriteLine("Channel Exception: " + sender + " -> " + exception);
            }
    
            static void ServiceException(object sender, Exception exception)
            {
                Console.WriteLine("Channel Exception: " + sender + " -> " + exception);
            }
    
            static void DeviceSubscriptionExpired(object sender, string expiredDeviceSubscriptionId, DateTime timestamp, INotification notification)
            {
                Console.WriteLine("Device Subscription Expired: " + sender + " -> " + expiredDeviceSubscriptionId);
            }
    
            static void ChannelDestroyed(object sender)
            {
                Console.WriteLine("Channel Destroyed for: " + sender);
            }
    
            static void ChannelCreated(object sender, IPushChannel pushChannel)
            {
                Console.WriteLine("Channel Created for: " + sender);
            }

    5,大功告成,每一种系统都需要不同的验证信息,有完整的信息在使用本例子(比如ios证书,密码,设备tokenID等),亲自测过,正常!

    6,有什么不懂的地方和我联系(shixudong3@yeah.net)

  • 相关阅读:
    Spring Security教程(一)
    java报错:The reference to entity "characterEncoding" must end with the ';' delimiter.
    SpringBoot定时任务升级篇(动态添加修改删除定时任务)
    SpringBoot几种定时任务的实现方式
    JDK中的Timer和TimerTask详解
    SpringMVC拦截器与SpringBoot自定义拦截器
    Java注解入门
    Servlet 4.0 入门
    spring邮件发送
    class path resource [spring/ApplicationContext-springmvc.xml] cannot be opened because it does not exist
  • 原文地址:https://www.cnblogs.com/shixudong/p/3606003.html
Copyright © 2011-2022 走看看