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)

  • 相关阅读:
    三大主流负载均衡软件对比(LVS+Nginx+HAproxy)
    nginx 提示the "ssl" directive is deprecated, use the "listen ... ssl" directive instead
    centos安装nginx并配置SSL证书
    hadoop创建目录文件失败
    The server time zone value 'EDT' is unrecognized or represents more than one time zone.
    脚本启动SpringBoot(jar)
    centos做免密登录
    数据库远程连接配置
    Bash 快捷键
    TCP三次握手四次断开
  • 原文地址:https://www.cnblogs.com/shixudong/p/3606003.html
Copyright © 2011-2022 走看看