.net平台借助第三方推送服务在推送Android,IOS消息(极光推送)

最近做的.net项目(Windows Service)需要向Android手机发送推送消息,真是有点困难,没有搞过就不停的搜文档,最后看到了一个开源项目PushSharp,可以在.net平台推送IOS,Android,Windows Phone等设备消息,大喜,然后先做了IOS的,成功了,但是做Android的时候遇到了问题,一直推送不成功,程序执行了,但是推送一直出不来,后来费劲的在网上搜,没有找到,最后放弃使用这种推送Android,另寻出路,随后找到了一种C2DM云端推送功能,但是问题又出现了,(1)C2DM内置于Android的2.2系统上,无法兼容老的1.6到2.1系统;(2)C2DM需要依赖于Google官方提供的C2DM服务器,由于国内的网络环境,这个服务经常不可用,如果想要很好的使用,我们的App Server必须也在国外,这个恐怕不是每个开发者都能够实现的;(3)不像在iPhone中,他们把硬件系统集成在一块了。所以对于我们开发者来说,如果要在我们的应用程序中使用C2DM的推送功能,因为对于不同的这种硬件厂商平台,比如摩托罗拉、华为、中兴做一个手机,他们可能会把Google的这种服务去掉,尤其像在国内就很多这种,把Google这种原生的服务去掉。买了一些像什么山寨机或者是华为这种国产机,可能Google的服务就没有了。而像在国外出的那些可能会内置。没办法了,最后转到了第三方推送服务平台,极光推送,下面将介绍怎么使用极光推送。

1、首先需要将你的app在极光官网上进行注册,获取一个ApiKey,一个APIMasterSecret(密码),将这两个值保存在配置文件(app/web.config)中,具体手机开发端需要做什么操作我们.net平台不管

<appSettings>
    <add key="ApiKey" value="**********"/>
    <add key="APIMasterSecret" value="*******"/>
 </appSettings>

2、读取配置中的值

private readonly string ApiKey = "";
private readonly string APIMasterSecret = "";
ApiKey = ConfigurationManager.AppSettings["ApiKey"].ToString();//Android ApiKey
APIMasterSecret = ConfigurationManager.AppSettings["APIMasterSecret"].ToString();//Android密码

3、开始推送方法

/// <summary>
        /// Android极光推送
        /// </summary>
        /// <param name="RegistrationID">设备号</param>
        public void PushAndroid(string RegistrationID)
        {
            try
            {
                Random ran = new Random();
                int sendno = ran.Next(1, 2100000000);//随机生成的一个编号
                string app_key = ApiKey;
                string masterSecret = APIMasterSecret;
                int receiver_type = 5;//接收者类型。2、指定的 tag。3、指定的 alias。4、广播:对 app_key 下的所有用户推送消息。5、根据 RegistrationID 进行推送。当前只是 Android SDK r1.6.0 版本支持
                string receiver_value = RegistrationID;

                int msg_type = 1;//1、通知2、自定义消息(只有 Android 支持)
                string msg_content = "{\"n_builder_id\":\"00\",\"n_title\":\"" + Title + "\",\"n_content\":\"" + Content + "\"}";//消息内容
                string platform = "android";//目标用户终端手机的平台类型,如: android, ios 多个请使用逗号分隔。
                string verification_code = GetMD5Str(sendno.ToString(), receiver_type.ToString(), receiver_value,masterSecret);//验证串,用于校验发送的合法性。MD5
                string postData = "sendno=" + sendno;
                postData += ("&app_key=" + app_key);
                postData += ("&masterSecret=" + masterSecret);
                postData += ("&receiver_type=" + receiver_type);
                postData += ("&receiver_value=" + receiver_value);
                postData += ("&msg_type=" + msg_type);
                postData += ("&msg_content=" + msg_content);
                postData += ("&platform=" + platform);
                postData += ("&verification_code=" + verification_code);

                //byte[] data = encoding.GetBytes(postData);
                byte[] data = Encoding.UTF8.GetBytes(postData);
                string resCode = GetPostRequest(data);//调用极光的接口获取返回值
                JpushMsg msg = Newtonsoft.Json.JsonConvert.DeserializeObject<JpushMsg>(resCode);//定义一个JpushMsg类,包含返回值信息,将返回的json格式字符串转成JpushMsg对象
            }
            catch (Exception ex)
            {

            }
        }

