第三方开源库:个推

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值