1、API Store:http://apistore.baidu.com/

2、推送

3、腾讯信鸽推送平台

4、SDK与文档
下载了之后,

10分钟快速指南,请先参考本指南接入

http://developer.xg.qq.com/index.php/Android_SDK%E5%BF%AB%E9%80%9F%E6%8C%87%E5%8D%97

注意;可能.so包有问题。所以好看一些步骤:

Android SDK快速指南

信鸽Android SDK是一个能够提供Push服务的开发平台,提供给开发者简便、易用的API接口,方便快速接入。
目前支持Android 2.2及以上版本系统。

本文档将引导用户以最快的速度嵌入信鸽SDK。

目录

[隐藏]

  • 1 注册&下载SDK
  • 2 工程配置
  • 3 启动并注册App
  • 4 验证
  • 5 通知的异常自查列表
  • 6 包冲突
  • 7 代码混淆
  • 8 关于抵达量/点击量和自定义key-value的统计
  • 9 更多功能

注册&下载SDK

前往前台 信鸽首页,使用QQ号码登陆,打开注册页面,填写“应用名称”和“应用包名”(必须要跟APP一致),选择“操作系统”和“分类”,最后点击“创建应用”。
应用创建成功后,点击“应用配置”即可看到APP专属的AccessId和AccessKey等信息。

注册完成后,请下载最新版本的Android SDK到本地,并解压。

工程配置

以eclipse为开发的IDE为例,将SDK导入到工程的步骤为:
1、创建或打开Android工程(关于如何创建Android工程,请参照开发环境的章节)。
2、将信鸽 SDK目录下的libs目录所有文件拷贝到工程的libs(或lib)目录下。
3、选中libs(或lib)目录下的信鸽jar包,右键菜单中选择Build Path, 选择Add to Build Path将SDK添加到工程的引用目录中。
4、打开Androidmanifest.xml,添加以下配置(建议参考下载包的Demo修改),其中YOUR_ACCESS_ID和YOUR_ACCESS_KEY替换为APP对应的accessId和accessKey,请确保按照要求配置,否则可能导致服务不能正常使用。

<application<!-- APP项目的其它配置... --><!-- 【必须】 信鸽receiver广播接收 --><receiverandroid:name="com.tencent.android.tpush.XGPushReceiver"android:process=":xg_service_v2" ><intent-filter android:priority="0x7fffffff" ><!-- 【必须】 信鸽SDK的内部广播 --><action android:name="com.tencent.android.tpush.action.SDK" /><action android:name="com.tencent.android.tpush.action.INTERNAL_PUSH_MESSAGE" /><!-- 【必须】 系统广播:开屏和网络切换 --><action android:name="android.intent.action.USER_PRESENT" /><action android:name="android.net.conn.CONNECTIVITY_CHANGE" /><!-- 【可选】 一些常用的系统广播,增强信鸽service的复活机会,请根据需要选择。当然,你也可以添加APP自定义的一些广播让启动service --><action android:name="android.bluetooth.adapter.action.STATE_CHANGED" /><action android:name="android.intent.action.ACTION_POWER_CONNECTED" /><action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" /></intent-filter></receiver><!-- 【必须】 (2.30及以上版新增)展示通知的activity --><!-- 【注意】 如果被打开的activity是启动模式为SingleTop,SingleTask或SingleInstance,请根据通知的异常自查列表第8点处理--><activityandroid:name="com.tencent.android.tpush.XGPushActivity"android:exported="true" ><intent-filter><!-- 若使用AndroidStudio,请设置android:name="android.intent.action"--><action android:name="" /></intent-filter></activity><!-- 【必须】 信鸽service --><serviceandroid:name="com.tencent.android.tpush.service.XGPushService"android:exported="true"android:persistent="true"android:process=":xg_service_v2" /><!-- 【必须】 通知service,此选项有助于提高抵达率 --><serviceandroid:name="com.tencent.android.tpush.rpc.XGRemoteService"android:exported="true" ><intent-filter><action android:name="应用包名.PUSH_ACTION" /></intent-filter></service><!-- 【必须】 请将YOUR_ACCESS_ID修改为APP的AccessId,“21”开头的10位数字,中间没空格 --><meta-data android:name="XG_V2_ACCESS_ID"android:value="YOUR_ACCESS_ID" /><!-- 【必须】 请将YOUR_ACCESS_KEY修改为APP的AccessKey,“A”开头的12位字符串,中间没空格 --><meta-data android:name="XG_V2_ACCESS_KEY" android:value="YOUR_ACCESS_KEY" />
</application><!-- 【必须】 信鸽SDK所需权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.VIBRATE" />
<!-- 【可选】 信鸽SDK所需权限 -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BATTERY_STATS" />

