第三方开源库:个推

时间:2021-12-06 21:59:07

官方文档非常详细,而且每一步都配图说明。
官方文档的透传数据(Payload)就是Jpush里面的自定义消息,同Jpsuh相同,自定义消息是不显示通知,需要我们自己创建通知,才会显示在通知栏。

AndroidStudio快速集成文档

AndroidStudio标准集成文档

Eclipse集成文档

API接口文档

开发者平台

AndroidStudio快速集成

步骤

  1. 创建个推应用
  2. 创建项目工程
  3. 添加个推SDK并配置
  4. 编写代码集成
  5. 测试集成是否成功

Step1:创建个推应用

请登录 http://dev.getui.com ,选择登记应用并填写应用名称和包名信息,完成应用创建后,会生成 AppID、AppKey、AppSecret

Step2:创建项目工程

Step3:添加个推SDK并配置

快速集成是指:添加Maven库地址,也就是不需要我们复制粘贴jar和so文件,只需要配置module + projectbuild.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.gradleandroid.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标准集成

AndroidStudio标准集成文档

API接口文档

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, "绑定失败");
}

源码下载

GeTuiSDKDemo01

推送合集
第三方开源库:个推
第三方SDK:JPush:Android Studio
第三方SDK:JPush SDK Eclipse