C# Jpush 极光推送消息推送

简介

消息推送(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;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 环境变量 $PATH

我们知道查阅文件属性的指令 ls 完整文件名为&#xff1a;/bin/ls(这是绝对路径)&#xff0c;那为什么可以在任何地方执行/bin/ls 这个指令呢&#xff1f; 为什么在任何目录下输入 ls 就一定可以显示出一些讯息而不会说找不到该 /bin/ls 指令呢&#xff1f; 这是因为环境变量 …

文件项目SVN+TortoiseSVN+Subclipse使用总结

近来使用开辟的过程中涌现了一个小问题&#xff0c;顺便记录一下原因和方法--文件项目 一、SVN、TortoiseSVN、Subclipse分析 团队开辟技术&#xff1a; (1)单元测试&#xff1b;(2)版本控制&#xff1b; (3)项目主动化&#xff1b; SCM:软件配置管理&#xff0c;包含SVN&#…

PHP中常见的五种设计模式

设计模式只是为 Java架构师准备的 — 至少您可能一直这样认为。实际上&#xff0c;设计模式对于每个人都非常有用。如果这些工具不是 “架构太空人” 的专利&#xff0c;那么它们又是什么&#xff1f;为什么说它们在 PHP 应用程序中非常有用&#xff1f;本文解释了这些问题。 设…

Java常用类集接口以及实现方式总结

最近学习map-reduce原理以及map-reduce编程&#xff0c;于是顺带着学习下Java编程&#xff0c;对于Java常用的数据结构和类集&#xff0c;我总结到mind图中&#xff0c;便于理清相互之间的关系 package leiji; import java.util.ArrayList; import java.util.List; import java…

Android之Launcher分析和修改1——Launcher默认界面配置(default_workspace)

www.cnblogs.com/mythou/p/3153880.html 最近工作都在修改Launcher&#xff0c;所以打算把分析源码和修改源码的过程记录下来&#xff0c;最近会写一些关于Launcher的分析和修改博文。因为我是修改4.0.3的Launcher&#xff0c;所以后面文章里面的Launcher都是基于Android4.0.…

在 .NET Core 中如何让 Entity Framework Core 在日志中记录由 LINQ 生成的SQL语句

在开发中&#xff0c;我们想在调试中查看EF Core执行的sql语句&#xff0c;可以使用SQL Studio Manager Tools工具&#xff0c;另一种方式是使用EF Core提供的日志。在ASP.NET Core使用Entity Framework Core的日志.早在Entity Framework Core1.0 ,使用相关的ILoggerProvider I…

如果你喜欢上了一个程序员小伙 献给所有程序员女友(来自ITeye博客的文章 作者:talent2012)...

程序员向来是善于幽默自嘲的群体&#xff0c;但从某种程度上影响了咱程序员在广大女同胞心中的印象啊&#xff5e;&#xff5e; 于是写下此篇&#xff08;有从别处看到的3句加进来的&#xff09;&#xff0c; 就算是为咱程序员做个广告&#xff5e;&#xff5e;要是觉得有点过的…

豆瓣9.6分!这部BBC的纪录片太让人震撼!

全世界只有3.14 % 的人关注了爆炸吧知识英国广播公司BBC的纪录片素来就是高质量的代名词&#xff0c;推出的《地球无限》(Planet Earth)、《地球的力量》(Earth The Power of the Planet)、《冷血生命》(Life In Cold Blood)等片不仅在英国播放时获得极高收视&#xff0c;还获得…

vim-snipmate编写snippet的语法

vim-snipmate真的很好用&#xff0c;以前好多编写代码的问题得到完美的解决。还附带提升我对vim的理解和信心&#xff0c;在这里感谢一下作者。thank you。 1、现说一下我浓缩的重要语法。 1、定义是下面这样&#xff0c;注意中间必须是一个制表符<TAB>不能用空格代替。 …

Android之Launcher分析和修改2——Icon修改、界面布局调整、壁纸设置

上一篇文章说了如何修改Android自带Launcher2的默认界面设置&#xff08;http://www.cnblogs.com/mythou/p/3153880.html&#xff09;。 今天主要是说说Launcher里面图标、布局、壁纸等的设置问题。毕竟我们一般修改Launcher&#xff0c;这些都是需要修改的地方&#xff0c;也是…

捷径 - The certain shortcut

赛斯高汀(Seth Godin)的博客&#xff1a;http://sethgodin.typepad.com/seths_blog/2013/05/the-certain-shortcut.html The shortcut thats sure to work, every time: 所谓的捷径向来如此&#xff1a; Take the long way. 脚踏实地&#xff0c;一步一个脚印(遍历) Do t…

高效率三大法则总结

原则一&#xff1a;专注 之前经常听到很多人所谓的牛人&#xff0c;说什么边干活的时候可以开着msn、qq&#xff0c;工作和娱乐两不误&#xff0c;边听下属汇报的同时边写下午会议的发言稿&#xff0c;然而科学事实证明人类的大脑硬件结构决定了根本不可能一脑两用&#xff0c;…

N 年沉淀,腾讯这套系统终于开源!

大家好&#xff0c;我是鱼皮&#xff0c;前段时间给大家介绍了字节跳动开源的两套设计系统&#xff0c;分别是 Arco Design 和抖音 Semi Design。而就在几天前&#xff0c;腾讯终于也开源了自家的设计系统 TDesgin &#xff01;这次&#xff0c;终于能介绍自己公司的项目了。如…

在php中使用sockets:从新闻组中获取文章

PHP能打开远程或本地主机上的Socket端口。本文是一个使用Socket的小例子&#xff1a;连 接到一个Usenet新闻组服务器&#xff0c;同服务器对话&#xff0c;从新闻组中下载一些文章。在php中打开一个socket 使用fsockopen()打开一个socket.这个函数在php3和php4种都可以使用。函…

Android之Launcher分析和修改3——Launcher启动和初始化

前面两篇文章都是写有关Launcher配置文件的修改&#xff0c;代码方面涉及不多&#xff0c;今天开始进入Launcher代码分析。 我们开机启动Launcher&#xff0c;Launcher是由Activity Manager启动的&#xff0c;而Activity Manager是由system server启动。 原创博文&#xff0c…

史上最强物理科普!

全世界只有3.14 % 的人关注了爆炸吧知识一沙见世界 一花窥天堂手心握无限 须臾纳永恒杨振宁曾说读上面的四句诗可以感受到物理的美但物理的美不止于此物理还有一种庄严美一种神秘美一种初窥宇宙奥秘的畏惧美物理就是如此的迷人任何语言在它的面前都很贫瘠数学让人摆脱了愚昧而…

mysql 怎么实现随机查询并分页,不重复查询

2019独角兽企业重金招聘Python工程师标准>>> 需求&#xff1a; 企业应用中&#xff0c;一般数据量不是很特别多&#xff0c;同时大多在局域网内&#xff0c;性能不会有问题&#xff0c;一般不会分页处理&#xff0c;随机排序数据一般不会有问题 web网站中&#xf…

评分卡模型剖析之一(woe、IV、ROC、信息熵)

信用评分卡模型在国外是一种成熟的预测方法&#xff0c;尤其在信用风险评估以及金融风险控制领域更是得到了比较广泛的使用&#xff0c;其原理是将模型变量WOE编码方式离散化之后运用logistic回归模型进行的一种二分类变量的广义线性模型。 本文重点介绍模型变量WOE以及IV原理&…

主机远程唤醒配置

配置&#xff1a;win10戴尔主机F2进biosbios设置2.系统设置3.以太网设置4.电源管理设置以上设置完成后关机&#xff0c;就可以在远程电脑上打开WakeMeOnLan&#xff0c;然后添加或者搜索需要唤醒的电脑的ip&#xff0c;mac和主机名称&#xff0c;然后就可以唤醒远程主机了查看m…

Java字节序,java整型数与网络字节序 byte[] 数组转换关系

Java字节序 http://origin100.iteye.com/blog/267165 /*** 通信格式转换** Java和一些windows编程语言如c、c、delphi所写的网络程序进行通讯时&#xff0c;需要进行相应的转换* 高、低字节之间的转换* windows的字节序为低字节开头* linux,unix的字节序为高字节开头* java则无…