小米推送服务集成

  • 前言
  • 正文
    • 一、创建平台应用
    • 二、下载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. 《虚拟化与云计算》读书感(三)数据中心的概述
  2. golang strings包部分函数使用
  3. Android之打造可定制的全场秒杀倒计时控件
  4. leetcode算法题--三角形最小路径和
  5. android镊 姩瀹夎 apk,用java写的jodconverter借用openoffice来转换office成pdf的示例代码...
  6. Codeforces Round #614 (Div. 2) D. Aroma‘s Search 暴力 + 思维
  7. java获取当月有几天_腾讯程序员裸辞3个月,转行去送外卖,曝出当月收入网友:又骗我去送外卖...
  8. 任正非:5G也不是万能的,发展也需要一个过程
  9. Python合并Excel2007+中多个WorkSheet
  10. 16. XML DOM
  11. amos里CFA可行性辨别结果怎么看_本科毕业论文做问卷和数据分析应该怎么着手?(1)...
  12. 数学之美--读书笔记
  13. 封装方法-数字转大写(一)——将数字金额转换为大写金额
  14. 关于tensorflow版本更新
  15. DOjo的一个幻灯片播放例子
  16. 哈工大计算机系统lab7——微壳
  17. 常见的USB接口种类以及区别
  18. Android商城项目开源
  19. CoffeeScript快速入门
  20. 机器学习期末复习笔记

热门文章

  1. 给自己做个文件的保险箱
  2. HYSBZ 1406 密码箱
  3. 如何用pdfFactory新建打印机并设置属性
  4. 华为eNSP配置网络地址转换NAT
  5. 数字签名技术原理介绍
  6. Ubuntu下安装SQLite、与简单介绍
  7. Windows Latex写作之VScode + TeX Live
  8. 杨春立:基于数字孪生的智慧城市顶层设计探索与实践...
  9. java奖学金课设系统_java毕业设计_springboot框架的基于奖学金评定系统
  10. 树莓派安装smbus_树莓派学习之I2C通信