启动并注册App

完成工程配置后,打开工程的主Activity,在其onCreate(Bundle savedInstanceState)重载方法内,添加以下代码,完成信鸽服务的启动与APP注册过程。

// 开启logcat输出,方便debug,发布时请关闭
// XGPushConfig.enableDebug(this, true);
// 如果需要知道注册是否成功,请使用registerPush(getApplicationContext(), XGIOperateCallback)带callback版本
// 如果需要绑定账号,请使用registerPush(getApplicationContext(),account)版本
// 具体可参考详细的开发指南
// 传递的参数为ApplicationContext
Context context = getApplicationContext();
XGPushManager.registerPush(context);    // 2.36(不包括)之前的版本需要调用以下2行代码
Intent service = new Intent(context, XGPushService.class);
context.startService(service);// 其它常用的API:
// 绑定账号(别名)注册:registerPush(context,account)或registerPush(context,account, XGIOperateCallback),其中account为APP账号,可以为任意字符串(qq、openid或任意第三方),业务方一定要注意终端与后台保持一致。
// 取消绑定账号(别名):registerPush(context,"*"),即account="*"为取消绑定,解绑后,该针对该账号的推送将失效
// 反注册(不再接收消息):unregisterPush(context)
// 设置标签:setTag(context, tagName)
// 删除标签:deleteTag(context, tagName)

代码嵌入完成后,启动APP,如果在logcat中的TPush标签看到以下类似的输出,说明已经注册成功,并返回token。

  • 图:注册成功本地标签为“TPush”标签的logcat日志打印

注意;可能.so包有问题。所以好看一些步骤:

验证

前往信鸽前台,选择“创建通知”,输入“标题”和“内容”,点击“确认推送”。稍等几秒后,如果顺利的话,终端设备应该能够收到这条通知。

  • 图:前台下发通知界面

  • 图:终端设备收到通知界面

通过上面的接入,APP已经具备接收通知推送的能力。
当然,如果还需要更高级的功能,请继续阅读或参数《SDK开发指南》

通知的异常自查列表

信鸽的发布包都是经过严格测试的,遇到问题时,尤其是开发环境问题,建议先自行搜索网上解决方案。
常见的检查列表:
1.设备是否正常联网?
2.检查AndroidManifest.xml是否配置正确?建议直接参考demo的例子改

2.1. accessId、accessKey设置是否与前台注册的一致?
2.2. 相关权限是否齐全?
2.3. receiver、service和activity相关组件是否配置好?

3.设备是否注册成功?
4.当前APP包名是否与前台注册的一致,如果不一致请在前台选中“使用多包名”选项?
5.前台下发通知时,“时段控制”选项里的时间段是否符合终端设备当前时间?
6.请根据“常见问题与解答”,看看是否有解决方案。
7.2.30及以上版本请检查xml配置文件是否添加com.tencent.android.tpush.XGPushActivity相关的内容
8.停留在后台的APP点击通知不能打开APP:被打开的activity(特别是LAUNCHER)启动模式为SingleTop,SingleTask或SingleInstance,请在该activity重载onNewIntent方法:

@Override
protected void onNewIntent(Intent intent) {super.onNewIntent(intent);       setIntent(intent);// 必须要调用这句
}

9.对于使用AndriodStudio的同学,若AndroidManifest.xml编译不通过,XGPushActivity配置改为: <action android:name="android.intent.action" />
10.请检查AndroidManifest.xml是否已正确配置XGRemoteService,且intent-filter中是否正确设置: <action android:name="应用包名.PUSH_ACTION" />,应用包名为当前APP包名,如com.tencent.xgdemo 
11.是否已设置APP默认的icon?由于系统原因,若没有icon,通知将不能展示。
12.(2.36之前的版本)已知MIUI V6上会禁用所有静态广播,若出现有类似的情况,请添加以下代码兼容该系统。

// 在XGPushManager.registerPush(context)或其它版本的注册接口之后调用以下代码
// 使用ApplicationContext
Context context = getApplicationContext();
Intent service = new Intent(context, XGPushService.class);
context.startService(service);

