友盟官方:快速集成文档
还有之前写的极光推送的简单使用:Android常用框架——极光推送的简单使用
使用步骤:
第一步:.登录注册友盟的账号,并绑定邮箱 官网
第二步:以下拷贝自友盟官方文档
前言
【友盟+】消息推送SDK 5.0.2 集成文档。
此文档适用于Android Studio在线集成,如您需要离线下载SDK方式集成,请参考手动集成文档-Android Studio
开发环境
IDE:Android Studio
本文档提供的UmengPushDemo工程是Android Studio基于Maven的快速集成方案。该方案配置简单,方便后续维护和更新。因此强烈推荐开发者根据本文档使用Android Studio进行集成工作。
示例工程下载地址:
https://download.umeng.com/online/2018/12/20181219173244199.zip
消息推送SDK快速集成
1、Appkey申请
请在U-Push官网为您的应用申请Appkey(详细操作路径:U-Push官网->应用->新建应用->创建新应用)
注:已经使用了【友盟+】统计的用户,请从U-Push官网从已有应用中添加关联。
获取应用对应的Appkey和Umeng Message Secret,这两个值请务必留意,在后续SDK初始化中需要用到。
2、接入Push SDK
在您的Android Studio工程的App模块的build.gradle配置脚本中添加maven远程依赖,导入最新版本PushSDK:
请查看您项目中com.android.tools.build:gradle配置,如果版本号<3.0.0,请使用如下配置脚本添加远程依赖:
//PushSDK必须依赖基础组件库,所以需要加入对应依赖
compile 'com.umeng.umsdk:common:1.5.4'
//PushSDK必须依赖utdid库,所以需要加入对应依赖
compile 'com.umeng.umsdk:utdid:1.1.5.3'
//PushSDK
compile 'com.umeng.umsdk:push:5.0.2'
请查看您项目中com.android.tools.build:gradle配置,如果版本号>=3.0.0,请使用如下配置脚本添加远程依赖:
//PushSDK必须依赖基础组件库,所以需要加入对应依赖
implementation 'com.umeng.umsdk:common:1.5.4'
//PushSDK必须依赖utdid库,所以需要加入对应依赖
implementation 'com.umeng.umsdk:utdid:1.1.5.3'
//PushSDK
implementation 'com.umeng.umsdk:push:5.0.2'
在工程build.gradle配置脚本中buildscript和allprojects段中添加【友盟+】sdk 新maven仓库地址
buildscript {
repositories {
google()
jcenter()
maven { url 'https://dl.bintray.com/umsdk/release' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.4'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
maven { url 'https://dl.bintray.com/umsdk/release' }
}
}
3、基础接口引入
1、务必
在工程的自定义Application类的 onCreate()
方法中做SDK代码初始化工作。
// 在此处调用基础组件包提供的初始化函数 相应信息可在应用管理 -> 应用信息 中找到 http://message.umeng.com/list/apps
// 参数一:当前上下文context;
// 参数二:应用申请的Appkey(需替换);
// 参数三:渠道名称;
// 参数四:设备类型,必须参数,传参数为UMConfigure.DEVICE_TYPE_PHONE则表示手机;传参数为UMConfigure.DEVICE_TYPE_BOX则表示盒子;默认为手机;
// 参数五:Push推送业务的secret 填充Umeng Message Secret对应信息(需替换)
UMConfigure.init(this, "替换为Appkey,服务后台位置:应用管理 -> 应用信息 -> Appkey", "Umeng", UMConfigure.DEVICE_TYPE_PHONE, "替换为秘钥信息,服务后台位置:应用管理 -> 应用信息 -> Umeng Message Secret");
2、Push注册在UMConfigure.init方法之后注册,注册成功后可获取deviceToken,进行消息下发。调用代码如下所示:
UMConfigure.init(this, "替换为Appkey,服务后台位置:应用管理 -> 应用信息 -> Appkey", "Umeng", UMConfigure.DEVICE_TYPE_PHONE, "替换为秘钥信息,服务后台位置:应用管理 -> 应用信息 -> Umeng Message Secret");
//获取消息推送代理示例
PushAgent mPushAgent = PushAgent.getInstance(this);
//注册推送服务,每次调用register方法都会回调该接口
mPushAgent.register(new IUmengRegisterCallback() {
@Override
public void onSuccess(String deviceToken) {
//注册成功会返回deviceToken deviceToken是推送消息的唯一标志
Log.i(TAG,"注册成功:deviceToken:--------> " + deviceToken);
}
@Override
public void onFailure(String s, String s1) {
Log.e(TAG,"注册失败:--------> " + "s:" + s + ",s1:" + s1);
}
});
- deviceToken是【友盟+】消息推送生成的用于标识设备的id,长度为44位,不能定制和修改。同一台设备上不同应用对应的deviceToken不一样。获取deviceToken的值后,可进行消息推送测试!
4、应用数据统计接口
在所有的Activity 的onCreate 方法或在应用的BaseActivity的onCreate方法中添加:
PushAgent.getInstance(context).onAppStart();
注:该方法是【友盟+】Push后台进行日活统计及多维度推送的必调用方法,请务必调用!
5、消息推送
恭喜您已经顺利获取deviceToken!我们马上可以向这台设备推送消息了~
可以直接发送到安装该app的真机或者模拟器:
首先运行app(app被杀死时收不到,只有打开才能收到)
消息列表—>消息通知—>新建通知—填写内容—>设置(参数)—>点击发送
效果:
代码:
自定义的MyApplication类
public class MyApplication extends Application {
private static final String TAG = "MyApplication";
@Override
public void onCreate() {
super.onCreate();
// 在此处调用基础组件包提供的初始化函数 相应信息可在应用管理 -> 应用信息 中找到 http://message.umeng.com/list/apps
// 参数一:当前上下文context;
// 参数二:应用申请的Appkey(需替换);
// 参数三:渠道名称;
// 参数四:设备类型,必须参数,传参数为UMConfigure.DEVICE_TYPE_PHONE则表示手机;传参数为UMConfigure.DEVICE_TYPE_BOX则表示盒子;默认为手机;
// 参数五:Push推送业务的secret 填充Umeng Message Secret对应信息(需替换)
UMConfigure.init(this, "5c1c9a0bb465f548e4000394", "Umeng", UMConfigure.DEVICE_TYPE_PHONE, "c9674cbe2cc4beda9cd4dc4256c7c892");
//获取消息推送代理示例
PushAgent mPushAgent = PushAgent.getInstance(this);
//注册推送服务,每次调用register方法都会回调该接口
mPushAgent.register(new IUmengRegisterCallback() {
@Override
public void onSuccess(String deviceToken) {
//注册成功会返回deviceToken deviceToken是推送消息的唯一标志
Log.i(TAG, "注册成功:deviceToken:--------> " + deviceToken);
}
@Override
public void onFailure(String s, String s1) {
Log.e(TAG, "注册失败:--------> " + "s:" + s + ",s1:" + s1);
}
});
//拿到通知的消息
UmengMessageHandler messageHandler = new UmengMessageHandler() {
@Override
public Notification getNotification(Context context, UMessage uMessage) {
//通知的标题
String title = uMessage.title;
//通知的内容
String ticker = uMessage.ticker;
Log.e(TAG, "getNotification:--------> " + "title:" + title + ",ticker:" + ticker);
return super.getNotification(context, uMessage);
}
};
mPushAgent.setMessageHandler(messageHandler);
//通知到达点击的行为
UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler() {
//直接打开app
@Override
public void launchApp(Context context, UMessage msg) {
super.launchApp(context, msg);
Log.e(TAG, "launchApp:--------> " + "msg:" + msg);
}
//打开指定的Url
@Override
public void openUrl(Context context, UMessage msg) {
super.openUrl(context, msg);
Log.e(TAG, "openUrl:--------> " + "msg:" + msg);
}
//打开指定的Activity
@Override
public void openActivity(Context context, UMessage msg) {
super.openActivity(context, msg);
Log.e(TAG, "openActivity:--------> " + "msg:" + msg);
}
//打开自定义的行为
@Override
public void dealWithCustomAction(Context context, UMessage msg) {
Log.e(TAG, "dealWithCustomAction:--------> " + "msg:" + msg.custom);
Toast.makeText(context, msg.custom, Toast.LENGTH_LONG).show();
//如果是点击通知栏的动作
//点击后跳转
Intent intent1 = new Intent(context, MainActivity.class);
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);
}
};
mPushAgent.setNotificationClickHandler(notificationClickHandler);
}
}
注意要在配置文件中,把这个MyApplication进行静态注册
<application
....
//添加这一句代码
android:name=".MyApplication"
.....
>
<activity android:name=".MainActivity">
....
</activity>
</application>
也可以测试:
添加测试设备:
在【友盟+】消息推送服务Push后台的“测试模式”中填写获取到的deviceToken,将该设备添加为测试设备:
在测试消息中新建消息,详细过程如下所示,详细过程如下所示:
6、接入完成
此时在您的测试手机上可以看到您刚才的推送消息!
至此您已完整集成了【友盟+】消息推送SDK,更多高级功能请见Push SDK高级功能