分类:
.net外部工具接口(3) .net知识精华(29)

版权声明:本文为博主原创文章,未经博主允许不得转载。

最近做的.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; } } }

转载于:https://www.cnblogs.com/kunlunmountain/p/5856899.html

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

  1. Android集成极光推送踩坑(二)升级篇

    转载请标明出处 http://blog.csdn.net/mohan6/article/details/74133186 本文作者:[默寒的博客] 前言 前段时间针对集成极光推送写了篇文章( Andr ...

  2. 微信开放平台开发第三方授权登陆(三):Android客户端

    微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三):Android客户端 微信开放平 ...

  3. Android集成极光推送和踩过的坑(一)

    转载请标明出处 http://blog.csdn.net/mohan6/article/details/72960346 本文作者:[默寒的博客] 集成步骤以及集成过程遇到的坑: 这部分主要阐述了集成 ...

  4. android推送服务不被关闭,Android APP被关闭后无法收到推送消息(尝试)

    1.   Android端进程被杀死后,目前自带的保护后台接收消息活跃机制.暂时没有什么好的机制保持任何情况下都活跃 文章参考:http://blog.csdn.net/marswin89/artic ...

  5. Android 集成极光推送和厂商通道

    JPush 产品简介 Push 是经过考验的大规模 App 推送平台,每天推送消息量级为数百亿条. 开发者集成 SDK 后,可以通过调用 API 推送消息.同时,JPush 提供可视化的 web 端控 ...

  6. Android接入极光推送,接入华为,小米,OPPO,VIVO厂商通道

    极光推送作用: 极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接,从而提高用户活跃度.提高应用的留存率 主要作用: 保持与服 ...

  7. Android集成极光推送

    话不多说先上图: 集成步骤: 1.新建Android Studio项目,因为之后会用到包名 2.建项目后登录极光推送开发者平台创建自己的应用 https://www.jiguang.cn/dev2/# ...

  8. 极光推送:java后台向APP推送消息(android,ios极光推送消息)

    Maven添加依赖 <!--极光推送--><dependency><groupId>cn.jpush.api</groupId><artifact ...

  9. Android中极光推送

    一. 概念: 极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接,从而提高用户活跃度.提高应用的留存率.极光推送客户端支持 A ...

最新文章

  1. 网络应用 axIos +vue的应用
  2. [安全防护]StackGuard和StackShield
  3. 深入理解Spark:核心思想与源码分析. 3.9 启动测量系统MetricsSystem
  4. 昂贵的聘礼 Dijkstra法
  5. 创建设计模式 - Singleton设计模式(最佳实践与示例)
  6. 关于jQuery的细节
  7. VMware之以太网链接
  8. 看看中国科技巨头们在智能音箱行业的竞争
  9. 【蓝桥杯省赛JavaB组真题详解】立方变自身(2015)
  10. 获取当年的法定节假日和周末_通过可配置的周末和节假日添加工作日
  11. 苹果开始向全球扩展iAd平台
  12. HDU-1238 Substrings
  13. opencv边界扩充
  14. 2022 GopherChina 想听什么由你做主!
  15. 读《黄自元间架结构九十二法》
  16. 微信小程序自定义选中样式打小勾
  17. 判断是否为USD格式
  18. 如何系统性学习IT技术
  19. ccs用C语言进行printf时,DSP:CCS V6 TMS320F2812 使用printf函数
  20. 弱小者索取,强大者奉献

热门文章

  1. Hibernate征途(三)之CRUD
  2. Asp.Net实例:C# 绘制统计图(三) ——扇形统计图的绘制
  3. ARCGIS 拓扑规则阐述
  4. LeetCode 5364. 按既定顺序创建目标数组
  5. LeetCode 5355. T 秒后青蛙的位置
  6. shell中的文本处理(grep、sed、awk命令)
  7. Mac Big Sur如何更改锁屏时间
  8. python控制ppt定时_python中使用requests实现自动回帖.ppt
  9. NULS与Fortube正式达成战略合作
  10. Velox将在Pangolin上启动其算法交易机器人,并计划推出更多DeFi解决方案