简介

消息推送(Push)指运营人员通过自己的产品或第三方工具对用户移动设备进行的主动消息推送。用户可以在移动设备锁定屏幕和通知栏看到push消息通知,通知栏点击可唤起APP并去往相应页面。我们平时在锁屏上看到的微信消息等等都属于APP消息推送行列。使用极光推送, C# 服务端推送到 Demo App,Android 手机收到推送,整理为十个步骤,使用十分钟左右,完成从注册账号到 Android 手机上的 Demo App 收到推送。

步骤

1.注册极光账号 注册页面:https://www.jiguang.cn/accounts/register/form

2.创建应用 控制台:https://www.jiguang.cn/dev/#/app/list

创建应用:https://www.jiguang.cn/dev/#/app/create

创建之后回到应用管理:https://www.jiguang.cn/dev/#/app/list

3.获取 AppKey 和 Master Secret 点击应用管理界面的应用详情 获取 AppKey 和 Master Secret

4.下载 Demo 在上一步骤的同一界面下载 Demo 点击扫描下载安装包

手机下载安装即可,安装好之后打开 Demo App。

5.下载 jpush-api-csharp-client 项目地址:https://github.com/jpush/jpush-api-csharp-client/releases

  1. VS 打开项目,安装依赖 NuGet 包管理工具会下载 jpush-api-csharp-client 和 Newtonsoft 依赖。

7.替换 AppKey 和 Master Secret

主要方法

添加标签

public Result AddDeviceTags(string userId, HashSet<string> tags){return SetDeviceTags(userId, tags, Action.AddDeviceTags);}

移除标签

public Result RemoveDeviceTags(string userId, HashSet<string> tags){return SetDeviceTags(userId, tags, Action.RemoveDeviceTags);}

添加别名

public void AddAlias(string registrationId, string alias){if (string.IsNullOrWhiteSpace(registrationId) || string.IsNullOrWhiteSpace(alias))throw new Exception("设备标识和别名不能为空。");var result = DeviceClient.UpdateDeviceInfo(registrationId, new DevicePayload { Alias = alias });if (result.StatusCode == HttpStatusCode.OK)return;var errorMsg =$"别名添加失败,HTTP 状态码:{result.StatusCode}" +$",返回信息:{result.Content}" +$",别名:{alias},设备标识:{registrationId}";WriteErrorLog(errorMsg);}

生成标签推送信息