4、MD5加密验证字符串,用于调用接口的时候,极光将做验证使用

/// <summary>
        /// MD5字符串
        /// </summary>
        /// <param name="paras">参数数组</param>
        /// <returns>MD5字符串</returns>
        public string GetMD5Str(params string [] paras)
        {
            string str = "";
            for(int i=0;i<paras.Length;i++)
            {
                str += paras[i];
            }
            byte[] buffer = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(str));
            string md5Str = string.Empty;
            for (int i = 0; i < buffer.Length; i++)
            {
                md5Str = md5Str + buffer[i].ToString("X2");
            }
            return md5Str;
        }

5、http Post方式调用极光的推送服务

/// <summary>
        /// Post方式请求获取返回值
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public string GetPostRequest(byte[] data)
        {
            HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://api.jpush.cn:8800/v2/push");

            myRequest.Method = "POST";//极光http请求方式为post
            myRequest.ContentType = "application/x-www-form-urlencoded";//按照极光的要求
            myRequest.ContentLength = data.Length;
            Stream newStream = myRequest.GetRequestStream();

            // Send the data.
            newStream.Write(data, 0, data.Length);
            newStream.Close();

            // Get response
            var response = (HttpWebResponse)myRequest.GetResponse();
            using (var reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8")))
            {
                string result = reader.ReadToEnd();
                reader.Close();
                response.Close();
                return result;
            }
        }

6、定义一个类,接收返回值

public class JpushMsg
    {
        private string sendno;//编号

        public string Sendno
        {
            get { return sendno; }
            set { sendno = value; }
        }
        private string msg_id;//信息编号

        public string Msg_id
        {
            get { return msg_id; }
            set { msg_id = value; }
        }
        private string errcode;//返回码

        public string Errcode
        {
            get { return errcode; }
            set { errcode = value; }
        }
        private string errmsg;//错误信息

        public string Errmsg
        {
            get { return errmsg; }
            set { errmsg = value; }
        }
    }

 

时间: 2024-08-06 00:48:17

.net平台借助第三方推送服务在推送Android,IOS消息(极光推送)的相关文章

.net平台借助第三方推送服务在推送Android消息(极光推送)

.net平台借助第三方推送服务在推送Android消息(极光推送) 最近做的.net项目(Windows Service)需要向Android手机发送推送消息,真是有点困难,没有搞过就不停的搜文档,最后看到了一个开源项目PushSharp,可以在.net平台推送IOS,Android,Windows Phone等设备消息,大喜,然后先做了IOS的,成功了,但是做Android的时候遇到了问题,一直推送不成功,程序执行了,但是推送一直出不来,后来费劲的在网上搜,没有找到,最后放弃使用这种推送And

atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99

atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99 1.1. 云推送有推送次数或频率的限制吗? 1 1.2. 推送的消息长度 1 1.3. 离线消息的支持 2 1.4. 是否支持转义字符 2 2. 客户端身份识别机制 2 3. 绑定客户端的区别流程::jpush胜出 2 4. 文档风格比较::百度,jpush胜出 3 5. 编程sdk框架比较..个推,百度胜出 3 6. 编程风格的比较 3 6.1. 个推 3 6.2. 百度 4 6.3. J

iOS集成极光推送

iOS集成极光推送 一.配置APNs 苹果APNs(英文全称:Apple Push Notification Service) 1.配置开发证书 ![Uploading apns_13_803165.png -] 2.配置生产证书 和配置开发证书的流程相同. 3.将配置好的证书导出为 .p12 文件 一.注册极光推送帐号 可登录 极光推送官网 注册帐号. 注册成功后进入控制台 二.集成极光推送SDK sdk地址 我使用的是JPush-iOS-SDK-2.1.0.下载的文件里有个pdf文件iOS+

关于Android端配置极光推送

因为业务需要,android客户端需要加推送,原来采用的百度推送,但是小米手机有时候收不到,后来换成了极光推送,极光的话所有设备都能收到推送,但是在高峰的时候会推迟,博主说的免费版的,收费的没用过,也不错评论 博主用的android studio开发的,.so文件放置的位置啥的可能和eclipse有点不同,感觉用android studio开发jni一类的真的好费劲,博主现在老腻歪了,唉,废话不多说,进入正题: 首先,去极光推送官网注册一系列流程,不过貌似不用认证,老长时间注册的了,忘得差不多了

iOS:极光推送控制器跳转

在前面已经做完了极光消息的推送,那么有消息了,如何跳转到需要的控制器呢?其实,主要还是在userInfo这个消息里面做判断来处理,具体如下: 下面这两个是远程推送时接收消息的方法,这是应用程序提供的方法,只要成功注册了极光推送,推送消息时,就会调用这两个方法,在这两个方法收到的userInfo消息做判断即可. // Required,For systems with less than or equal to iOS6 -(void)application:(UIApplication *)ap

Android端 配置极光推送

因为业务需要,android客户端需要加推送,原来采用的百度推送,但是小米手机有时候收不到,后来换成了极光推送,极光的话所有设备都能收到推送,但是在高峰的时候会推迟,博主说的免费版的,收费的没用过,也不错评论 博主用的android studio开发的,.so文件放置的位置啥的可能和eclipse有点不同,感觉用android studio开发jni一类的真的好费劲,博主现在老腻歪了,唉,废话不多说,进入正题: 首先,去极光推送官网注册一系列流程,不过貌似不用认证,老长时间注册的了,忘得差不多了

iOS最新极光推送详解(2016转)

1.配置开发证书(得有开发者账号,个人,企业的都可以) 开发环境测试 在对 JPush iOS 开发环境进行测试前,请确保 3 个统一: App 是开发环境打包(开发证书 Development) 上传了开发证书并验证通过 Portal 上的应用设置为开发环境 发布环境测试 在对 JPush iOS 生产环境进行测试前,请确保 3 个统一: App 是 ad-hoc 打包或者App Store 版本(发布证书 Production) 上传了发布证书并验证通过 Portal 上的应用设置为生产环境

iOS集成极光推送遇到的几个问题

1.APNs证书和主证书的区别 刚开始做推送的时候本来以为APNs证书就是主证书里加了个允许推送而已,事实证明我还是太天真了. 首先是创建Provisioning Profile文件时选择证书列表时是不能选择APNs证书的,而且在XCode里Code Signing也是不能选择的.APNs证书其实是只表示了有推送功能,主证书还是必不可少的.所以现在只是又添加了两个证书,其他的是不用变的,所以现在就有4个证书了.作为一个有轻微强迫症的人,创建完APNs证书就顺手把主证书删了,在这里让我折腾了好久.

极光推送CEO王小导:所有开发和测试都应必备Testin云测试服务

极光推送CEO王小导:所有开发和测试都应必备Testin云测试服务 2014/09/29 · Testin · 开发者访谈 极光推送是一个聚集了来自前腾讯,华为,新浪及等技术专家的创业团队,2010底发现移动应用消息推送服务的市场空白,推出了极光推送(JPush),成为国内最早的第三方移动消息推送服务提供商,让开发者能够在线的移动客户保持紧密联系.提升移动用户留存率和活跃度.从而提高移动用户的生命周期价值. 极光推送平台从上线至,已为超过30000家移动开发商.超过70000款APP提供送达移动