13.点击通知,出现不能打开activity的情况,请在AndroidManifest.xml中将XGPushActivity的exported属性设置为true。
14.点击通知,出现重复打开APP的情况,请将被打开的Activity启动模式改为SingleTop,SingleTask或SingleInstance。
15.点击通知,不希望触发activity被打开的动作,可以:1.推送时,填写一个不存在的页面名称;2.使用消息透传(命令字)推送,收到消息后,自己弹出通知。
16.注册出现-10005错误,请在AndroidMenifest.xml添加XGRemoteService。
如果还不能排查问题,请加入信鸽开发者技术QQ群:333782566,会有专门的人员协助。

包冲突

1.jar包冲突:

如果提示jar包冲突,请删除冲突的包,保留一份即可,建议保留版本高的。
常见的冲突有:
1)MSDK与信鸽冲突:删除wup.jar
2)MTA与信鸽冲突:删除低版本的mid.jar

2. .so文件导入:.so文件是信鸽必须的组件,支持armeabi、armeabi-v7a、misp和x86平台,请根据自己当前.so支持的平台添加

1)如果你的项目中没有使用其它.so,建议复制四个平台目录到自己工程中
2)如果已有.so文件,只需要复制信鸽对应目录下的文件
3)若是MSDK接入的游戏,通常只需要armeabi目录下的.so
4)若当前工程已经有armeabi,那么只需要添加信鸽的armeabi下的.so,其它目录无需添加。其它情况类似,只添加当前平台存在的平台即可。

代码混淆

如果你的项目中使用proguard等工具做了代码混淆,请保留以下选项,否则将导致信鸽服务不可用。

-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep class com.tencent.android.tpush.**  {*;}
-keep class com.tencent.mid.**  {*;}

关于抵达量/点击量和自定义key-value的统计

2.30及以上版本
2.30及以上版本:使用信鸽SDK内置的activity展示页面,默认已经统计通知/消息的抵达量、通知的点击和清除动作。但如果开发者要监听这些事件,可参考“Android SDK开发指南”中的“【2.30及以上版本】通知效果监听和自定义key-value”章节。 
XGPushManager.onActivityStarted(this)获取通知被点击及自定义key-value由原来的onStart()改为onResume()

        @Overrideprotected void onResume() {super.onResume();XGPushClickedResult click = XGPushManager.onActivityStarted(this);if (click != null) { // 判断是否来自信鸽的打开方式// 根据实际情况处理...// 如获取自定义key-value}}

同理,XGPushManager.onActivityStoped(this)由onStop()改为onPause()内调用,即:

   @Overrideprotected void onPause() {super.onPause();XGPushManager.onActivityStoped(this);}

注意:
1)需要将onActivityStarted和onActivityStoped嵌入到所有可能被打开的activity,建议所有activity都加上。
2)如果被打开的activity启动模式为SingleTop,SingleTask或SingleInstance,请根据以下在该activity重载onNewIntent方法:

    @Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);     setIntent(intent);// 必须要调用这句}

