1、现在的Android推送功能使用的越来越广泛,许多app都想加一个推送功能,也出现了好多第三方推送服务如:极光、百度云推送、个推、友盟、网易云推送等。我本人是使用过百度云推送、个推和极光推送。百度云推送感觉最差,基本上关了程序到达率太低。极光推送网上说比较好,但是用了以后在开启APP的情况下和个推都能很快到达,但是关了APP后感觉没有个推到达率高,有人问为什么微信的推送这么厉害,基本都能推送到,这个谁让微信牛呢,各大厂商都对微信的推送做了不杀死处理,所以你即使关了微信也能立即收到,效果等同于厂商自己的推送。
2、虽然要写一篇集成极光推送的文章,但是真正好的推送应该是第三方+手机厂商自带的推送,因为手机自带的推送服务手机后台不会kill掉,保活率高。所以想集成一个好的推送可以是:小米+华为+魅族+第三方推送这四个一起集成。这三个厂商的手机推送将会立即到达,Android市场占有率超过40%。而服务器端只需要三种方式都推送,Android端根据自己的系统来加载要推送的SDK即可。
华为推送功能网址:https://mp.csdn.net/postedit/84180870
小米推送功能网址:https://blog.csdn.net/f552126367/article/details/84065630
3、去极光逛网注册一个账号:https://www.jiguang.cn/?hmsr=%E5%93%81%E4%B8%933&hmpl=logo&hmcu=&hmkw=&hmci=;然后创建一个应用:
4、可以下载demo进行查看,也可以下载我集成到studio的项目进行查看:https://download.csdn.net/download/f552126367/10352575
5、将给的demo的类全部考到自己的工程中,将AndroidManifest.xml里的所有数据拷贝到自己的工程中,注意修改包名和权限。
6、将demo中的jar包烤包到自己的libs文件夹下,然后引入,然后将armeabi全部考入到jniLis文件夹下,如下图所示:
7、在build中加入引入内容:
//极光推送的jar包
compile files('libs/jcore-android-1.2.0.jar')
compile files('libs/jpush-android-3.1.2.jar')
ndk {
abiFilters "arm64-v8a", "armeabi-v7a", "x86", "x86_64"
}
8、在自己写的Application中加入初始化功能,
//极光推送初始化功能
JPushInterface.setDebugMode(true); // 设置开启日志,发布时请关闭日志
JPushInterface.init(this); // 初始化 JPush
9、记得在APP首页写一个接收的方法
registerMessageReceiver(); // used for receive msg
/*设置极光推送接收方法*/
public void registerMessageReceiver() {
mMessageReceiver = new MessageReceiver();
IntentFilter filter = new IntentFilter();
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
filter.addAction(MESSAGE_RECEIVED_ACTION);
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, filter);
}
public class MessageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
if (MESSAGE_RECEIVED_ACTION.equals(intent.getAction())) {
String messge = intent.getStringExtra(KEY_MESSAGE);
String extras = intent.getStringExtra(KEY_EXTRAS);
StringBuilder showMsg = new StringBuilder();
showMsg.append(KEY_MESSAGE + " : " + messge + "\n");
if (!ExampleUtil.isEmpty(extras)) {
showMsg.append(KEY_EXTRAS + " : " + extras + "\n");
}
setCostomMsg(showMsg.toString());
}
} catch (Exception e){
}
}
}
private void setCostomMsg(String msg){
showToast(msg);
}
10、仿照给的demo,将用户名设置为别名或者标签,则后台可以直接通过这两个的任意一个进行推送到手机上。
//设置alias
case R.id.bt_setalias:
alias = getInPutAlias();
if(TextUtils.isEmpty(alias)){
return;
}
isAliasAction = true;
action = ACTION_SET;
break;
11、好了大功告成,慢慢补充修改推送样式和点击推送跳转的问题。
参看https://blog.csdn.net/nihaoqiulinhe/article/details/50697301;完善的是当点击通知时,跳转到指定的页面