第三方开源库:个推

来源:互联网 发布:六十甲子单双计算法 编辑:程序博客网 时间:2024/05/22 03:10

官方文档非常详细,而且每一步都配图说明。
官方文档的透传数据(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

0 0