1. 极光推送总结
应用场景:在我们的项目中我们用的是创建视频会议和预警消息通知推送这两种情况,首先创建视频会议和中途邀请人参加会议我采用的是自定义推送消息,因为此应用场景传递的参数比较多,在推送过去之后android和ios可以很方便的将参数传递过去,但是我们考虑到邀请的所有人都在登录状态的时候才可以创建会议房间,我们采用的是腾讯视频会议的sdk,因为我们采用的是别名推送,当用户在登录的时候安卓端将用户uuid设置为别名,退出时取消别名,我在服务端根据传递过来的uuid利用别名查询registration_ids的数组大小是否为空判断当前用户是否设置别名,当邀请的所有人都设置了别名之后我才调用创建会议房间的接口。而预警消息推送我采用的是通知推送,当气象预警触发的时候我会采用通知推送的方式推送给app,这种方式比较简单。
极光推送是给app推送消息的,我们首先需要在服务端集成maven依赖
<!-- 极光推送 -->
<groupId>cn.jpush.api
<artifactId>jpush-client
<version>3.2.3
</dependency>
接着我们需要了解极光推送有哪些推送方式,对于安卓和ios都适用的情况,我在项目中使用的是别名推送alias,(还有标签推送tag),推送方式又分为通知推送和自定义推送,通知推送能够显示在手机提示框中,而自定义推送却不能,我看安卓他们做的能跟微信视频一样的弹出一个会话框,看着挺不错的,这跟微信不同的是可以邀请多个,之前用阿里云的好像只能一对一,所以才换成腾讯视频会议的,好了,废话不多说,上我写的一个工具类,
package com.jpxx.homepage.homePage.service.utils;
import cn.jpush.api.JPushClient;
import cn.jpush.api.push.PushResult;
import cn.jpush.api.push.model.Options;
import cn.jpush.api.push.model.Platform;
import cn.jpush.api.push.model.PushPayload;
import cn.jpush.api.push.model.audience.Audience;
import cn.jpush.api.push.model.notification.Notification;
import cn.jpush.api.push.model.Message;
import cn.jpush.api.push.model.PushPayload.Builder;
public class SendMessageUtils {
private static StringAppKey="8a7880c6fb81ad494b224078";
/**
* JPush MasterSecret 极光推送平台生成的密钥
*/
private static StringMasterSecret="c0fc675c4c48f9bf35269cf4";
//两个参数分别填写你申请的masterSecret和appKey
private static JPushClientjPushClient=new JPushClient(MasterSecret,AppKey);
/**
* 通知推送
* 备注:推送方式不为空时,推送的值也不能为空;推送方式为空时,推送值不做要求
* @param type 推送方式:1、“tag”标签推送,2、“alias”别名推送
* @param value 推送的标签或别名值
* @param alert 推送的内容
*/
public static StringpushNotice(String type,String title,String value,String alert,int roomId,String MessageType,String name,String promoterAdavter,String meetingTitle,String sig){
Builder builder= PushPayload.newBuilder();
builder.setPlatform(Platform.all());//设置接受的平台,all为所有平台,包括安卓、ios、和微软的
//设置如果用户不在线、离线消息保存的时间
Options options=Options.sendno();
options.setTimeToLive(86400l); //设置为86400为保存一天,如果不设置默认也是保存一天
builder.setOptions(options);
builder.setMessage(Message.newBuilder()
.setMsgContent(value)
.setTitle(title)
.addExtra("roomId",roomId)
.addExtra("MessageType",MessageType)
.addExtra("name",name)
.addExtra("promoterAdavter",promoterAdavter)
.addExtra("meetingTitle",meetingTitle)
.addExtra("userSig",sig)
.build());
//设置推送方式
if(type.equals("alias")){
builder.setAudience(Audience.alias(value));//根据别名推送
}else if(type.equals("tag")){
builder.setAudience(Audience.tag(value));//根据标签推送
}else{
builder.setAudience(Audience.all());//Audience设置为all,说明采用广播方式推送,所有用户都可以接收到
}
//设置为采用通知的方式发送消息
builder.setNotification(Notification.alert(alert));
PushPayload pushPayload=builder.build();
System.out.println("ggggggg"+pushPayload);
try{
//进行推送,实际推送就在这一步
//System.out.println("zzzzzzzzz "+jPushClient.sendPush(pushPayload));
PushResult pushResult=jPushClient.sendPush(pushPayload);
return "success";
}catch(Exception e){
System.out.println("异常 "+e);
e.printStackTrace();
return "fail";
}
}
/**
* 自定义消息推送
* 备注:推送方式不为空时,推送的值也不能为空;推送方式为空时,推送值不做要求
* @param type 推送方式:1、“tag”标签推送,2、“alias”别名推送
* @param value 推送的标签或别名值
* @param alert 推送的内容
*/
public static StringpushMsg(String type,String title,String value,String alert,int roomId,String MessageType,String name,String promoterAdavter,String meetingTitle,String sig){
Builder builder= PushPayload.newBuilder();
builder.setPlatform(Platform.all());//设置接受的平台
if(type.equals("alias")){
builder.setAudience(Audience.alias(value));//别名推送
}else if(type.equals("tag")){
builder.setAudience(Audience.tag(value));//标签推送
}else{
builder.setAudience(Audience.all());//Audience设置为all,说明采用广播方式推送,所有用户都可以接收到
}
Message.Builder newBuilder=Message.newBuilder();
newBuilder.setMsgContent(alert);//消息内容
newBuilder.setTitle(title);
newBuilder.addExtra("roomId",roomId);
newBuilder.addExtra("MessageType",MessageType);
newBuilder.addExtra("name",name);
newBuilder.addExtra("promoterAdavter",promoterAdavter);
newBuilder.addExtra("meetingTitle",meetingTitle);
newBuilder.addExtra("userSig",sig);
Message message=newBuilder.build();
builder.setMessage(message);
PushPayload pushPayload=builder.build();
try{
PushResult pushResult=jPushClient.sendPush(pushPayload);
System.out.println(pushResult.isResultOK());
return "success";
}catch(Exception e){
e.printStackTrace();
return "fail";
}
}
public static void main(String[] args) {
//给标签为kefu的用户进行消息推送
//SendMessageUtils.pushMsg("alias","标题","","你有新的任务,请及时处理",111,"meetingType","name","avater","meetingTitle","");
//sendNotificationWirhAlias_Ios("zzzzzzzzzzzz","uuid");
//String result = SendMessageUtils.pushNotice("alias","标题","","你有新的任务,请及时处理",111,"meetingType","name","avater","meetingTitle","");
//System.out.println("返回结果"+result);
/*String result = SendMessageUtils.pushNotice("alias","预警标题","","dddd",0,"warnType","","","",""); //userDto.getUuId()
System.out.println("result "+result);*/
//根据uuid查询别名信息是否存在
String result = HttpRequestUtil.JGUtil("https://device.jpush.cn/v3/aliases/", "8a7880c6fb81ad494b224078","c0fc675c4c48f9bf35269cf4");//get请求
//String result = HttpRequestUtil.interfaceUtil("http://172.16.2.207:6606/daibancontroller.do?getDbxxNum", "","ydswtapp","eyJhbGciOiJIUzI1NiJ9..Cy3-");//get请求
System.out.println("result "+result);
}
}
因为我要根据前端传来的uuid判断当前用户是否登录,所以我对http方法进行了稍微改装,根据极光的api文档(文档写的不是很好找),以下是我改装的
/**
*
* 极光专用
*/
public static StringJGUtil(String path,String appKey,String masterSecret) {
String str ="";
try {
URL url =new URL(path);
//打开和url之间的连接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
PrintWriter out =null;
/**设置URLConnection的参数和普通的请求属性****start***/
String base64String=appKey+":"+masterSecret;
System.out.println("拼接的 "+base64String);
String str2=base64String;
String encode =new BASE64Encoder().encode(str2.getBytes());
System.out.println("编码过后:"+encode);
String auth ="Basic "+encode;
System.out.println("最终的 "+auth);
conn.setRequestProperty("Authorization", auth);
conn.setRequestProperty("Content-Type", "application/json");
//conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
/**设置URLConnection的参数和普通的请求属性****end***/
//设置是否向httpUrlConnection输出,设置是否从httpUrlConnection读入,此外发送post请求必须设置这两个
//最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,
//post与get的 不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("GET");//GET和POST必须全大写
/**GET方法请求*****start*/
/**
* 如果只是发送GET方式请求,使用connet方法建立和远程资源之间的实际连接即可;
* 如果发送POST方式的请求,需要获取URLConnection实例对应的输出流来发送请求参数。
* */
conn.connect();
/**GET方法请求*****end*/
/***POST方法请求****start*/
/*out = new PrintWriter(conn.getOutputStream());//获取URLConnection对象对应的输出流 out.print(data);//发送请求参数即数据 out.flush();//缓冲数据*/
/***POST方法请求****end*/
//获取URLConnection对象对应的输入流
InputStream is = conn.getInputStream();
//构造一个字符流缓存
BufferedReader br =new BufferedReader(new InputStreamReader(is));
while ((str = br.readLine()) !=null) {
str =new String(str.getBytes(), "UTF-8");//解决中文乱码问题
System.out.println("wwwww"+str);
return str;
}
//关闭流
is.close();
//断开连接,最好写上,disconnect是在底层tcp socket链接空闲时才切断。如果正在被其他线程使用就不切断。
//固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上disconnect后正常一些。
conn.disconnect();
System.out.println("完整结束");
}catch (Exception e) {
e.printStackTrace();
}
return "success";
}
好了,以后再写类似的就会写了,这里附上极光文档的链接 https://docs.jiguang.cn/jpush/server/push/server_overview/
2. 极光推送的服务的安全性,有哪些保障与方案
极光推送的服务的安全性,有以下保障方案:
一、消息审核+黑词检测,内容准确“双保险”
极光推送安全包提供消息审核及黑词检测功能,运营人员可以提前配置词汇黑名单,在消息发送时,系统会检测消息的标题及内容是否含有黑名单中的“黑词”,从而及时提醒运营人员修改相关内容,避免错发测试消息或误发敏感词汇。
二、消息一键无痕撤回,拒绝推送事故
搭载极光推送安全包,在推送下发后,若运营人员发现推送内容有误,可立即进行消息撤回操作,还未下发的消息将停止下发,已送至客户端但用户还未点击的消息将无痕消失,帮助 APP有效降低因消息误发造成的用户流失、信任降低等不利影响。
三、杜绝重复推送,用户打扰少一点,留存自然多一点
对于用户体量大的企业来说,极小的失误也会被无限放大,一条同样的消息在一天内重复发送给同一用户,势必会造成打扰,且严重影响用户的使用体验。而极光可以从推送服务端检测同一个 UID 是否多次下发标题、内容相同的消息,有效避免消息重复推送,降低用户流失。
四、IP白名单+消息国密加密,为消息安全站岗
极光推送可为消息内容进行国密加密,极大提高了消息传输的安全性,降低信息泄漏风险。
极光会校验推送API调用的IP和登录web portal后台的IP是否在白名单内,符合白名单的 IP 才允许进行登录、调用等相关操作,进一步提高账户安全性,杜绝因运营人员账号密码意外泄露或被不法人员盗取而推送不当消息的情况,特别适用于金融保险、政府政务等对推送安全要求极高的 APP。
3. 极光推送服务怎么开启
开启极光推送服务使用过程中的配置步骤:1、去极光官网注册一个账号,并且新建一个项目。注意包名。然后下载android的例子工程。2、自己在本地创建一个和刚才一样包名的工程。3、相应的代码和资料。包括 manifest.xml的一些权限。剔除一些自己不需要的然后复制进来即可。
JPush 是经过考验的大规模 App 推送平台,每天推送消息量级为数百亿条。 开发者集成 SDK 后,可以通过调用 API 推送消息。同时,JPush 提供可视化的 web 端控制台发送通知,统计分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手机平台。
极光先后推出了极光即时通讯云(JMessage)、极光短信服务(JSMS)、极光统计(JAnalytics)、极光分享(JShare)等开发者服务。极光IM(JMessage) 致力于帮助app解决应用内聊天及跨应用聊天问题,快速集成SDK,提供稳定可靠的APP用户间聊天功能。
至2015年12月初,极光推送已经覆盖了近10亿Android、IOS终端,30多万款APP应用,服务总用户数超过30亿,每天消息推送量达5亿多条,已成为移动应用数据平台。
4. 极光推送sdk好用吗
极光推送很好用的,极光JPush 提供四种消息形式:通知,自定义消息,富媒体和本地通知。1、通知。或者说 Push Notification,即指在手机的通知栏(状态栏)上会显示的一条通知信息。 通知主要用来达到提示用户的目的,应用于新闻内容、促销活动、产品信息、版本更新提醒、订单状态提醒等多种场景。
2、自定义消息。自定义消息不是通知,所以不会被 SDK 展示到通知栏上。其内容完全由开发者自己定义。 自定义消息主要用于应用的内部业务逻辑。一条自定义消息推送过来,有可能没有任何界面显示。
3、富媒体。JPush 支持开发者发送图文并茂的通知,从而更好的传达信息,带来更丰富的用户互动。 JPush 提供了 5 种模板,开发者可以通过填充模板的内容,发送 landing page、弹窗、信息流形式的富媒体通知。 开发者还可以直接通过 URL 发送预先编辑好的页面。
好的推送可以给使用者带来舒适的体验和无限的机遇,极光推送是个不错的选择。JPush 提供可视化的 web 端控制台发送通知,统计分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手机平台。
5. web中的消息推送和实时通知怎么做
Web端 常见的消息推送实际上大多数都是模拟推送,之所以是模拟推送,是因为这种实现并不是服务器主动推送,本质依旧是客户端发起请求,服务端返回数据,起主动作用的是客户端。短轮询:实现上最简单的一种模拟推送方法,原理就是客户端不断地向服务端发请求,如果服务端数据有更新,服务端就把数据发送回来,客户端就能接收到新数据了。
消息推送可以试一试极光。Push 支持开发者直接通过极光推送的控制台,通过地图圈选一个经纬度范围,创建一个虚拟的栅栏围出一个虚拟地理边界,当开发者APP的用户进入、离开这个区域,或在该区域内活动时,设备APP可以自动接收通知,实现准确的消息推送,把有用的信息,在合适的地方,推送给合适的人。
6. 极光推送怎么实现的
极光推送就是第三方平台推送消息,匹配多端推送,可以支持的设备有Android、ios、winphone,具体操作步骤如下:一、首先注册极光服务账号,登录后进入应用设置,记录AppKey和Master Secret,java后台开发者要用到。
二、点击“推送设置”:设置Android和iOS:Android应用包名自己定义,下载demo,Android开发人员查看集成指南,将sdk集成到项目中。iOS应用包名自己定义,下载demo,iOS开发人员查看集成指南,将sdk集成到项目中。
?
三、Android和iOS分别在自己的业务内调用java提供的后台接口:用户和极光id绑定接口。
绑定成功后发送通知,模拟发一条通知:预估人数是1,这是极光后台返回的值。
?
四、发送后就显示推送历史。
至2015年12月初,极光推送已经覆盖了近10亿Android、IOS终端,30多万款APP应用,服务总用户数超过30亿,每天消息推送量达5亿多条,已成为移动应用数据平台。开放注册,免费使用;服务器端推送。富媒体推送功能,云端部署服务器超过2000台。
JPush 是经过考验的大规模 App 推送平台,每天推送消息量级为数百亿条。 开发者集成 SDK 后,可以通过调用 API 推送消息。同时,JPush 提供可视化的 web 端控制台发送通知,统计分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手机平台。
7. 有用过极光推送服务产品的用户吗他们的消息推送服务有什么优势,消息推送服务安全性高
极光推送有如下优势:1、多重保障机制:消息审核、黑词管理、无痕撤回等多重安全保障机制,确保每一条消息都准确严谨。
2、高规格信息加密:消息采用国密加密算法,从技术底层打好安全基础。
3、贴心的功能体验:同时支持 API 和 Web 控制台进行相关安全功能操作。
4、7*24小时专人专线服务:专属安全团队支持,24 小时随时响应,免除后顾之忧。
极光推送安全包为金融、新闻、政务及其他对推送安全要求极高的客户提供安全严谨、稳定可靠的消息推送解决方案。
极光多种消息类型,开发者可以轻松地通过极光发送各个移动平台的系统通知,还可以在控制台编辑多种富文本展示模板; 极光还提供自定义消息的透传,客户端接到消息内容后根据自己的逻辑自由处理。
8. 应用在国外,是否能收到极光推送的服务,及时性怎样
极光推送的业务在国外是可以正常使用的,只要当地对于网络没有访问限制。极光推送的使用者中有欧洲,美国和东南亚,韩国日本等地区的用户。
而且极光推送为了更好服务东南亚和香港,台湾等地区专门在香港部署了服务器,我们也会随着其他区域的用户数增长在当地部署服务器。
JPush是经过考验的大规模APP推送平台,每天推送消息数超过5亿条。 开发者集成SDK后,可以通过调用API推送消息。同时,JPush提供可视化的web端控制台发送通知,统计分析推送效果。 JPush全面支持 Android, iOS, Winphone 三大手机平台。
JPush除了有着完善的控制台外,还提供了服务端的接口,方便开发者的服务器调用,方便开发者对于应用管理、整合即通过应用服务器极光服务器推送服务器用户设备,简化了服务器端的开发强度,也方便运营期间发送推送消息的流程。
9. 极光推送 可以推送根据某一个具体的用户进行推送吗
JPush极光推送可以只推送给指定的那部分android用户,通过使用标签,别名,Registration ID 和用户分群,开发者可以向特定的一个或多个用户推送消息。JPush 是经过考验的大规模 App 推送平台,每天推送消息量级为数百亿条。 开发者集成 SDK 后,可以通过调用 API 推送消息。同时,JPush 提供可视化的 web 端控制台发送通知,统计分析推送效果。
开发者可以轻松地通过极光发送各个移动平台的系统通知,还可以在控制台编辑多种富文本展示模板; 极光还提供自定义消息的透传,客户端接到消息内容后根据自己的逻辑自由处理。
截止到2020年12月份,极光已经为约 169.8万 款移动应用提供服务,其开发工具包(SDK)安装量累计467亿,月度独立活跃设备 14亿部
10. 极光推送服务是什么,极光推送怎么样
极光推送服务是一款免费的第三方推送消息的平台。极光推送从整体来说还不错,具有以下优势:1、开放注册,免费向所有的开发者开放使用。
2、极光推送 - JPush SDK
JPush 是经过考验的大规模 App 推送平台,每天推送消息量级为数百亿条。 开发者集成 SDK 后,可以通过调用 API 推送消息。同时,JPush 提供可视化的 web 端控制台发送通知,统计分析推送效果。
3、开发者可以轻松地通过极光发送各个移动平台的系统通知,还可以在控制台编辑多种富文本展示模板; 极光还提供自定义消息的透传,客户端接到消息内容后根据自己的逻辑自由处理。
4、7*24小时专人专线服务:专属安全团队支持,24 小时随时响应,免除后顾之忧。
所以从以上来看,极光是一个不错的选择,深圳市和讯华谷信息技术有限公司(极光 Aurora Mobile,纳斯达克股票代码:JG)成立于2011年,是中国领先的开发者服务提供商,专注于为开发者提供稳定高效的消息推送、一键认证以及流量变现等服务,助力开发者的运营、增长与变现。
同时,极光的行业应用已经拓展至市场洞察、金融风控与商业地理服务,助力各行各业优化决策、提升效率。