个推真是个磨人的小妖精啊...啊.....

个推官网:个推官网

1、创建个推应用

登录 http://dev.getui.com ,选择登记应用并填写应用名称和包名信息,完成应用创建

image

image

点击应用配置,获取到相应的AppID、AppKey、AppSecret信息:

image

2、配置依赖

添加Maven库地址

在以项目名为命名的顶层build.gradle文件中,添加个推maven库地址,如下所示:

//Maven URL地址

maven {

url "http://mvn.gt.igexin.com/nexus/content/repositories/releases/"

}

在app/build.gradle文件中引用个推SDK依赖库,如下图所示:

dependencies {

implementation 'com.getui:sdk:2.12.5.0'

}

在app/build.gradle文件中的android.defaultConfig下指定所需的 CPU 架构:

android {

...

defaultConfig {

...

ndk {

abiFilters "armeabi", "armeabi-v7a", "x86_64"

}

}

}

配置个推应用参数

在app/build.gradle文件中的android.defaultConfig下添加manifestPlaceholders,配置个推相关的应用参数:

manifestPlaceholders = [

GETUI_APP_ID : "APP_ID",

GETUI_APP_KEY : "APP_KEY",

GETUI_APP_SECRET : "APP_SECRET"

]

请根据在后台创建应用获取到的应用参数进行相应替换APP_ID、APP_KEY、APP_SECRET的值

适配Android P

Android9.0以上默认不支持http通信,为保证SDK正常使用

请在application节点下新增该属性

3、添加权限声明

android:name="getui.permission.GetuiService.${applicationId}"

android:protectionLevel="normal" >

4、导入通知栏图标

为了修改默认的通知图标以及通知栏顶部提示小图标,请在资源目录的res/drawable-ldpi/、res/drawable-mdpi/、res/drawable-hdpi/、res/drawable-xhdpi/、res/drawable-xxhdpi/等各分辨率目录下,放置相应尺寸的文件名为push.png和push_small.png图片

建议的push.png图片尺寸如下 :(但是我好像没遵守也行)

ldpi:4848

mdpi:6464

hdpi:9696

xhdpi:128128

xxhdpi:192*192

建议的push_small.png图片尺寸如下:(但是我好像没遵守也行)

ldpi:1818

mdpi:2424

hdpi:3636

xhdpi:4848

xxhdpi:7272

xxxhdp:9696

5、 接收推送服务事件

在 接收推送服务事件项目源码中添加一个继承自com.igexin.sdk.GTIntentService的类,用于接收CID、透传消息以及其他推送服务事件。请参考下列代码实现各个事件回调方法:

public void onReceiveMessageData(Context context, GTTransmitMessage msg)是透传消息的处理

通知推送时下面有个高级设置,这个里面的透传消息可以在那里设置,如果后端使用的NotificationTemplate模板,那么点击后才会回调此方法,在这个里面可以 进行消息处理并进行分发跳转, 可以用EventBus传递到所有界面透传消息也会传到这个方法里面,绑定别名推送不分IOS还是android,android会直接走到这个里面,会导致自动跳转,透传的message中可以写一个type,标记是android还是IOS,客户端进行判处理(我是这样解决的)

package com.getui.demo;

import android.content.Context;

import android.os.Message;

import android.util.Log;

import com.igexin.sdk.GTIntentService;

import com.igexin.sdk.PushConsts;

import com.igexin.sdk.PushManager;

import com.igexin.sdk.message.FeedbackCmdMessage;

import com.igexin.sdk.message.GTCmdMessage;

import com.igexin.sdk.message.GTTransmitMessage;

import com.igexin.sdk.message.SetTagCmdMessage;

import org.json.JSONObject;

/**

* 继承 GTIntentService 接收来自个推的消息, 所有消息在线程中回调,

* 如果注册了该服务, 则务必要在 AndroidManifest中声明, 否则无法接受消息

*

* onReceiveMessageData 处理透传消息

*

* onReceiveClientId 接收 cid

*

* onReceiveOnlineState cid 离线上线通知

*

* onReceiveCommandResult 各种事件处理回执

*/

public class IntentService extends GTIntentService {

public DemoIntentService() {

}

@Override

public void onReceiveServicePid(Context context, int pid) {

}

@Override

public void onReceiveMessageData(Context context, GTTransmitMessage msg) {

byte[] payload = msg.getPayload();

String message = new String(payload);

Log.i(TAG, "onReceiveMessageData: " + message);

try {

JSONObject json = new JSONObject(message);

String pushType = json.getString("PHONE_TYPE");

if ("ANDROID".equals(pushType)) {

//new UsuallyEvent(message, UsuallyEvent.PUSH)是自己写的Event

EventBus.getDefault().post(new UsuallyEvent(message, UsuallyEvent.PUSH));

}

} catch (Exception e) {

Log.e(TAG, e.toString());

}

}

@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) {

}

@Override

public void onNotificationMessageArrived(Context context, GTNotificationMessage msg) {

}

@Override

public void onNotificationMessageClicked(Context context, GTNotificationMessage msg) {

}

}

在AndroidManifest.xml中配置上述 IntentService 类:

