
个推推送和极光推送都是独立的第三方消息推送服务产品,都能帮助APP快速实现客户端消息推送功能。个推是国内移动推送领域的早期进入者,于2010年推出个推消息推送SDK产品,十余年来持续为移动开发者提供稳定、高效、智能的消息推送服务,成功服务了人民日报、新华社、CCTV、新浪微博等在内的数十万APP客户。2017年统一推送联盟成立,个推是唯一一家成为副理事长单位的第三方消息推送服务商。个推还牵头起草了国内首份SDK安全国家标准《信息安全技术 移动互联网应用程序(APP)SDK安全指南》,在行业影响力和产品合规性方面表现优异。
在具体的产品功能上,个推额外提供了一系列助力到达率和点击率提升的功能,比如超长消息截短、添加标签、活跃用户圈选、推送后效人群洞察等等。同时,在消息推送的后效转化链路数据方面也更加完善,回执的明细数据直接给到开发者,产品力获得众多开发者的好评。您可以直接注册/登录个推开发者中心免费使用体验。
APP精细化消息运营
应用场景:在我们的项目中我们用的是创建视频会议和预警消息通知推送这两种情况,首先创建视频会议和中途邀请人参加会议我采用的是自定义推送消息,因为此应用场景传递的参数比较多,在推送过去之后android和ios可以很方便的将参数传递过去,但是我们考虑到邀请的所有人都在登录状态的时候才可以创建会议房间,我们采用的是腾讯视频会议的sdk,因为我们采用的是别名推送,当用户在登录的时候安卓端将用户uuid设置为别名,退出时取消别名,我在服务端根据传递过来的uuid利用别名查询registration_ids的数组大小是否为空判断当前用户是否设置别名,当邀请的所有人都设置了别名之后我才调用创建会议房间的接口。而预警消息推送我采用的是通知推送,当气象预警触发的时候我会采用通知推送的方式推送给app,这种方式比较简单。
极光推送是给app推送消息的,我们首先需要在服务端集成maven依赖
<!-- 极光推送 -->
<groupId>cnjpushapi
<artifactId>jpush-client
<version>323
</dependency>
接着我们需要了解极光推送有哪些推送方式,对于安卓和ios都适用的情况,我在项目中使用的是别名推送alias,(还有标签推送tag),推送方式又分为通知推送和自定义推送,通知推送能够显示在手机提示框中,而自定义推送却不能,我看安卓他们做的能跟微信视频一样的d出一个会话框,看着挺不错的,这跟微信不同的是可以邀请多个,之前用阿里云的好像只能一对一,所以才换成腾讯视频会议的,好了,废话不多说,上我写的一个工具类,
package comjpxxhomepagehomePageserviceutils;
import cnjpushapiJPushClient;
import cnjpushapipushPushResult;
import cnjpushapipushmodelOptions;
import cnjpushapipushmodelPlatform;
import cnjpushapipushmodelPushPayload;
import cnjpushapipushmodelaudienceAudience;
import cnjpushapipushmodelnotificationNotification;
import cnjpushapipushmodelMessage;
import cnjpushapipushmodelPushPayloadBuilder;
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= PushPayloadnewBuilder();
buildersetPlatform(Platformall());//设置接受的平台,all为所有平台,包括安卓、ios、和微软的
//设置如果用户不在线、离线消息保存的时间
Options options=Optionssendno();
optionssetTimeToLive(86400l); //设置为86400为保存一天,如果不设置默认也是保存一天
buildersetOptions(options);
buildersetMessage(MessagenewBuilder()
setMsgContent(value)
setTitle(title)
addExtra("roomId",roomId)
addExtra("MessageType",MessageType)
addExtra("name",name)
addExtra("promoterAdavter",promoterAdavter)
addExtra("meetingTitle",meetingTitle)
addExtra("userSig",sig)
build());
//设置推送方式
if(typeequals("alias")){
buildersetAudience(Audiencealias(value));//根据别名推送
}else if(typeequals("tag")){
buildersetAudience(Audiencetag(value));//根据标签推送
}else{
buildersetAudience(Audienceall());//Audience设置为all,说明采用广播方式推送,所有用户都可以接收到
}
//设置为采用通知的方式发送消息
buildersetNotification(Notificationalert(alert));
PushPayload pushPayload=builderbuild();
Systemoutprintln("ggggggg"+pushPayload);
try{
//进行推送,实际推送就在这一步
//Systemoutprintln("zzzzzzzzz "+jPushClientsendPush(pushPayload));
PushResult pushResult=jPushClientsendPush(pushPayload);
return "success";
}catch(Exception e){
Systemoutprintln("异常 "+e);
eprintStackTrace();
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= PushPayloadnewBuilder();
buildersetPlatform(Platformall());//设置接受的平台
if(typeequals("alias")){
buildersetAudience(Audiencealias(value));//别名推送
}else if(typeequals("tag")){
buildersetAudience(Audiencetag(value));//标签推送
}else{
buildersetAudience(Audienceall());//Audience设置为all,说明采用广播方式推送,所有用户都可以接收到
}
MessageBuilder newBuilder=MessagenewBuilder();
newBuildersetMsgContent(alert);//消息内容
newBuildersetTitle(title);
newBuilderaddExtra("roomId",roomId);
newBuilderaddExtra("MessageType",MessageType);
newBuilderaddExtra("name",name);
newBuilderaddExtra("promoterAdavter",promoterAdavter);
newBuilderaddExtra("meetingTitle",meetingTitle);
newBuilderaddExtra("userSig",sig);
Message message=newBuilderbuild();
buildersetMessage(message);
PushPayload pushPayload=builderbuild();
try{
PushResult pushResult=jPushClientsendPush(pushPayload);
Systemoutprintln(pushResultisResultOK());
return "success";
}catch(Exception e){
eprintStackTrace();
return "fail";
}
}
public static void main(String[] args) {
//给标签为kefu的用户进行消息推送
//SendMessageUtilspushMsg("alias","标题","5b9022746e284ea0992e3baa983035dc","你有新的任务,请及时处理",111,"meetingType","name","avater","meetingTitle","");
//sendNotificationWirhAlias_Ios("zzzzzzzzzzzz","uuid");
//String result = SendMessageUtilspushNotice("alias","标题","5b9022746e284ea0992e3baa983035dc","你有新的任务,请及时处理",111,"meetingType","name","avater","meetingTitle","");
//Systemoutprintln("返回结果"+result);
/String result = SendMessageUtilspushNotice("alias","预警标题","5b9022746e284ea0992e3baa983035dc","dddd",0,"warnType","","","",""); //userDtogetUuId()
Systemoutprintln("result "+result);/
//根据uuid查询别名信息是否存在
String result = >
极光大数据的极光推送服务挺不错。使用极光推送,开发者可以轻松地通过极光发送各个移动平台的系统通知,还可以在控制台编辑多种富文本展示模板; 极光推送还提供自定义标签,客户端接到消息内容后根据自己的逻辑自由处理。
海量行业数据源:在线用户4亿+,活跃用户2亿+
完善的开发者工具包:七年的开发者服务技术积累,数据安全,服务稳定
成熟的产品化能力:为app统计、广告监测、金融风控等提供专业解决方案!
精准的大数据算法体系:拥有用户标签数量500+、精准的用户画像、多维自助分析工具
极光(纳斯达克股票代码:JG)成立于2011年,是中国领先的移动大数据服务平台。极光专注于为移动应用开发者提供稳定高效的消息推送、即时通讯、统计分析、社会化组件和短信等开发者服务。
功能说明
JPush SDK 收到推送,通过广播的方式,转发给开发者App,这样开发者就可以灵活地进行处理。
这个动作不是必须的。用户有需要才定义 Receiver 类来处理 SDK过来的广播。
如果不做这个动作,即不写自定义 Receiver,也不在 AndroidManifestxml 里配置这个 Receiver,则默认的行为是:
接收到推送的自定义消息,则没有被处理
可以正常收到通知,用户点击打开应用主界面
接受广播
如果全部类型的广播都接收,则需要在 AndroidManifestxml 里添加如下的配置信息:
<receiver
android:name="Your Receiver"
android:enabled="true">
<intent-filter>
<action android:name="cnjpushandroidintentREGISTRATION" />
<action android:name="cnjpushandroidintentMESSAGE_RECEIVED" />
<action android:name="cnjpushandroidintentNOTIFICATION_RECEIVED" />
<action android:name="cnjpushandroidintentNOTIFICATION_OPENED" />
<category android:name="You package Name" />
</intent-filter>
</receiver>
每个 Receiver action 详细解释如下。
Action - cnjpushandroidintentREGISTRATION
SDK 向 JPush Server 注册所得到的注册 ID 。
一般来说,可不处理此广播信息。
要深入地集成极光推送,开发者想要自己保存App用户与JPush 用户关系时,则接受此广播,取得 Registration ID 并保存与App uid 的关系到开发者自己的应用服务器上。
使用极光推送提供的别名与标签功能,是更加简单轻便的绑定App用户与JPush用户的方式,请参考文档:别名与标签使用教程。
Intent 参数
JPushInterfaceEXTRA_REGISTRATION_ID
SDK 向 JPush Server 注册所得到的注册 全局唯一的 ID ,可以通过此 ID 向对应的客户端发送消息和通知。
Bundle bundle = intentgetExtras();
String title = bundlegetString(JPushInterfaceEXTRA_REGISTRATION_ID);
Action - cnjpushandroidintentMESSAGE_RECEIVED
收到了自定义消息 Push 。
SDK 对自定义消息,只是传递,不会有任何界面上的展示。
如果开发者想推送自定义消息 Push,则需要在 AndroidManifestxml 里配置此 Receiver action,并且在自己写的 BroadcastReceiver 里接收处理。
Intent 参数
JPushInterfaceEXTRA_TITLE
保存服务器推送下来的消息的标题。
对应 API 消息内容的 title 字段。
对应 Portal 推送消息界面上的“标题”字段(可选)
Bundle bundle = intentgetExtras();
String title = bundlegetString(JPushInterfaceEXTRA_TITLE);
JPushInterfaceEXTRA_MESSAGE
保存服务器推送下来的消息内容。
对应 API 消息内容的 message 字段。
对应 Portal 推送消息界面上的"消息内容”字段。
Bundle bundle = intentgetExtras();
String message = bundlegetString(JPushInterfaceEXTRA_MESSAGE);
JPushInterfaceEXTRA_EXTRA
保存服务器推送下来的附加字段。这是个 JSON 字符串。
对应 API 消息内容的 extras 字段。
对应 Portal 推送消息界面上的“自定义内容”。
Bundle bundle = intentgetExtras();
String extras = bundlegetString(JPushInterfaceEXTRA_EXTRA);
JPushInterfaceEXTRA_CONTENT_TYPE
保存服务器推送下来的内容类型。
对应 API 消息内容的 content_type 字段。
Bundle bundle = intentgetExtras();
String type = bundlegetString(JPushInterfaceEXTRA_CONTENT_TYPE);
JPushInterfaceEXTRA_RICHPUSH_FILE_PATH
SDK 140 以上版本支持。
富媒体通消息推送下载后的文件路径和文件名。
Bundle bundle = intentgetExtras();
String file = bundlegetString(JPushInterfaceEXTRA_RICHPUSH_FILE_PATH);
JPushInterfaceEXTRA_MSG_ID
SDK 161 以上版本支持。
唯一标识消息的 ID, 可用于上报统计等。
Bundle bundle = intentgetExtras();
String file = bundlegetString(JPushInterfaceEXTRA_MSG_ID);
Action - cnjpushandroidintentNOTIFICATION_RECEIVED
收到了通知 Push。
如果通知的内容为空,则在通知栏上不会展示通知。但是,这个广播 Intent 还是会有。开发者可以取到通知内容外的其他信息。
Intent 参数
JPushInterfaceEXTRA_NOTIFICATION_TITLE
保存服务器推送下来的通知的标题。
对应 API 通知内容的 n_title 字段。
对应 Portal 推送通知界面上的“通知标题”字段。
Bundle bundle = intentgetExtras();
String title = bundlegetString(JPushInterfaceEXTRA_NOTIFICATION_TITLE);
JPushInterfaceEXTRA_ALERT
保存服务器推送下来的通知内容。
对应 API 通知内容的 n_content 字段。
对应 Portal 推送通知界面上的“通知内容”字段。
Bundle bundle = intentgetExtras();
String content = bundlegetString(JPushInterfaceEXTRA_ALERT);
JPushInterfaceEXTRA_EXTRA
SDK 129 以上版本支持。
保存服务器推送下来的附加字段。这是个 JSON 字符串。
对应 API 通知内容的 n_extras 字段。
对应 Portal 推送通知界面上的“自定义内容”字段。
Bundle bundle = intentgetExtras();
String extras = bundlegetString(JPushInterfaceEXTRA_EXTRA);
JPushInterfaceEXTRA_NOTIFICATION_ID
SDK 135 以上版本支持。
通知栏的Notification ID,可以用于清除Notification
Bundle bundle = intentgetExtras();
int notificationId = bundlegetInt(JPushInterfaceEXTRA_NOTIFICATION_ID);
JPushInterfaceEXTRA_CONTENT_TYPE
保存服务器推送下来的内容类型。
对应 API 消息内容的 content_type 字段。
Portal 上暂时未提供输入字段。
Bundle bundle = intentgetExtras();
String type = bundlegetString(JPushInterfaceEXTRA_CONTENT_TYPE);
JPushInterfaceEXTRA_RICHPUSH_HTML_PATH
SDK 140 以上版本支持。
富媒体通知推送下载的HTML的文件路径,用于展现WebView。
Bundle bundle = intentgetExtras();
String fileHtml = bundlegetString(JPushInterfaceEXTRA_RICHPUSH_HTML_PATH);
JPushInterfaceEXTRA_RICHPUSH_HTML_RES
SDK 140 以上版本支持。
富媒体通知推送下载的资源的文件名,多个文件名用 “,” 分开。 与 “JPushInterfaceEXTRA_RICHPUSH_HTML_PATH” 位于同一个路径。
Bundle bundle = intentgetExtras();
String fileStr = bundlegetString(JPushInterfaceEXTRA_RICHPUSH_HTML_RES);
String[] fileNames = fileStrspilt(",");
JPushInterfaceEXTRA_MSG_ID
SDK 161 以上版本支持。
唯一标识通知消息的 ID, 可用于上报统计等。
Bundle bundle = intentgetExtras();
String file = bundlegetString(JPushInterfaceEXTRA_MSG_ID);
Action - cnjpushandroidintentNOTIFICATION_OPENED
用户点击了通知。
一般情况下,用户不需要配置此 receiver action。
如果开发者在 AndroidManifestxml 里未配置此 receiver action,那么,SDK 会默认打开应用程序的主 Activity,相当于用户点击桌面图标的效果。
如果开发者在 AndroidManifestxml 里配置了此 receiver action,那么,当用户点击通知时,SDK 不会做动作。开发者应该在自己写的 BroadcastReceiver 类里处理,比如打开某 Activity 。
Intent 参数
JPushInterfaceEXTRA_NOTIFICATION_TITLE
保存服务器推送下来的通知的标题。
对应 API 通知内容的 n_title 字段。
对应 Portal 推送通知界面上的“通知标题”字段。
Bundle bundle = intentgetExtras();
String title = bundlegetString(JPushInterfaceEXTRA_NOTIFICATION_TITLE);
JPushInterfaceEXTRA_ALERT
保存服务器推送下来的通知内容。
对应 API 通知内容的n_content字段。
对应 Portal 推送通知界面上的“通知内容”字段。
Bundle bundle = intentgetExtras();
String content = bundlegetString(JPushInterfaceEXTRA_ALERT);
JPushInterfaceEXTRA_EXTRA
SDK 129 以上版本支持。
保存服务器推送下来的附加字段。这是个 JSON 字符串。
对应 API 消息内容的 n_extras 字段。
对应 Portal 推送通知界面上的“自定义内容”字段。
Bundle bundle = intentgetExtras();
String type = bundlegetString(JPushInterfaceEXTRA_EXTRA);
JPushInterfaceEXTRA_NOTIFICATION_ID
SDK 135 以上版本支持。
通知栏的Notification ID,可以用于清除Notification
Bundle bundle = intentgetExtras();
int notificationId = bundlegetInt(JPushInterfaceEXTRA_NOTIFICATION_ID
JPushInterfaceEXTRA_MSG_ID
SDK 161 以上版本支持。
唯一标识调整消息的 ID, 可用于上报统计等。
Bundle bundle = intentgetExtras();
String file = bundlegetString(JPushInterfaceEXTRA_MSG_ID);
代码示例
public void onReceive(Context context, Intent intent) {
Bundle bundle = intentgetExtras();
Logd(TAG, "onReceive - " + intentgetAction());
if (JPushInterfaceACTION_REGISTRATION_IDequals(intentgetAction())) {
} else if (JPushInterfaceACTION_MESSAGE_RECEIVEDequals(intentgetAction())) {
Systemoutprintln("收到了自定义消息。消息内容是:" + bundlegetString(JPushInterfaceEXTRA_MESSAGE));
// 自定义消息不会展示在通知栏,完全要开发者写代码去处理
} else if (JPushInterfaceACTION_NOTIFICATION_RECEIVEDequals(intentgetAction())) {
Systemoutprintln("收到了通知");
// 在这里可以做些统计,或者做些其他工作
} else if (JPushInterfaceACTION_NOTIFICATION_OPENEDequals(intentgetAction())) {
Systemoutprintln("用户点击打开了通知");
// 在这里可以自己写代码去定义用户点击后的行为
Intent i = new Intent(context, TestActivityclass); //自定义打开的界面
isetFlags(IntentFLAG_ACTIVITY_NEW_TASK);
contextstartActivity(i);
} else {
Logd(TAG, "Unhandled intent - " + intentgetAction());
}
}
极光推送没有推送数量上的限制,通过控制台或API推送通知或消息,都不会限制推送的数量。但是有如下情况需要注意:
推送次数:通过控制台或 API 推送通知或消息,免费版本的每个 Appkey 广播的最高条数是 10 条/天。付费版本可享有更高的广播条数,具体请联系商务。
推送频率:免费版本的每个 Appkey 的最高推送频率为 600 次/分钟。付费版本可享有更高的推送频率,具体请联系商务。
极光的灵活的推送目标:广播推送:向所有的注册用户发送一条广播消息。标签推送:根据属性对用户设置标签分组,向群组用户发送。别名推送:客户端绑定用户别名,向具体的单个用户推送。
用户分群:根据 JPush 提供的多条件组合进行用户群组划分,实时筛选实时推送。推送历史:无论是通过Web发送的还是通过API发送的都可以在推送历史记录中查询。
简单易集成:网站后台:通过 JPush 网站后台完成推送以及查看历史、报表,无需技术要求。发送与查询API:开放推送和结果查询的 RESTful API 供开发商可以灵活对接。客户端SDK:简单集成Android, IOS SDK。
以上就是关于极光推送和个推产品有什么差异全部的内容,包括:极光推送和个推产品有什么差异、极光推送总结、极光大数据的极光推送服务怎么样等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)