小米推送服务集成

  • 前言
  • 正文
    • 一、创建平台应用
    • 二、下载SDK
    • 三、项目配置
    • 四、注册推送
    • 五、创建推送消息

前言

  丰富厂商渠道推送,下图为小米手机,应用销毁进程之后收到推送消息,点击消息打开引用的Gif图。

如果这是你想要的,那么就可以往后面看了。
我的小米手机型号是MI 8 ,MIUI版本 12.0.4,Android版本 10.0。

正文

  有时间的时候我习惯写一下文章放松自己,下面进入主题,首先进入小米开放平台。

注册小米的开发者账号,然后登陆账号,完成企业开发者认证之后。开始今天的小米推送服务集成,前期准备:Android Studio,小米手机、小米的开发者账号。

一、创建平台应用

进入小米推送运营平台

点击创建应用。


这里需要一个包名,因此我们需要在AS创建一个项目,命名为XMPushDemo,如下图所示:

点击Finish,完成项目创建,然后复制包名到创建平台应用这里。

点击创建按钮,完成平台应用创建。

勾选上,然后启用消息推送服务。

消息推送启用成功。

这里的AppID和AppKey在代码中需要配置的,记录一下。

二、下载SDK

点击推送SDK下载

点击下载到电脑本地,然后解压。找到SDK中的jar文件

复制到你的项目的libs下

此时这个jar是没有展开的。打开你的app下的build.gradle,查看有没有这行代码,

implementation fileTree(dir: 'libs', include: ['*.jar'])

没有就加上,然后Sync Now。

有的话就点击这个小象图标。

然后你的jar就是可展开的了,这说明你的SDK导入成功。

三、项目配置

打开AndroidManifest.xml,进行权限配置,如下所示:

 <uses-sdk  android:minSdkVersion="9"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.VIBRATE"/><permission android:name="com.llw.xmpushdemo.permission.MIPUSH_RECEIVE"android:protectionLevel="signature" /><uses-permission android:name="com.llw.xmpushdemo.permission.MIPUSH_RECEIVE" />

这里要注意使用自己的app的包名。

然后配置service和receiver。

     <serviceandroid:name="com.xiaomi.push.service.XMPushService"android:enabled="true"android:process=":pushservice" /><!--注:此service必须在3.0.1版本以后(包括3.0.1版本)加入--><serviceandroid:name="com.xiaomi.push.service.XMJobService"android:enabled="true"android:exported="false"android:permission="android.permission.BIND_JOB_SERVICE"android:process=":pushservice" /><serviceandroid:name="com.xiaomi.mipush.sdk.PushMessageHandler"android:enabled="true"android:exported="true" /><!--注:此service必须在2.2.5版本以后(包括2.2.5版本)加入--><serviceandroid:name="com.xiaomi.mipush.sdk.MessageHandleService"android:enabled="true" /><receiverandroid:name="com.xiaomi.push.service.receivers.NetworkStatusReceiver"android:exported="true"><intent-filter><action android:name="android.net.conn.CONNECTIVITY_CHANGE" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></receiver><receiverandroid:name="com.xiaomi.push.service.receivers.PingReceiver"android:exported="false"android:process=":pushservice"><intent-filter><action android:name="com.xiaomi.push.PING_TIMER" /></intent-filter></receiver>

注意添加的位置

四、注册推送

首先新建一个MyBroadcastReceiver,集成PushMessageReceiver 。里面的代码如下:

