最近由于项目的功能需求的需要,需要在Android应用集成消息推送的功能,而目前市面上的第三方消息推送除了友盟推送外,还有极光推送、小米推送、个推以及信鸽(腾讯)推送等。当时本人对比各大第三方的消息推送进行了测试,觉得友盟消息推送集成简单,推送消息的送达率比较高以及即时。而且支持深度优化过的Android系统的国产手机(小米、华为、魅族)应用的进程被“杀死”的情况下能及时送达推送。
在AndroidStudio的Gradle的dependencies{…}下添加以下依赖:
// PushSDK必须依赖基础组件库,所以需要加入对应依赖
implementation 'com.umeng.sdk:common:1.5.3'
// PushSDK必须依赖utdid库,所以需要加入对应依赖
implementation 'com.umeng.sdk:utdid:1.1.5.3'
// PushSDK
implementation 'com.umeng.sdk:push:4.2.0'
// 小米Push通道
implementation 'com.umeng.sdk:push-xiaomi:1.0.0'
// 华为Push通道
implementation 'com.umeng.sdk:push-huawei:1.0.0'
// 魅族Push通道
implementation 'com.umeng.sdk:push-meizu:1.0.0'
如果添加依赖同步编译后失败的话可以尝试在Project的Grande里jcenter()前面添加上mavenCentral()再同步编译看看。(如下图)
在自定义的Application的onCreate()方法里初始化友盟消息推送的SDK,如下片段代码所示:
public class PushApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
/**
* 初始化common库
* 参数1:上下文,不能为空
* 参数2:设备类型,UMConfigure.DEVICE_TYPE_PHONE为手机、UMConfigure.DEVICE_TYPE_BOX为盒子,默认为手机
* 参数3:Push推送业务的secret
*/
UMConfigure.init(this, UMConfigure.DEVICE_TYPE_PHONE, "这里填写应用申请到的Umeng Message Secret");
PushAgent mPushAgent = PushAgent.getInstance(this);
// 注册推送服务,每次调用register方法都会回调该接口
mPushAgent.register(new IUmengRegisterCallback() {
@Override
public void onSuccess(String deviceToken) {
// 注册成功会返回device token
}
@Override
public void onFailure(String s, String s1) {
}
});
// 小米通道Push初始化,第一个参数为上下文,第二个参数为XIAOMI_ID ,第三个参数为XIAOMI_KEY
MiPushRegistar.register(this, "这里填写小米的XIAOMI_ID", "这里填写小米的XIAOMI_KEY");
// 华为通道Push初始化,华为渠道无需传key
HuaWeiRegister.register(this);
// 魅族通道Push初始化,第一个参数为上下文,第二个参数为MEIZU_APPID ,第三个参数为MEIZU_APPKEY
MeizuRegister.register(this, "这里填写魅族的MEIZU_APPID", "这里填写魅族的MEIZU_APPKEY");
}
}
在Activity的onCreate()方法里初始化友盟消息推送的SDK,如下片段代码所示:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PushAgent.getInstance(context).onAppStart();
}
}
创建多渠道MipushTestActivity代码文件并继承UmengNotifyClickActivity进行测试小米、华为以及魅族国产机型离线的推送测试,如下片段代码所示:
public class MipushTestActivity extends UmengNotifyClickActivity {
private static String TAG = MipushTestActivity.class.getName();
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.activity_mipush);
}
@Override
public void onMessage(Intent intent) {
// 此方法必须调用,否则无法统计打开数
super.onMessage(intent);
String body = intent.getStringExtra(AgooConstants.MESSAGE_BODY);
Log.i(TAG, body);
}
}
创建魅族所需广播MeizuTestReceiver代码文件并继承UmengMeizuPushReceiver,如下片段代码所示:
public class MeizuTestReceiver extends UmengMeizuPushReceiver {
}
在Android的清单文件里添加相应的配置信息及注册相应的application、meta-data、activity以及receiver信息。如下代码所示:
手机端(本人的手机是小米手机,MIUI 10开发版,Android 8.1)通知栏接收到友盟后台推送的消息界面。(如下图所示)
———————— The end ————————