概述

公司准备采用个推作为第三方推送平台,我作为客户端的头号小鸟,掐指一算已经毕业 0.1 年了,Leader 准备把这个简单而又独立的功能点交给我来处理,我紧张兮兮的打开官网集成文档 学习了起来。其实早在自己大二的时候就集成过个推 SDK,溜达一圈又回来集成个推推送SDK了,发现现在的个推 SDK 与当年相比,集成起来真的方便多了。这次集成的是Android推送SDK,希望这篇文章,可以让同学们可以更加快捷的集成个推推送。

思维导图

详细步骤

下载 demo

我的师傅大鸟哥告诉我,集成各类 SDK 的第一步骤都是下载个 Demo,先把 Demo 跑起来看看是什么鬼。咱也不敢问,咱也不敢说,先去下载个Demo玩玩。我选择的是国内版本的个推 SDK,大家可以自行选择要下载的版本。使用 AS 3.1 把 Getui_SDK_Demo_AS_maven 这个工程直接运行起来,出现了下面这个界面(此处已经对我个人参数进行了手动马赛克)。

好了,按我大鸟哥的意思至少 demo 已经成功运行起来了,接下去就是去把上述的 APPID,APPKey 等参数换成自己的,那么这些参数又是怎么来的呢?

创建个推应用

看完 Demo 后,慌兮兮打开官网集成文档,原来那些参数是需要创建应用才会获得的,而 cid 是个推SDK 回调的,没啥说的,那就 “注册登录-创建应用-获取配置” 三连击

注册登录账号:

创建应用

登入成功后,点击我的应用进入,再接着点击右上角的《创建应用》就可以创建属于自己的应用了,因为我已经创建完成,所以此处有城墙一样厚的马赛克

填写自身 APP 的基础信息

敲黑板!!!,iOS 是默认不勾选的,听说 iOS 有自带的推送系统?先不管了,勾上再说,他们爱用不用。

获取配置数据

由于我已经注册完成了,填完后的界面就要靠大家自行脑补了。应用创建成功后,就可以查看我们创建的 APP 所绑定的配置信息了。

看到这里,我终于知道了之前 Demo 里面的那些配置信息是哪里来的了,为了保证我这些参数是有效的, 我还来了一波骚操作:把 Demo 里面的工程的包名换成自己创建 APP 的包名,appid等信息也进行了替换,发现成功拿到了 cid,问了下他们技术支持,大概意思是只要拿到 cid,集成就完成了 90 %!!!,鸟弟我激动的搓起了小手。后面的思路就清晰了,无非是把 Demo 里东西拷到自己的项目里面就完事了嘛。

添加依赖及配置

我使用 Maven 的方式集成了 2.13.2.0 版本的 SDK,选用 Maven是为了方(偷)便(懒)的集成!如果是选择手动集成的,请疯狂戳我
先看下他们的资料包的内容

看这个资料包,发现要导入的东西还是蛮多的,各种资源,我选择了 Maven 集成,那么 jar 包& so 就无需导入了

添加 maven 库

  • 在项目根目录的 build.gradle 中添加 maven 库,不然 load 不到 jar 包
allprojects {repositories {maven {url 'http://mvn.gt.igexin.com/nexus/content/repositories/releases'}}
}

  • 在 项目/app 目录下的 build.gradle 中配置jar 包
dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])compile 'com.getui:sdk:2.13.2.0'
}

配置之前创建的 appid 等

依葫芦画瓢,这里就直接从 demo 那边拷过来就行了
千万千万要小心,认真核对每一个参数,如果出现空格或者 Appid 与 AppKey写反这类的低级错误真的要检查到哭

manifestPlaceholders = [GETUI_APP_ID : "你的 APPID",GETUI_APP_KEY : "你的 APP_KEY",GETUI_APP_SECRET : "你的 APP_SECRET"
]

导入个推 res 文件

千万千万别忘了,我之前就在这个地方踩了坑,使用 maven 集成就不再需要 so 文件,切记!

  • 把 Getui_SDK_Demo_AS_maven/资源文件/res 里面的文件一一对应导入到自己项目中的 app/src/main/res 下面

配置可选权限

可选可不选的权限,我这边是写上了,因为我项目中正好也需要用到这些权限,美滋滋~