package com.llw.xmpushdemo;import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;import com.xiaomi.mipush.sdk.ErrorCode;
import com.xiaomi.mipush.sdk.MiPushClient;
import com.xiaomi.mipush.sdk.MiPushCommandMessage;
import com.xiaomi.mipush.sdk.MiPushMessage;
import com.xiaomi.mipush.sdk.PushMessageReceiver;import java.util.List;/*** @author llw*/
public class MyBroadcastReceiver extends PushMessageReceiver {public static final String TAG = MyBroadcastReceiver.class.getSimpleName();private String mRegId;private long mResultCode = -1;private String mReason;private String mCommand;private String mMessage;private String mTopic;private String mAlias;private String mUserAccount;private String mStartTime;private String mEndTime;@Overridepublic void onReceivePassThroughMessage(Context context, MiPushMessage message) {mMessage = message.getContent();if(!TextUtils.isEmpty(message.getTopic())) {mTopic=message.getTopic();} else if(!TextUtils.isEmpty(message.getAlias())) {mAlias=message.getAlias();} else if(!TextUtils.isEmpty(message.getUserAccount())) {mUserAccount=message.getUserAccount();}}@Overridepublic void onNotificationMessageClicked(Context context, MiPushMessage message) {mMessage = message.getContent();if(!TextUtils.isEmpty(message.getTopic())) {mTopic=message.getTopic();} else if(!TextUtils.isEmpty(message.getAlias())) {mAlias=message.getAlias();} else if(!TextUtils.isEmpty(message.getUserAccount())) {mUserAccount=message.getUserAccount();}}@Overridepublic void onNotificationMessageArrived(Context context, MiPushMessage message) {mMessage = message.getContent();if(!TextUtils.isEmpty(message.getTopic())) {mTopic=message.getTopic();} else if(!TextUtils.isEmpty(message.getAlias())) {mAlias=message.getAlias();} else if(!TextUtils.isEmpty(message.getUserAccount())) {mUserAccount=message.getUserAccount();}}@Overridepublic void onCommandResult(Context context, MiPushCommandMessage message) {String command = message.getCommand();List<String> arguments = message.getCommandArguments();String cmdArg1 = ((arguments != null && arguments.size() > 0) ? arguments.get(0) : null);String cmdArg2 = ((arguments != null && arguments.size() > 1) ? arguments.get(1) : null);if (MiPushClient.COMMAND_REGISTER.equals(command)) {if (message.getResultCode() == ErrorCode.SUCCESS) {mRegId = cmdArg1;Log.d(TAG,"regId:"+mRegId);}} else if (MiPushClient.COMMAND_SET_ALIAS.equals(command)) {if (message.getResultCode() == ErrorCode.SUCCESS) {mAlias = cmdArg1;Log.d(TAG,"alias:"+mRegId);}} else if (MiPushClient.COMMAND_UNSET_ALIAS.equals(command)) {if (message.getResultCode() == ErrorCode.SUCCESS) {mAlias = cmdArg1;}} else if (MiPushClient.COMMAND_SUBSCRIBE_TOPIC.equals(command)) {if (message.getResultCode() == ErrorCode.SUCCESS) {mTopic = cmdArg1;Log.d(TAG,"topic:"+mRegId);}} else if (MiPushClient.COMMAND_UNSUBSCRIBE_TOPIC.equals(command)) {if (message.getResultCode() == ErrorCode.SUCCESS) {mTopic = cmdArg1;}} else if (MiPushClient.COMMAND_SET_ACCEPT_TIME.equals(command)) {if (message.getResultCode() == ErrorCode.SUCCESS) {mStartTime = cmdArg1;mEndTime = cmdArg2;}}}@Overridepublic void onReceiveRegisterResult(Context context, MiPushCommandMessage message) {String command = message.getCommand();List<String> arguments = message.getCommandArguments();String cmdArg1 = ((arguments != null && arguments.size() > 0) ? arguments.get(0) : null);String cmdArg2 = ((arguments != null && arguments.size() > 1) ? arguments.get(1) : null);if (MiPushClient.COMMAND_REGISTER.equals(command)) {if (message.getResultCode() == ErrorCode.SUCCESS) {mRegId = cmdArg1;}}}
}

然后需要在AndroidManifest.xml中配置这个广播接收器。

     <!--注册自定义广播接收器--><receiverandroid:exported="true"android:name="com.llw.xmpushdemo.MyBroadcastReceiver"><intent-filter><action android:name="com.xiaomi.mipush.RECEIVE_MESSAGE" /></intent-filter><intent-filter><action android:name="com.xiaomi.mipush.MESSAGE_ARRIVED" /></intent-filter><intent-filter><action android:name="com.xiaomi.mipush.ERROR" /></intent-filter></receiver>

注意这个包名。

下面进行推送服务的注册,新建一个MyApplication,继承Applicaton,这里面的AppID和AppKey都是在前面提到过的,记得使用自己的,代码如下:

