C#—ASP.NET:集成极光推送(Push API v3)

 

C#—ASP.NET:集成极光推送(Push API v3)

 

1、极光推送官网(https://www.jpush.cn/)申请一个账号。

2、服务中心,开发者服务中,创建一个新的应用,输入正确的Android的包名

3、获取到了一个AppKey 和一个 Master Secret,这两个参数比较重要,验证权限使用。

4、去官网找到下载C# SDK的包https://docs.jiguang.cn/jpush/resources/

     Github 源码:https://github.com/jpush/jpush-api-csharp-client

5、源码生成DLL

6、项目引用DLL,新建类 using Jiguang.JPush.Model;

7、代码封装HTTP 调用官方API,转载地址为pohreb博客:https://www.cnblogs.com/yangwujun/p/5973120.html

 

/// 极光推送的最新版:PUSH-API-V3

/// 参考地址 http://docs.jpush.cn/display/dev/Push-API-v3
  1. #region 基础方法
  2. /// <summary>
  3. /// 应用标识:极光推送的用户名
  4. /// </summary>
  5. private const string AppKey = "填写你应用的AppKey";
  6. /// <summary>
  7. /// 极光推送的密码
  8. /// </summary>
  9. private const string MasterSecret = "填写你的MasterSecret";
  10. / <summary>
  11. / 极光推送请求的url地址
  12. / </summary>
  13. private const string RequestUrl = "https://api.jpush.cn/v3/push";
  14. //private const string RequestUrl = "https://bjapi.push.jiguang.cn/v3/push";
  15. /// <summary>
  16. /// 查询推送结果请求的Url地址
  17. /// </summary>
  18. private const string ReceivedUrl = "https://report.jpush.cn/v3/received";
  19. /// <summary>
  20. /// 发送推送请求到JPush,使用HttpWebRequest
  21. /// </summary>
  22. /// <param name="method">传入POST或GET</param>
  23. /// <param name="url">固定地址</param>
  24. /// <param name="auth">用户名AppKey和密码MasterSecret形成的Base64字符串</param>
  25. /// <param name="reqParams">请求的json参数,一般由Platform(平台)、Audience(设备对象标识)、Notification(通知)、Message(自定义消息)、Options(推送可选项)组成</param>
  26. /// <returns></returns>
  27. private static string SendRequest(String method, String url, String auth, String reqParams)
  28. {
  29. string resultJson = "";
  30. HttpWebRequest myReq = null;
  31. HttpWebResponse response = null;
  32. try
  33. {
  34. myReq = (HttpWebRequest)WebRequest.Create(url);
  35. myReq.Method = method;
  36. myReq.ContentType = "application/json";
  37. if (!String.IsNullOrEmpty(auth))
  38. {
  39. myReq.Headers.Add( "Authorization", "Basic " + auth);
  40. }
  41. if (method == "POST")
  42. {
  43. byte[] bs = UTF8Encoding.UTF8.GetBytes(reqParams);
  44. myReq.ContentLength = bs.Length;
  45. using (Stream reqStream = myReq.GetRequestStream())
  46. {
  47. reqStream.Write(bs, 0, bs.Length);
  48. reqStream.Close();
  49. }
  50. }
  51. response = (HttpWebResponse)myReq.GetResponse();
  52. HttpStatusCode statusCode = response.StatusCode;
  53. if (Equals(response.StatusCode, HttpStatusCode.OK))
  54. {
  55. using (StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8))
  56. {
  57. resultJson = reader.ReadToEnd();
  58. try
  59. {
  60. object json = Newtonsoft.Json.JsonConvert.DeserializeObject(resultJson);
  61. }
  62. catch
  63. {
  64. resultJson = string.Format("{ {\"error\": { {\"message\": \"{0}\", \"code\": 10086}}}}", "响应的结果不是正确的json格式");
  65. }
  66. }
  67. }
  68. }
  69. catch (WebException ex)
  70. {
  71. if (ex.Status == WebExceptionStatus.ProtocolError)
  72. {
  73. HttpStatusCode errorCode = ((HttpWebResponse)ex.Response).StatusCode;
  74. string statusDescription = ((HttpWebResponse)ex.Response).StatusDescription;
  75. using (StreamReader sr = new StreamReader(((HttpWebResponse)ex.Response).GetResponseStream(), System.Text.Encoding.UTF8))
  76. {
  77. resultJson = sr.ReadToEnd();
  78. //{"errcode":404,"errmsg":"request api doesn't exist"}
  79. Dictionary< string, object> dict = JsonToDictionary(resultJson);
  80. string errCode = "10086";
  81. string errMsg = "发送推送的请求地址不存在或无法连接";
  82. if (dict.ContainsKey("errcode"))
  83. {
  84. errCode = dict[ "errcode"].ToString();
  85. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值