<!-- 支持iBeancon 需要蓝牙权限 --><uses-permission android:name="android.permission.BLUETOOTH"/><uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/><!-- 支持个推3.0 电子围栏功能 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

配置自定义服务

Demo 里面还配置了自定义的 service,我也搞了后,官网上有这么一句话

为了让推送服务在部分主流机型上更稳定运行,从2.9.5.0版本开始,个推支持第三方应用配置使用自定义Service来作为推送服务运行的载体

都这么说了,鸟弟我二话不说就 new 一个自定义服务,进行空实现即可

package com.xinwenwang.xy;import com.igexin.sdk.PushService;public class XyPushService extends PushService {}

新建的 service 千万别忘了把新建的 service 注册到 AndroidManifest.xml 中,多么痛的领悟

<serviceandroid:name="com.xxxx.yyyy.XyPushService"android:exported="true"android:label="PushService"android:process=":pushservice">
</service>

深入一想也可以理解为啥要加个空实现的 service,就像集成微信分享一样,微信分享也要求继承一个指定的 activity。

编写集成

这么一步步的走下来,要配置挺多东西的,终于要开始初始化 SDK 了 ‍♀️ ‍♀️ ‍♀️

初始化 SDK

com.igexin.sdk.PushManager.getInstance().initialize(getApplicationContext(), com.xxxx.yyyy.XyPushService.class);

我这边是在开屏页初始化个推推送的,大家可以随意,只要在 activity 初始化即可,建议是初始化越早越好

接收推送服务事件

那么问题来了,搞了上面这么多东西,推送的消息或者透传是怎么个接收法呢?一头雾水有木有!我又跑回去看了看 Demo,发现还有个叫 DemoIntentService 的玩意,打开一看里面有很多很多的回调,鸟哥说的话果然带劲呀,Demo 理解透,项目集成快!
建议大家直接把 Demo 中的 DemoIntentService 拷到自己的项目中,如果需要修改一些DemoIntentService 里面的内容,自便哈。记得修改个名字,不然放在自己的项目里面真的太 low 了!我暂名为 XyPushIntentService。

  • 在AndroidManifest.xml中配置上述 IntentService 类:
<!-- 用户自定义服务继承自GTIntentService,作为SDK与APP桥梁服务,用来接收各种消息和命令回复--><service android:name=".XyPushIntentService"android:permission="android.permission.BIND_JOB_SERVICE"/>

  • 在个推SDK初始化后,注册上述 IntentService 类
// XyPushIntentService 为第三方自定义的推送服务事件接收类
PushManager.getInstance().registerPushIntentService(getApplicationContext(), XyPushIntentService.class);

测试

总算集成完了,导入上述东西需要细心些哈,漏了一步有的你难受的。
项目跑起来后,在 XyPushIntentService 会有 cid 的回调,最直观的方法是在 logcat 里面输入 clientid ,就可以看到在控制台输出日志了,这个 clientID 相当于此 APP 在该设备上的唯一识别码。

最后一步肯定是创建通知了。

这边只是创建了一个最最最简单的样式仅供参考,我看这界面上的功能估计可以满足各种运营的玩法了,我这边就不献丑了:)。推送测试消息的时候,应用一定要在前台,在前台,在前台,重要的事情说三遍

#尾声
首次集成这类大型 SDK 让我意想不到的顺利,我和我的小伙伴们都 惊呆了 ,后面我再仔细阅读了下个推的文档,他们家的功能还是很齐全的,我仅是进行了最基础的集成而已,不过也可以满足产品与运营的需求了。不得不提一句,他们的技术支持服务确实够劲(此处确实是一条广告实锤了~),回复的快而准。现在我得赶紧去写 Bug 了,告辞 ~~~

文章转载自:https://blog.csdn.net/u013651405/article/details/99891093

作者:吃饱了想睡