package com.llw.xmpushdemo;import android.app.Application;
import com.xiaomi.mipush.sdk.MiPushClient;public class MyApplication extends Application {public static final String APP_ID = "2882303761519985273";public static final String APP_KEY = "5431998523273";@Overridepublic void onCreate() {super.onCreate();//初始化push推送服务MiPushClient.registerPush(this, APP_ID, APP_KEY);}}

然后在AndroidManifest.xml中配置一下:

注册push服务,注册成功后会向DemoMessageReceiver发送广播,然后会打印regId。下面运行一下,当你在手机上看到Hello World!的时候,查看一下控制台。

这个就是你这个设备的regId,现在已经注册成功了。

五、创建推送消息

回到平台上,创建推送消息

编辑推送消息

输入regId

然后滑动到最下面点击完成。


确认无误之后点击立即推送,不出意外,你的手机上会收到一条推送消息。

下面再试试应用进程结束之后能不能收到推送消息。

其实挺简单的,上高水长,后会有期。

Android 小米推送服务集成相关推荐

  1. Android 华为推送服务集成

    华为推送服务集成 前言 正文 一.创建平台应用 二.创建AS项目 三.配置Gradle和Manifest 四.生成并配置SHA256指纹 五.开启应用推送服务 六.配置签名 七.HMS Toolkit ...

  2. Android OPPO推送服务集成

    OPPO推送服务集成 前言 正文 一.创建AS应用 二.创建OPPO平台应用 三.编辑推送消息 1. SDK集成 2. AndroidManifest配置 3. 配置应用信息 4. 编辑推送消息 结语 ...

  3. android 小米推送 no account,XiaomiPushDemo【小米推送集成,基于V3.6.12版本】

    前言 这个Demo只是记录小米推送的集成,不能运行.使用步骤 一.项目组织结构图 注意事项: 1.  导入类文件后需要change包名以及重新import R文件路径 2.  Values目录下的文件 ...

  4. Android多平台Push推送服务集成组件化实践

    众所周知,因为一些原因(hexie)谷哥服务在大陆不能使用,再加之Android系统开源,所以国内基于Android源码定制的各种OS百花齐放,基本大一点的手机品牌厂商为了更好的用户体验都会有自己的深 ...

  5. 小米推送 简介 集成

    介绍 推送文档: https://dev.mi.com/console/doc/detail?pId=230   控制台: http://admin.xmpush.xiaomi.com/v2/app/ ...

  6. android小米推送,Android手机端小米推送Demo解析和实现方法

    最近这几个月都是在准备找工作和找工作中,付出了很多,总算是有点收获,所以都没有怎么整理笔记.到了最近才有空把自己的笔记整理一下发上来,分享一下我的学习经验. 推送 由于最近项目要用到Android的消 ...

  7. Android 集成华为推送,集成小米推送,集成OPPO推送,集成vivo推送

    最近有时间在我们的应用中集成了华为,小米,OPPO,vivo四大平台的推送,一切顺利. 这里做一个记录, 开撸: 一.华为推送 1.下载HMS Agent套件,解压如下: 找到GetHMSAgent_ ...

  8. 我只想做好一件白衬衫 -- 小米推送服务监控手记

    最近读陈年先生的文章"凑热闹的公司都会烟消云散",读了十几遍,意犹未尽,感慨颇深. 我来小米三年了,三年前我会滔滔不绝的跟别人讲,如何带领几十个人,建立一套多么完善的质量保证体系, ...

  9. android小米推送,酸了!小米手机Android 10推送安排上了

    酸了!小米手机Android 10推送安排上了 2019年08月24日 14:50作者:姜恒编辑:陈浩天文章出处:泡泡网原创 分享 8月24日消息,小米手机9发布基于Android 10的MIUI 9 ...

  10. Android 百度推送服务

    1.资源链接 百度官方文档:http://push.baidu.com/doc/android/api: 百度推送SDK下载:http://push.baidu.com/sdk/push_client ...

最新文章

  1. java打印的globa类l_Spring异常集中处理和日志集中打印
  2. hdu3530Subsequence【单调队列优化dp】2010多校联合
  3. 如何用极路由新插件【搜狐视频】进行远程下载
  4. 帝国cms模板仿企业网站
  5. 太强了!仿京东电商项目终于开源了~
  6. 虎牙改名字服务器升级维护中,王一博“虎牙直播”被占id,无奈改了名字,新名字却被吐槽...
  7. 常用模块以及常用方法
  8. 【ROR】基础0-在vagrant中配置ror环境
  9. java中的Math类
  10. 甲骨文裁员的屠刀最终砍向了西雅图
  11. 连接MyBatis内部SqlSession与业务接口的代理类MapperProxy
  12. 笔记本双显卡,NVIDA驱动,Manjaro 双屏
  13. 查询自己名下所有微信账户
  14. python方差分析误差棒_一文讲透,带你学会用Python绘制带误差棒的柱状图和条形图...
  15. 互联网公司招聘--网易--网易云音乐程序员--2017年笔试题
  16. Unreal Engine 4(UE4)下载教程
  17. 今天接到东南融通的面试电话,请问下个人一些具体情况
  18. 【ESXi】失败 – “scsi0:0”的磁盘类型 2 不受支持或无效。请确保磁盘已导入
  19. 搜图网vvic商品详情api接口
  20. 基于单片机的存钱罐系统设计(#0465)

热门文章

  1. 文曲星猜数字游戏java代码_Python版的文曲星猜数字游戏代码
  2. ubuntu下安装万能五笔
  3. tera term串口文本匹配打印时间脚本
  4. MIL自动化单元测试
  5. sap的pod确认_PO确认控制
  6. 使用安卓模拟器+Xposed+JustTrustMe+burp suite抓取app的https流量
  7. Unity插件 - MeshEditor(九) 模型涡流扭曲特效(黑洞吸引特效)
  8. 腾讯电脑管家怎么阻止软件自动安装
  9. [转] 测度论简介------一个通往异世界的大门
  10. OA软件办公用品分类设置,实现办公用品分类透明化