6、 初始化SDK并注册com.getui.demo.IntentService

PushManager.getInstance().initialize(this.getApplicationContext(),PushService.class);

// com.getui.demo.IntentService 为第三方自定义的推送服务事件接收类

PushManager.getInstance().registerPushIntentService(this.getApplicationContext(), com.getui.demo.IntentService.class);

7、测试

连接手机或启动Android模拟器,编译运行你的工程,查看logcat信息。在搜索框中输入clientid,如果能显示clientid is xxx日志,则说明个推SDK已经成功运行起来了,去后台推送就行了:

image

android 个推封装,Android个推快速集成相关推荐

  1. Android 友盟统计 友盟推送 友盟分享快速集成

    一.友盟统计 1.首先需要到友盟官网 http://mobile.umeng.com/apps注册并且添加新应用,获得Appkey 2.导入SDK,新版SDK支持Android 6.0,http:// ...

  2. 阿里云推送 AndroidSDK 3.0 快速集成

    文章目录 0.控制台中配置好产品应用 1. 基础接入配置使用 1.1配置根目录的 build.gradle文件 1.2配置要接入module的build.gradle文件 1.3配置清单文件 2. 接 ...

  3. Android V1、V2签名包和快速集成美团多渠道打包

    今日科技快讯 三天的Google I/O大会2018终于落下帷幕,虽说现在的I/O大会重点已经变成了人工智能,但是Android P的推出还是让很多小伙伴激动不已的.这次Android P被喻为近几年 ...

  4. Android PDF阅读框架/Android PDF框架简单使用,简单快速集成简易的PDF阅读器 ,AndroidPdfViewer框架简单使用。

    文章目录 1:前言 使用步骤 步骤1 导包 / 导引用 / 添加依赖 步骤2 更改xml布局文件 步骤3 java文件处理 1:前言 因为前段时间项目展示,我们小组本打算做的是TXT阅读框架,但是找了 ...

  5. android 支付模块封装,Android集成支付----支付宝支付总结与封装

    前言 类似于Android集成支付----微信支付总结与封装(可以查看本人另外一篇文章),本文对支付宝支付进行一个总结与封装.相比于微信支付,支付宝支付没有那么多坑. 集成支付宝支付SDK 这里只是简 ...

  6. android 播放器封装,Android视频播放最全总结:MediaPlayer+TextureView封装一个完美实现全屏、小窗视频播放器,附项目源码...

    原标题:Android视频播放最全总结:MediaPlayer+TextureView封装一个完美实现全屏.小窗视频播放器,附项目源码 作者:xiaoyanger 来源:http://www.jian ...

  7. android dialog的封装,Android系统Dialog的简单封装

    工作所需特意记录一下 ----------------------------------------------------------------------------------------- ...

  8. android 扫描枪封装,Android 扫码枪监听封装

    一.参考 1.常用keycode 一.简述 1.设备:扫码枪其实相当于一个物理输入设备,如果软键盘打开的话能明显感觉到其内容在输入 2.问题: 2.1.不能扫出中文来(可能和扫码枪设备,配置有关系) ...

  9. android动态权限封装,Android 动态权限申请的封装

    此模块基于AndPermission进行二次封装 为AndPermission加入依赖 implementation 'com.yanzhenjie:permission:2.0.3' //添加依赖 ...

最新文章

  1. 面向对象(内部类,static,包,访问修饰符,final)
  2. 产品经理经验谈50篇(四):数据分析常用方法及应用案例解析
  3. 为什么 kubernetes 天然适合微服务
  4. Python | 使用__del __()和__init __()实现析构函数和构造函数的示例
  5. spark提交到yarn_如何理解Spark应用的执行过程
  6. Linux 安装 nginx注意
  7. 小甲鱼 python11讲作业
  8. 昨日美股:美联储不再降息,苹果再创历史新高
  9. ce变速注入dll失败_调用CE变速DLL注入的软件含HOOK模块
  10. 功夫熊猫里乌龟大师的一句名言
  11. Android Studio 实战干货例程
  12. Python去除列表中元素的前后空格和换行
  13. 设计模式之策略+工厂实现支付功能代码优化
  14. 计算机打音乐两只老虎,两只老虎(音乐、汇编程序)
  15. 计算机配件进口关税走势,计算机类产品关税降50% 从20%下调至10%
  16. 抓包工具whistle安装与使用
  17. 简单的建站流程来啦!
  18. 华为交换机重制_华为交换机重置命令输入步骤?
  19. IOS开发 - 网络总结(一)
  20. python诗歌文件格式处理_Python文件基本操作

热门文章

  1. 【数值分析】复化积分公式
  2. 安装依赖报错:An unexpected error occurred: “E:\\ReactProject\\umi-project\\package.json:
  3. 图片太大怎么缩小mb?
  4. python爬虫如何使用代理ip
  5. FLy_buck 拓扑结构
  6. EtherCAT原理概述
  7. c++primer 第二章 变量和基本类型
  8. pmp中ram和raci的区别_【PMP考前冲刺】知识点大全(六)
  9. 网速前端计算系统探测
  10. 中国房价到底有多少泡沫?数据说话!