官方文档非常详细,而且每一步都配图说明。
官方文档的透传数据(Payload)就是Jpush里面的自定义消息,同Jpsuh相同,自定义消息是不显示通知,需要我们自己创建通知,才会显示在通知栏。
AndroidStudio快速集成
步骤
- 创建个推应用
- 创建项目工程
- 添加个推SDK并配置
- 编写代码集成
- 测试集成是否成功
Step1:创建个推应用
请登录 http://dev.getui.com ,选择登记应用并填写应用名称和包名信息,完成应用创建后,会生成 AppID、AppKey、AppSecret
Step2:创建项目工程
Step3:添加个推SDK并配置
快速集成是指:添加Maven库地址,也就是不需要我们复制粘贴jar和so文件,只需要配置
module + project
的build.gradle
即可。注意:尽管我们会将最新的个推SDK同步部署在JCenter上,但是为了保障稳定使用,我们建议开发者额外配置个推提供的maven库从而实现更快速的访问。
project的build.gradle的配置
在以项目名为命名的顶层build.gradle文件中,添加个推maven库地址,如下所示:
allprojects {
repositories {
jcenter()
//Maven URL地址
maven {
url "http://mvn.gt.igexin.com/nexus/content/repositories/releases/"
}
}
}
module的build.gradle的配置
第一步:配置依赖:
在
app/build.gradle
文件中引用个推SDK依赖库,如下图所示:
dependencies {
...
compile 'com.getui:sdk:2.9.5.0'
}
第二步:配置 so 库 + 个推应用参数:
- 先要在项目根目录下的gradle.properties
文件中配置useDeprecatedNdk
参数
android.useDeprecatedNdk=true
- 在
app/build.gradle
文件中的android.defaultConfig
下指定所需的 CPU 架构 + 个推应用参数:
android {
...
defaultConfig {
...
manifestPlaceholders = [
GETUI_APP_ID : "c7xtLWIari9nvrZ08HLbs3",
GETUI_APP_KEY : "Ro58FTMNiy676ddKiZSij5",
GETUI_APP_SECRET : "N3jDrcCfvO9LnRV6LztU52"
]
ndk {
abiFilters "armeabi", "armeabi-v7a"//, "x86_64"
}
}
...
}
配置自定义推送服务
为了让推送服务在部分主流机型上更稳定运行,从2.9.5.0版本开始,个推支持第三方应用配置使用自定义Service来作为推送服务运行的载体。
- 在项目源码中添加一个继承自Android.app.Service的类,参考下列代码实现Service各个生命周期回调方法:
import com.igexin.sdk.GTServiceManager;
/**
* Created by cui on 2016/12/31.
*/
public class PushService extends Service {
@Override
public void onCreate() {
super.onCreate();
GTServiceManager.getInstance().onCreate(this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
return GTServiceManager.getInstance().onStartCommand(this, intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
return GTServiceManager.getInstance().onBind(intent);
}
@Override
public void onDestroy() {
super.onDestroy();
GTServiceManager.getInstance().onDestroy();
}
@Override
public void onLowMemory() {
super.onLowMemory();
GTServiceManager.getInstance().onLowMemory();
}
}
- 在AndroidManifest.xml中添加上述自定义Service:
<service
android:name=".PushService"
android:exported="true"
android:label="PushService"
android:process=":pushservice"/>
导入通知栏图标
为了修改默认的通知栏顶部提示小图标,请在资源目录的res/drawable-ldpi/
、res/drawable-mdpi/
、res/drawable-hdpi/
、res/drawable-xhdpi/
、res/drawable-xxhdpi/
等各分辨率目录下,放置相应尺寸的文件名为push.png图片。
资源精简配置
如果您的工程启用了资源精简,即如果在app/build.gradle
的android.buildTypes.release
下配置了shrinkResources true
,为了避免个推SDK所需资源被错误精简导致功能异常,需要在项目资源目录res/raw
中添加keep.xml
文件,在SDK资料包中GETUI_ANDROID_SDK/资源文件/raw
目录下有keep.xml
示例文件,完整内容如下:
<?xml version="1.0" encoding="utf-8"?>
<resources
xmlns:tools="http://schemas.android.com/tools"
tools:keep="@layout/getui_notification"/>
Step4:编写代码集成
初始化SDK
我们建议应用开发者在Activity或Service类中调用个推SDK的初始化方法,确保SDK在各种情况下都能正常运行。一般情况下可以在主Activity的onCreate()或者onResume()方法中调用,也可以在多个主要界面Activity的onCreate()或onResume()方法中调用。反复调用SDK初始化并不会有什么副作用。
// com.getui.demo.DemoPushService 为第三方自定义推送服务
PushManager.getInstance().initialize(this.getApplicationContext(), PushService.class);
接收推送服务事件
添加一个继承自com.igexin.sdk.GTIntentService
的类,用于接收CID、透传消息以及其他推送服务事件。请参考下列代码实现各个事件回调方法:
透传数据(Payload)就是Jpush里面的自定义消息,同Jpsuh相同,自定义消息是不显示通知,需要我们自己创建通知。
/**
* 继承 GTIntentService 接收来自个推的消息, 所有消息在线程中回调, 如果注册了该服务, 则务必要在 AndroidManifest中声明, 否则无法接受消息<br>
* onReceiveMessageData 处理透传消息<br>
* onReceiveClientId 接收 cid <br>
* onReceiveOnlineState cid 离线上线通知 <br>
* onReceiveCommandResult 各种事件处理回执 <br>
*/
public class PushIntentService extends GTIntentService {
private static final String TAG = "PushIntentService";
public PushIntentService() {
}
@Override
public void onReceiveServicePid(Context context, int pid) {
}
@Override
public void onReceiveMessageData(Context context, GTTransmitMessage msg) {
//接收透传数据(Payload):就是Jpush里面的自定义消息
LogUtil.d(TAG,"msg = "+new String(msg.getPayload()));
}
@Override
public void onReceiveClientId(Context context, String clientid) {
Log.e(TAG, "onReceiveClientId -> " + "clientid = " + clientid);
}
@Override
public void onReceiveOnlineState(Context context, boolean online) {
}
@Override
public void onReceiveCommandResult(Context context, GTCmdMessage cmdMessage) {
}
}
- 在
AndroidManifest.xml
中配置上述IntentService
类:
<service android:name=".PushIntentService"/>
- 在个推SDK初始化后,注册上述 IntentService 类
// com.getui.demo.DemoIntentService 为第三方自定义的推送服务事件接收类
PushManager.getInstance().registerPushIntentService(this.getApplicationContext(), PushIntentService.class);
Step5:测试集成是否成功
- 连接手机或启动Android模拟器,编译运行你的工程,查看logcat信息。在搜索框中输入
clientid
,如果能显示clientid is xxx
日志,则说明个推SDK已经成功运行起来了:
AndroidStudio标准集成
API接口文档
//clientid
String clientid = PushManager.getInstance().getClientid(this);
LogUtil.d(TAG, "clientid=" + clientid);
//绑定别名
PushManager manager = PushManager.getInstance();
boolean flag = manager.bindAlias(this, "15153519007");
if (flag) {
LogUtil.d(TAG, "绑定成功");
} else {
LogUtil.d(TAG, "绑定失败");
}
源码下载
推送合集
第三方开源库:个推
第三方SDK:JPush:Android Studio
第三方SDK:JPush SDK Eclipse