微信公众号(高质量文章推送):陈博易前端
小米手机选择小米推送的缘由:App进程被杀死的状况下,小米手机上的小米推送服务并不会被杀死(除非用户手动在设置中关闭了该推送的权限),因此我选择给你们分享下小米推送。
这里参考了一篇大佬的文章:www.jianshu.com/p/d77eaca4e…java
环境:Android AndroidStudio3.0 Java项目:IntelliJ IDEA 2017.2.3android
请参考小米官网
dev.mi.com/doc/?p=1621json
1.建立一个小米开发推送调式应用
后端
2.修改APP_ID、APP_KEY、包名(应用核心数据)
bash
参考小米官网文档:
dev.mi.com/console/doc…服务器
3.小米官网推送微信
4.java后端核心步骤
参考文档:
java后端环境集成 dev.mi.com/mipush/docs…
java后端开发文档说明 dev.mi.com/console/doc…app
public class mipushtest {
public static void main(String[] args) {
Constants.useOfficial();
Sender sender = new Sender("hYsI0lYsM+9lpgjyBV1gig==");//申请到的AppSecret
String messagePayload = "This is a message(通常这里都是json字符串)";
String title = "notification title(通知标题)";
String description = "notification description(通知简介)";
Message message = new Message.Builder()
.title(title)
.description(description).payload(messagePayload)
.restrictedPackageName("com.xiaomi.mipushdemoboy")
.passThrough(0) // 设置消息是否经过透传的方式至App, 1表示透传消息, 0表示通知栏消息(默认是通知栏消息)
.notifyType(-1) // 设置通知类型, type类型(-1, 1-使用默认提示音提示, 2-使用默认震动提示, 3-使用默认led灯光提示)
.build();
try {
//registrationId regId是app在客户端向小米推送服务注册时,
// 小米推送服务端根据设备标识和appId以及当前时间戳生成,
// 所以可以保证每一个设备上每一个app对应的regId都是不一样的,
// 能够做为每台设备上app的惟一标识
// 注:须要开发者本身的服务器接收客户端返回的regid并存储在自身服务器
// retries表明发送失败后重试的次数
sender.send(message, "7iuW9yVMV+s61aG1AVD7rXC+LHNs561t/rcAL1a3v84=", 1); //发送消息到一组设备上, regids个数不得超过1000个
//发送给全部的注册成功的应用
//sender.broadcastAll(message, 1); //
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
}复制代码
5.Android核心代码介绍ide
public class DemoMessageReceiver extends PushMessageReceiver {
private String mRegId;//每台设备上app的惟一标识,为了方便测试将返回的regid记录下来,方便在后端的推送
//方法用来接收服务器向客户端发送的透传消息。
@Override
public void onReceivePassThroughMessage(Context context, MiPushMessage message) {
}
//用来接收服务器向客户端发送的通知消息,这个回调方法是在通知消息到达客户端时触发。
// 另外应用在前台时不弹出通知的通知消息到达客户端也会触发这个回调函数。
@Override
public void onNotificationMessageArrived(Context context, MiPushMessage message) {
}
//方法用来接收服务器向客户端发送的通知消息,这个回调方法会在用户手动点击通知后触发
@Override
public void onNotificationMessageClicked(Context context, MiPushMessage message) {
}
//方法用来接收客户端向服务器发送命令后的响应结果。
@Override
public void onCommandResult(Context context, MiPushCommandMessage message) {
}
//方法用来接收客户端向服务器发送注册命令后的响应结果。
@Override
public void onReceiveRegisterResult(Context context, MiPushCommandMessage message) {
}复制代码
如何导入java项目(无脑next就好)
www.jianshu.com/writer#/not…
总算把android的环境和java后端环境都调试通了,若是你们还不懂的能够私聊我哦。
源码地址———关注微信公众号,回复:小米推送源码