通知在通知栏被点击或清除时的回调,即自定义Receiver(需重载XGPushBaseReceiver)的onNotifactionClickedResult重载方法中区分点击和清除动作,XGPushClickedResult添加getActionType(),其中XGPushClickedResult.NOTIFACTION_CLICKED_TYPE表示点击操作,XGPushClickedResult.NOTIFACTION_DELETED_TYPE表示清除操作。即:

  @Overridepublic void onNotifactionClickedResult(Context context,XGPushClickedResult message) {if (context == null || message == null) {return;}if (message.getActionType() == XGPushClickedResult.NOTIFACTION_CLICKED_TYPE) {// 通知在通知栏被点击啦。。。。。// APP自己处理点击的相关动作// 这个动作可以在activity的onResume也能监听,请看第3点相关内容} else if (message.getActionType() == XGPushClickedResult.NOTIFACTION_DELETED_TYPE) {// 通知被清除啦。。。。// APP自己处理通知被清除后的相关动作}}

2.30版本之前
2.0/2.1x/2.2x版本:SDK默认统计通知/消息的抵达量,但对于点击量和自定义key-value,需要所有activity的onStart重载方法中调用 XGPushManager.onActivityStarted(this);才能统计,具体请参考“Android SDK开发指南”中的“【2.30以前版本】通知打开效果和自定义key-value”章节。

腾讯-信鸽实现消息推送相关推荐

  1. 甘恒通:腾讯信鸽海量移动推送服务构建

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 作者:甘恒通,2011年加入腾讯TEG数据平台部,主要负责大数据平台.推送平台后台的研发和优化工作,对构造高可用.高性能的分布式大数据处理和 ...

  2. 百亿级实时消息推送的实战之道,与王者荣耀一班车就是这么稳!

    要说现在市面上最火爆的手游,莫非拥有两亿注册用户的王者荣耀了.据悉,王者荣耀的渗透率高达22.3%,这意味着每7个中国人中就有一位是王者荣耀注册用户.众所周知,手游App对推送实时性和精准性要求非常高 ...

  3. 消息推送服务厂家对比 个推 - 极光 - 信鸽

    消息推送服务厂家对比 个推 - 极光 - 信鸽 厂家: 个推: https://www.getui.com/push 极光: https://www.jiguang.cn 信鸽: https://ww ...

  4. 消息推送技术干货:美团实时消息推送服务的技术演进之路

    本文由美团技术团队分享,作者"健午.佳猛.陆凯.冯江",原题"美团终端消息投递服务Pike的演进之路",有修订. 1.引言 传统意义上来说,实时消息推送通常都是 ...

  5. 国内APP消息推送机制以及微信消息延迟问题剖析

    转自:https://club.huawei.com/thread-15878044-1-1.html 一.前言 随着安卓手机以及QQ/微信/支付宝/滴滴出行/美图外卖等一大批移动通信/移动消费应用的 ...

  6. Android 项目必备(三十八)-->APP 消息推送

    文章目录 前言 推送的实现方式 1. C2DM 2. 轮询 3. SMS信令推送 4. MQTT协议 5. XMPP协议 6. 使用第三方平台 Android 中 MQTT 的使用 1. 集成 2. ...

  7. Java后端实现安卓/IOS移动端消息推送(百度云推送)

    本文主要介绍Java服务器端如何借助第三方推送平台(百度云推送)推送给移动端消息. 使用案例介绍: 根据客户的需求,需要做一个类似淘宝消息推送的功能,客户下订单.订单付款.订单商品已发货,以及客户完成 ...

  8. java设置铃声_APP集成小米消息推送自定义铃声设置

    正 文: 目前市面上APP有很多第三方推送,如个推.极光.腾讯信鸽.百度云推送.友盟推送.云巴推送等,还有厂商系统级的推送,比如小米推送.华为推送,这个就很像iOS系统的APNs消息推送,可以做到不管 ...

  9. iOS开发之消息推送 —— 远程消息推送入门

    每次看到iOS的远程消息推送,总是感觉很头大,即便后来项目都做完了,还是觉得摸不着远程推送的脉门,网上介绍的资料虽多,但不是写的太简单了,就是写的太详细了,不能一下抓住要点,今天终于能够抽出点时间,来 ...

最新文章

  1. ipa解包打包工具_7步!教你轻松搞定ios重签ipa包
  2. 调研CSS选择器在浏览器中的支持情况
  3. 商城开发(1)-前期准备
  4. git学习——四git版本管理
  5. 这些大佬,真的牛逼了!
  6. 前端入门--解决问题的一些方法
  7. java异常捕获的一点感悟
  8. Flutter进度条Flutter圆形进度条Flutter条形进度条Flutter Progress进度条LinearProgressIndicator
  9. 1012. 数字分类 (20)-PAT乙级真题
  10. tensorflow精进之路(二十)——使用slim模型库训练自己的数据
  11. 半自动化运维之服务器信息维护
  12. fpga烧写bin文件_FPGA烧写的方式和具体过程分析
  13. ssm-学子商城-项目第八天
  14. switch好玩吗_外媒评Switch平台最佳游戏 好玩的基本都在这了
  15. 青龙-聚看点(稳定的毛)
  16. fedora34 不显示桌面图标
  17. 443端口是什么,如何启用?
  18. 20181113-1 版本控制报告
  19. Android学之客户端服务端Socket简单通信
  20. 2018.3版本 CLion的激活码

热门文章

  1. JavaScript循环语句for,while,与break,continue配合案例详解
  2. 学了 C 语言到底能做什么, 能从事什么工作?
  3. FMEA软件——你们的FMEA还“活着”吗?
  4. matlab光顺拐点,Matlab的smooth方法(降噪\光顺\移动平均)
  5. 定积分的特殊计算方法
  6. 个人收集的java面试题库
  7. 执行pytest生成测试报告遇到的问题
  8. 老司机人手必备xxlive 仅供学习交流 勿传播以及商业用途
  9. arping指令即其参数对应的功能
  10. 土办法解决日期转换问题,转出格式为。。。 贰零壹陆年零壹月零捌日