个推无法获取个推id_最新个推Android 推送 SDK Maven 集成相关推荐

  1. 最新个推Android 推送 SDK Maven 集成

    概述 公司准备采用个推作为第三方推送平台,我作为客户端的头号小鸟,掐指一算已经毕业 0.1 年了,Leader 准备把这个简单而又独立的功能点交给我来处理,我紧张兮兮的打开官网集成文档 学习了起来.其 ...

  2. django 集成个推_个推推送SDK集成过程及开发建议

    服务简介 个推是由国内个信互动网络科技有限公司所推出的平台,帮助企业的应用通过低成本互联网通道进行消息推送,提供完善.高效.稳定的服务体系,解决了互联网云端到手机端的消息互通问题,依托于已有成熟的推送 ...

  3. 最新帝国cms主动推送插件(集所有搜索最全版)

    <?php class zhanzhangPush {private $dbhost = 'localhost:3306'; // mysql服务器主机地址private $dbuser = ' ...

  4. 微信小程序一次获取多个formid插件,实现主动推送多次消息

    微信小程序一次获取多个formid 微信小程序一次获取多个formid插件,实现主动推送多次消息 版本号:1.0.0 作者:chen-yt github: https://github.com/che ...

  5. android 友盟推送获取不到devicetoken,使用友盟消息推送中遇到的哪些问题--索引(开发者必读)...

    友盟推送服务器容量如何?每天耗电.耗流量多少?开发者自己的推送如何与友盟推送系统进行通讯?用户如何关闭推送服务?集成中有哪些坑?等等等等,汇总贴,供参考. 先来介绍下友盟推送有啥功能吧. 第一,支持多 ...

  6. Android推送通知指南(转)

    在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是Android平台上实现起来却相 ...

  7. Android 推送通知指南(转载)

    在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是Android平台上实现起来却相 ...

  8. Android推送集成方案总结

    Android推送集成方案总结 刚做完推送集成方案,记录下坑. 这里记录的特性和使用时针对写blog时采用的sdk的,具体使用流程和限制还请参考官方给出的sdk. 1.推送规则 小米手机用小米推送: ...

  9. iOS开发-极光推送SDK使用笔记

    推送作为一个产品必备功能,越来越得到所有人的重用,市面上做推送的第三方公司也有很多,像个推,百度,甚至友盟也出了推送功能.用什么不是我们能决定的,而是上级或产品决定的,所以我负责的项目用了极光推送,我 ...

最新文章

  1. 【组队学习】【31期】青少年编程(Scratch 四级)
  2. jQuery mobile 中div圆角弹出层
  3. Linux——Ubuntu 18.04 安装screenFetch(显示系统/主题信息的命令行脚本)
  4. 干货!这可能是你见过最全的 Python 时间处理方法总结
  5. static class 静态类(Java)转
  6. Python学习笔记(序列和元组)
  7. vue如何把数组转为json数组_vue.js,_vuejs Ajax取得一个数据json数组,vue.js - phpStudy...
  8. mysql备份时过滤掉某些库 以及 去掉Warning: Using a password on the command line interface can be insecure.提示信息...
  9. C++ protected 一种使用场景
  10. 人生苦短,我用 Chrome!
  11. 如何在校外下载期刊全文--应对大家工作后的资料搜寻
  12. java重载父类方法_子类重载父类方法
  13. Tera Term 工具的使用
  14. 金蝶怎么录入数量金额_金蝶KIS迷你版初始化数量金额怎样录入
  15. 记一次挖矿病毒应急处置全过程挖矿处置基本操作
  16. 腾讯云服务器80等端口无法访问
  17. Python实战项目23个实战小项目小程序简单
  18. C++中std::setw()的用法
  19. 关于(object sender, EventArgs e)
  20. dba_autotask_client

热门文章

  1. NCBI中SRA数据库简介
  2. 二三代基因组混合组装流程的搭建与序列拼接并行优化方法研究_武海波
  3. Makelife的使用
  4. 中兴视讯服务器 广州,中兴高清视讯服务器ZXV10 M900
  5. ccf z字形 java_第三次CCF计算机软件能力认证题目:Z字形扫描
  6. r语言ggplot2一夜多图_ggplot2简介
  7. @scheduled cron启动后和每小时执行_小耶哥: 一个Redis分布式锁又要和小鑫同学扯半个小时!...
  8. java map 队列_Java:queue队列,map集合
  9. Caused by: org.apache.flink.core.fs.UnsupportedFileSystemSchemeException: Could not find a file syst
  10. mysql二级索引_mysql——二级索引(辅助索引)