private PushPayload PushPayloadForTag(){var notification = GetNotification();SetIosSoundSilent(notification);if (Audiences.Count > 20){Audiences.RemoveRange(20, Audiences.Count - 20);WriteErrorLog("消息推送标签超过20个,自动取前20个进行推送。");}return new PushPayload{Platform = new List<string> { "android", "ios" },Audience = new { tag = Audiences.ToArray() },//"all",//Notification = notification,Options = new Options { TimeToLive = TimeToLive, IsApnsProduction = IsApnsProduction() }};}

发送消息推送

public bool Send(){PushPayload payload;switch (PushType){case PushType.Tag:if (Audiences == null || Audiences.Count == 0)throw new Exception("推送目标集合不能为空。");payload = PushPayloadForTag();break;case PushType.Alias:if (Audiences == null || Audiences.Count == 0)throw new Exception("推送目标集合不能为空。");payload = PushPayloadForAlias();break;case PushType.All:// 极光免费版限制了广播次数,每天10次,现改为标签推送代替//payload = PushPayloadForAll();//zsj 2021-01-19 先兼容下之前调用此处代码没给Category赋值的Category== ProgramCategory.None,后续排查完后这段代码这删掉if (Category == ProgramCategory.Basketball || Category == ProgramCategory.None)Audiences = new List<string> { UserBll.BroadcastTagBasketball };else if (Category == ProgramCategory.Football)Audiences = new List<string> { UserBll.BroadcastTagFootball };else if (Category == ProgramCategory.ESports)Audiences = new List<string> { UserBll.BroadcastTagESports };payload = PushPayloadForTag();break;default:return false;}try{//zsj 2021-05-31 计算推送前后的时间差DateTime dtNow = DateTime.Now;//  WriteErrorLog("极光开始推送,JPushClient,推送前时间:" + dtNow + ";ContentId[即AssociateId]=" + ContentId + ";Title=" + Title + ";Message=" + Message + ";ContentTitle=" + ContentTitle, Xmzy.Common.Tools.Log.LogSource.ApiExecute, "极光推送");if (payload.Options == null){payload.Options = new Options() { TimeToLive = 60 * 60 * 3 };}else{payload.Options.TimeToLive = 60 * 60 * 3;}if (isdisand == "0"){List<string> p = new List<string>();p.Add("ios");//["android", "ios","quickapp"]payload.Platform = p.ToArray();//  "platform": "all",}var result = JPushClient.SendPush(payload);DateTime dtNow2 = DateTime.Now;TimeSpan ts = dtNow2 - dtNow;// WriteErrorLog("极光开始推送,JPushClient,推送后时间:" + dtNow2 + ";间隔相差" + ts.TotalSeconds + "秒" + ";ContentId[即AssociateId]=" + ContentId + ";Title=" + Title + ";Message=" + Message + ";ContentTitle=" + ContentTitle, Xmzy.Common.Tools.Log.LogSource.ApiExecute, "极光推送");_Logger.Error("payload------" + JsonConvert.SerializeObject(payload));_Logger.Error("result-----------" + JsonConvert.SerializeObject(result));if (result.StatusCode != HttpStatusCode.OK){WriteErrorLog("消息推送失败,HTTP 状态码:" + result.StatusCode+ ",返回信息:" + result.Content + "。");}return true;}catch (Exception e){WriteErrorLog(e.Message);return false;}}

C# Jpush 极光推送消息推送相关推荐

  1. 【转】推送消息推送机制

    原文链接:推送消息&推送机制 - 知乎 消息推送(push)用一句话解释就是:服务端向客户端发送了一条消息,我们在通知栏.锁屏通知.微信消息等等之类的都是消息推送. 1/推送类型有哪些? 消息 ...

  2. Uni-app Android 离线打包集成 uni-push(个推)消息推送

    转载:Uni-app Android 离线打包集成 uni-push(个推)消息推送 1.首先去官网下载Android离线SDK(下载地址) 2.在下好的SDK中找到aps-release.aar, ...

  3. H5+个推实现消息推送服务

    网上看了几篇教程都是比较老的版本了,根据前人的智慧,然后自己摸索了下,简单几步实现了在手机上推送自定义的消息. 首先,在个注册个账号,开发阶段使用个人注册即可,个推注册地址 注册完进入配置页面,对应用 ...

  4. android手机收不到推送消息推送消息,如何解决 嵌入融云SDK后, Android 手机收不到消息推送?...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 很多人在嵌入融云SDK之后,遇到过Android手机收不到消息推送问题.下面来给大家一些干货.解决Android类手机收不到消息推送的解决方法.供大家参考 ...

  5. 服务器极光推送消息推送,极光后台服务器推送消息通知

    1:推送工具类 package com.jetf.util; import java.util.Map; import org.slf4j.Logger; import org.slf4j.Logge ...

  6. android手机收不到推送消息推送消息,锁屏时收不到微信通知?那是因为你少了这些设置!...

    我们会在手机上安装微信.QQ等无数社交或新闻推送类的APP,但最令人尴尬的就是收不到消息通知,或是出现消息延时等问题.那么,如何才能100%确保APP的通知消息不受影响呢? 找回丢失的微信通知 对An ...

  7. 手机 服务器 推送消息推送消息,推送信息到手机的pushover使用方法及sample code

    今天给大家介绍一个好东西,用了两年多了,一直没时间给大家推荐.pushover,移动端的信息推送服务API,包括使用.设置以及API实现. 用途 在关键节点放上推送(比如用户注册.举报.评论,系统检测 ...

  8. android热门消息推送横向测评![转]

    关于这个话题,已经不是什么新鲜事了.对于大多数中小型公司一般都是选择第三方的服务来实现.但是现在已经有很多提供推送服务的公司和产品,如何选择一个适合自己项目的服务呢?它们之间都有什么差别?在此为大家做 ...

  9. Flutter在Android平台实现消息推送

    1. 极光推送平台申请应用 1. 注册极光推送平台: 极光官方平台 2. 极光推送平台创建应用: 填写应用程序名称. 选择平台,选择服务,点击下一步. 需要输入应用包名(Android平台),选择渠道 ...

最新文章

  1. chrome开发者工具功能拾遗:Sources面板篇
  2. 使用TS自动抓取镜像
  3. Jackson 注解 -- 使用 Map存储JSON
  4. linux 文档属于apache,Apache 安装和使用文档
  5. yuki翻译器钩子_git hooks钩子
  6. 互联网日志的种类、存储和计算
  7. 国内首款全国产固态硬盘控制芯片发布
  8. JAVA不同类型数组重载_JAVA补课-DAY1:方法重载和数组
  9. MySQL · 源码分析 · change master to
  10. 邹建的实现分页的通用存储过程
  11. 主板检测卡c5_检测升级 | 华北工控推出机器视觉检测系统计算机产品方案
  12. C程序100例 第一题
  13. byte用json存 c++_.NET Core 3.1中的Json互操作最全解读收藏级
  14. postgres常用命令
  15. bus,device,driver三者关系
  16. jquery怎么创建一个img标签
  17. html图片右边加竖线,插入Html竖线代码
  18. 单反相机的传奇—佳能单反50年辉煌之路(连载十八)
  19. 谁能谈谈国外软件行业的实际情况么?(全美“50大好差事” 软件工程师排名第一)...
  20. python小游戏:教你如何称霸朋友圈

热门文章

  1. 想了好久 请多多指教
  2. shell 获取值 默认值
  3. java.util.ConcurrentModificationException异常
  4. Linux 释放缓存的方法
  5. 《信息存储与管理》读书笔记7 存储虚拟化
  6. 有研究irrlicht引擎的吗,交流交流
  7. 确定最佳聚类数matlab代码_详解DBSCAN聚类
  8. P3174 [HAOI2009]毛毛虫(树形dp)
  9. omnipay支付--支付宝支付
  10. mysql数值类型总结及常用函数