关于android:Android-第三方消息推送之个推集成

97次阅读

共计 4139 个字符,预计需要花费 11 分钟才能阅读完成。

Android 第三方音讯推送之个推集成

一:简介
个推 Android SDK 为 Android 利用提供了平安稳固的推送服务模块,开发者只需在原有 App 中进行简略的配置和编码工作,即可疾速取得实时稳固的音讯推送能力。
第三方推送次要是依照对方提供的开发文档集成就好
二:推送流程

1.App 调用个推 SDK 初始化接口,获取推送标识 ClientID(简称 CID)
2.App 将 CID 将 CID 上传到服务端进行保留。通常须要将该 CID 与相应的用户 ID 进行关联,以便后续针对特定用户进行音讯推送
3. 业务方服务器须要给指定 CID 的设施发送音讯时,调用个推服务器音讯推送接口,个推服务器寻找指标设施,将音讯下发给相应的个推 SDK, 进而将音讯进行展现或者 APP 自行处理
三:权限管制
在 AndroidManifest 下的 <manifest> 节点下

 <uses-permission android:name="android.permission.INTERNET" />
    <!-- 查看网络状态,sdk 重连机制等须要应用 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- 获取手机状态参数,并作为生成个推惟一标识的必要参数 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!-- 查看 wifi 连贯状态 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- 开机自启动权限,晋升 sdk 沉闷,保障触达 -->
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <!-- 读写权限 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- 触动 -->
    <uses-permission android:name="android.permission.VIBRATE" />
    <!-- 获取工作信息,目标是避免 sdk 被频繁唤醒 -->
    <uses-permission android:name="android.permission.GET_TASKS" />

四:集成
第一步:在我的项目根目录 build.gradle 文件下,配置 maven 仓库

allprojects {
    repositories {google()
        jcenter()
        maven {url "http://mvn.gt.igexin.com/nexus/content/repositories/releases/"}
    }
}

第二步:配置依赖
在 app 下的 build.gradle, 增加 sdk 依赖

  // 个推
implementation 'com.getui:sdk:2.14.1.0'
 // 个推统计
implementation 'com.getui:gssdk:2.3.0.1'

并在 android 下 defaultConfig 节点下配置个推的生成的 AppId 等

android{
defaultConfig{
 // 个推
 // 从 3.1.2.0 版本开始,APPID 占位符从 GETUI_APP_ID 切换为 GETUI_APPID 
                  // 后续所有产品的 APPID 均对立配置为 GETUI_APPID 占位符
        manifestPlaceholders = [
                GETUI_APP_ID      : "*********************",
                GETUI_APP_KEY     : "*********************",
                GETUI_APP_SECRET  : "*********************",
                GS_APPID          : *********************",
       
        ]


        ndk {
            // 抉择要增加的对应 cpu 类型的.so 库。abiFilters 'arm64-v8a','armeabi', 'armeabi-v7a', 'x86_64','x86'
        }
}
}

个推 3.1.2.0 当前
1. 移除 Gradle 中 GETUI_APP_KEY、GETUI_APP_SECRET、配置,GETUI_APP_ID 改为 GETUI_APPID, AndroidManifest 中仅保留 GETUI_APPID 占位符。
2. 为兼容 Android 9.0,请在 application 节点增加 android:usesCleartextTraffic=”true”;
3. 新增 PushManager.getInstance().initialize(Context context) 接口进行初始化,举荐应用该接口进行初始化。
4. 新增 PushManager.getInstance().setDebugLogger(Context context, IUserLoggerInterface loggerInterface) 接口,用于调试日志输入。
第四步:配置推送服务
为了让推送服务在局部支流机型上更稳固运行,从 2.9.5.0 版本开始,个推反对第三方利用配置应用自定义 Service 来作为推送服务运行的载体。
在我的项目中

public class MessageCustomPushService extends PushService {
}
// 在 AndroidManifest 中
<service android:name=".pushservice.MessageCustomPushService"
            android:exported="true"
            android:label="PushService"
            android:permission="android.permission.BIND_JOB_SERVICE"
            android:process=":pushservice"// 另一个过程
            />

第五步:设置图标
具体可见个推集成文档
第六步:编写集成代码
1. 初始化 SDK
调用个推初始化代码 PushManager.getInstance().initialize(Context context) 进行 SDK 的初始化。咱们倡议开发者在 Application.onCreate() 和主 Activity.onCreate() 办法中初始化个推 SDK。屡次调用 SDK 初始化并无影响。为了保障 SDK 服务稳固,举荐疏导用户受权相干的隐衷权限。
2. 自定义接管推送服务事件


/**
 * 继承 GTIntentService 接管来自个推的音讯,所有音讯在线程中回调,如果注册了该服务,则务必要在 AndroidManifest 中申明,否则无奈承受音讯
 */public class MessageReceiveIntentService extends GTIntentService {

 @Override
    public void onReceiveServicePid(Context context, int pid) { }

    // 解决透传音讯
    @Override
    public void onReceiveMessageData(Context context, GTTransmitMessage msg) {// 透传音讯的解决,详看 SDK demo}

    // 接管 cid
    @Override
    public void onReceiveClientId(Context context, String clientid) {Log.e(TAG, "onReceiveClientId ->" + "clientid =" + clientid);
    }

    // cid 离线上线告诉
    @Override
    public void onReceiveOnlineState(Context context, boolean online) { }

    // 各种事件处理回执
    @Override
    public void onReceiveCommandResult(Context context, GTCmdMessage cmdMessage) { }

    // 告诉达到,只有个推通道下发的告诉会回调此办法
    @Override
    public void onNotificationMessageArrived(Context context, GTNotificationMessage msg) { }

    // 告诉点击,只有个推通道下发的告诉会回调此办法
    @Override
    public void onNotificationMessageClicked(Context context, GTNotificationMessage msg) {}}

<service
    android:name="com.getui.demo.service.DemoIntentService"
    android:permission="android.permission.BIND_JOB_SERVICE"/>

五:接口相干介绍
Tag[] tags=new Tag[]{};
PushManager.getInstance().setTag(Context context,Tag[] tags,String s); 标签接口类,用于给用户打上标签(如能够用于精准推送)
等其余可见开发者文档
六:个推统计 SDK 集成
同上差不多,集成 AppID

//1. 从启动利用到敞开利用
//2. 从启动利用到利用退至后盾,且在后盾运行工夫超过 30s 
 GsConfig.setSessionTimoutMillis(20 * 60 * 1000);
 // 开启开发者模式:GsConfig.setDebugEnable(isDebug);
 GsConfig.setInstallChannel(channel);
 //SDK 初始化
 GsManager.getInstance().init(mApplication);

结尾:小时候想把头发梳成小孩儿模样,长大后才发现小孩儿其实没有什么头发

正文完
 0