信鸽推送android 服务端推送怎么获取设备token

来自信鸽开发者中心
信鸽Android SDK是一个能够提供Push服务的开发平台,提供给开发者简便、易用的API接口,方便快速接入。
Android 2.2(API Level 8)及以上版本。
本SDK主要提供以下功能:
1. push服务
启动及初始化push
2. 通知与消息
接收自定义消息
自定义通知样式
3. 标签(Tag)
4. 别名(Alias)
5. 接收通知和消息
接收通知,直接在通知栏显示
接收消息,通过注册自定义Receiver接收
6. 效果统计
通知推送效果
通知点击效果
消息推送效果
7. push设置
Appkey设置
注册并获取AppKey。
1. 下载信鸽SDK压缩包到本地并解压;
2. 创建或打开Android工程;
3. 将xinge-sdk-x.x.x.jar复制到工程的libs目录下;
4. 配置上述jar到工程的Java Build Path(若是升级SDK,建议把旧jar包删除),步骤可参考下图;
5. 打开AndroidMenifest.xml,添加以下配置,其中标粗部分为开发者需要修改的地方(请参考代码下方截图),请确保按照要求配置,否则可能导致服务不能正常使用。
&!-- 用户App处理收到的消息 --&
&!-- YOUR_PACKAGENAME.MessageReceiver需要修改为开发者自己定义的receiver
&!-- &receiver android:name=&YOUR_PACKAGENAME.MessageReceiver& & --&
&receiver android:name=&com.tencent.pushsdkdemo.MessageReceiver& &
&intent-filter&
&action android:name=&com.tencent.xinge.push.action.MESSAGE_RECEIVE& /&
&/intent-filter&
&/receiver&
&!-- push service处理push消息 --&
android:name=&com.tencent.xinge.XPushReceiver&
android:process=&:xingeservice& &
&intent-filter&
&action android:name=&com.tencent.xinge.push.action.internal& /&
&action android:name=&android.intent.action.PACKAGE_REMOVED& /&
&action android:name=&android.net.conn.CONNECTIVITY_CHANGE& /&
&action android:name=&android.intent.action.BOOT_COMPLETED& /&
&/intent-filter&
&/receiver&
&!-- push service --&
android:name=&com.tencent.xinge.XPushService&
android:exported=&true&
android:process=&:xingeservice& &
&intent-filter&
&action android:name=&com.tencent.xinge.push.action.internal& /&
&/intent-filter&
&/service&
&!-- xinge AppKey,请将YOUR_APPKEY改为信鸽前台生成的AppKey --&
&meta-data
android:name=&XPUSH_APPKEY& android:value=&YOUR_APPKEY& /&
&!-- xinge渠道,请将default改为app发布的渠道 --&
&meta-data android:name=&XPUSH_CHANNEL& android:value=&default& /&
&/application&
&!-- Push service 运行需要的权限 --&
&uses-permission android:name=&android.permission.INTERNET& /&
&uses-permission android:name=&android.permission.VIBRATE& /&
&uses-permission android:name=&android.permission.READ_PHONE_STATE& /&
&uses-permission android:name=&android.permission.ACCESS_NETWORK_STATE& /&
&uses-permission android:name=&android.permission.ACCESS_WIFI_STATE& /&
&uses-permission android:name=&android.permission.WRITE_EXTERNAL_STORAGE& /&
&uses-permission android:name=&android.permission.RECEIVE_BOOT_COMPLETED& /&
&!-- 保留权限,后续添加功能需要用到 --&
&uses-permission android:name=&android.permission.WRITE_SETTINGS& /&
&uses-permission android:name=&android.permission.ACCESS_DOWNLOAD_MANAGER& /&
&uses-permission android:name=&android.permission.DOWNLOAD_WITHOUT_NOTIFICATION& /&
&uses-permission android:name=&android.permission.DISABLE_KEYGUARD& /&
&uses-permission android:name=&android.permission.SYSTEM_ALERT_WINDOW& /&
&uses-permission android:name=&android.permission.ACCESS_COARSE_LOCATION& /&
&uses-permission android:name=&android.permission.ACCESS_FINE_LOCATION& /&
所有API接口的包名路径前缀都是:com.tencent.xinge,其中有4个重要的对外提供接口的类,如下:
Push服务,推送效果
XPushConfig
Push服务设置
BasicPushNotificationBuilder
定制Notification里面的基础行为,如defauls、icon、flags
CustomPushNotificationBuilder
不仅可以定制基础行为,还可以定制Notification Layout,指定自定义的通知样式
在主Activity的onCreate(Bundl)方法调用start接口,启动服务。
XPush.start(Application application)
application:
Application对象,对于Activity和Service来说,通常为this.getApplication();为null时抛出NullPointerException。
true:启动成功
false:启动失败
失败的原因可能是:1)服务已经在运行;2)服务被禁止;3)AndroidMenifest.xml没有配置必要的权限;
XPush.start(this.getApplication());
成功启动信鸽服务后,通常不需要任何设置便可在前台下发通知。如果需要使用自定义通知样式,请参考进行设置。
前台操作:
登陆信鸽前台,选择“创建通知”,输入待发送的标题和内容后,点击测试预览或确认推送,下发通知。
正常情况下,设备端将会在通知栏中弹出对应的通知内容。
自定义设置键值对(key-value):
如果用户在前台配置自定义参数,可以在用户点击了通知后通过在被打开的Activity的onStart方法获取。
protected void onStart() {
super.onStart();
Intent intent = this.getIntent();
String custom = intent.getStringExtra(
XPushConstants.ACTION_PUSH_MESSAGE_CUSTOM_CONTENT);
if (custom != null) {
JSONObject json = new JSONObject(custom);
// key为前台配置的key值
String key = json.getString(&key&);
// 诸如此类...
} catch (JSONException e) {
// 统计activity打开效果及时长
XPush.activityStarted(this);
开发者在前台下发消息,需要app在本地实现一个BroadcastReceiver类接收,成功接收后,再根据特有业务场景进行处理。
请确保在AndroidMenifest.xml已经注册过该receiver,即设置YOUR_PACKAGE.MessageReceiver。
public void onReceive(Context ctx, Intent intent) {
if (intent != null) {
String action = intent.getAction();
if (action == null) {
if (action.equalsIgnoreCase(
XPushConstants.ACTION_PUSH_MESSAGE_RECEIVE)) {
// 获取下发的消息
String msg = intent.getStringExtra(
XPushConstants.ACTION_PUSH_MESSAGE_CONTENT);
if (msg != null) {
Toast.makeText(ctx, msg, Toast.LENGTH_SHORT).show();
// 前台配置的自定义key-value对,可转成json格式
String extraData = intent .getStringExtra(
XPushConstants.ACTION_PUSH_MESSAGE_CUSTOM_CONTENT);
if (extraData != null) {
JSONObject json = new JSONObject(extraData);
// customKey1为前台配置的key值
String customValue1 = json.getString(&customKey1&);
// 诸如此类...
} catch (JSONException e) {
前台操作:
登陆信鸽前台,选择“创建消息命令”,输入描述和需要下发的内容后,点击测试预览或确认推送,下发消息,正常情况下,自定义的MessageReceiver将会收到前台下发的内容。
开发者下发推送通知,SDK会把这个消息通过系统默认的通知展示出来。对于大部分的开发者来说,使用SDK默认的通知即可,如果需要自定义的推送通知样式,可以通过BasicPushNotificationBuilder和CustomPushNotificationBuilder这2个类实现。
XPush.setNotificationBuilder(Context ctx, int notificationBulderId, PushNotificationBuilder notificationBuilder)
Context对象
notificationBulderId:
通知编号,取值范围(0,4096],由开发者维护,在前台下发通知时,可以指定编号。这样sdk在收到通知时,可以根据编号展示。如果本地找不到对应的编号,则使用默认通知样式
notificationBuilder:
notificationBulderId对应的自定义通知模式
BasicPushNotificationBuilder build = new BasicPushNotificationBuilder();
build.setIcon(R.drawable.ic_launcher)
.setDefaults(
Notification.DEFAULT_ALL |
Notification.DEFAULT_LIGHTS
| Notification.DEFAULT_VIBRATE)
.setFlags(Notification.FLAG_NO_CLEAR);
XPush.setNotificationBuilder(this, 1, build);
开发者可以针对不同的用户设置标签。
XPush.setTag(Context ctx, String tagName, String tagValue )
Context对象
待设置的标签名称,不能为null或空,如果出现中间有空格、制表符或换行等字符将会被过滤。
待设置的标签名称对应的值。如果出现中间有空格、制表符或换行等字符将会被过滤;如果为null或空,则修正为“-”。
XPush.setTag(this, &career&, &coder&);
开发者删除用户标签数据。
XPush.delTag(Context
ctx, String tagName)
Context对象
待设置的标签名称,不能为null或空如果出现中间有空格、制表符或换行等字符将会被过滤。
待设置的标签名称对应的值。如果出现中间有空格、制表符或换行等字符将会被过滤;如果为null或空,则修正为“-”。
XPush.delTag(this, &career&, &coder&);
开发者可以针对不同的设备设置别名。
XPush.setAliasName(Context ctx, String aliasName)
Context对象
aliasName:
待设置的别名,不能为null或空,如果出现中间有空格、制表符、换行或英文分号等字符将会被过滤。
XPush. setAliasName(this, &apple&);
开发者删除用户别名。
XPush.delAliasName(Context ctx, String aliasName)
Context对象
aliasName:
待删除的别名,不能为null或空如果出现中间有空格、制表符、换行或英文分号等字符将会被过滤。
XPush.delAliasName(this, &apple&);
信鸽SDK默认已统计收到的通知条数、msgid等情况^[2]^。
如果需要统计由信鸽推送引起的点击或打开app,需要开发者在所有的Activity的onStart和onStop方法分别调用以下方法。
XPush.activityStarted(Activity activity) // 统计Activity被打开的时间
XPush.activityStoped(Activity activity) // 统计Activity结束时间
activity:
Activity对象
protected void onStart() {
super.onStart();
// 统计activity打开的时间
XPush.activityStarted(this);
protected void onStop() {
super.onStop();
// 统计activity结束时间
XPush.activityStoped(this);
所有的配置相关接口在XPushConfig类中,为了使配置及时生效,开发者需要保证配置接口在XPush.start接口之前被调用。
(重要:请在发布时确保已关闭debug!)
void setDebugEnable(boolean debugEnable)
debugEnable:
默认为false。如果要开启debug日志,设为true
void setPushEnable(boolean pushEnable)
pushEnable:
默认为true。如果要禁止push服务,设为false
如果已在AndroidManifest.xml配置过,不需要再次调用;如果2者都存在,则以本接口为准。
void setAppKey(Context ctx, String appkey)
Context对象
信鸽的AppKey
如果已在AndroidManifest.xml配置过,不需要再次调用;如果2者都存在,则以本接口为准。
void setChannel(Context ctx, String channel)
Context对象
设备Token(DeviceToken)是设备连接服务器的唯一标识,设备首次连接服务器时,由服务器生成并下发到SDK,最后由SDK持久化存储在设备中。
(注意:对于首次使用信鸽SDK的设备首次启动时,需要在XPush.start()调用后才生效,之后不受此限制)
String getDeviceToken(Context ctx)
Context对象
当前设备对应的DeviceToken
定制Notification里面的基础行为,如defaults、icon、flags。
PushNotificationBuilder setDefaults(int defaults)
defaults:
defaults值,具体请参考Android Notification类的相关说明。
Notification.DEFAULT_ALL
Notification.DEFAULT_LIGHTS
Notification.DEFAULT_VIBRATE
Notification.DEFAULT_SOUND
PushNotificationBuilder对象本身
PushNotificationBuilder setFlags(int flags)
flags值,具体请参考Android Notification类的相关说明。
* Notification.FLAG_SHOW_LIGHTS
* Notification.FLAG_ONGOING_EVENT
* Notification.FLAG_INSISTENT
* Notification.FLAG_ONLY_ALERT_ONCE
* Notification.FLAG_AUTO_CANCEL
* Notification.FLAG_NO_CLEAR
* Notification.FLAG_FOREGROUND_SERVICE
* Notification.FLAG_HIGH_PRIORITY
PushNotificationBuilder对象本身
PushNotificationBuilder setSound(Uri sound)
收到通知后播放的声音。
PushNotificationBuilder对象本身
PushNotificationBuilder setVibrate(long[ ] vibrate)
PushNotificationBuilder对象本身
Notification buildNotification(Context ctx)
Context对象
Notification对象
不仅可以定制基础行为,还可以定制Notification Layout,指定自定义的通知样式,具体的样式属性请参考Android RemoteViews类的相关说明。
CustomPushNotificationBuilder setLayoutId(int layoutId)
layoutId:
The id of the layout resource。
CustomPushNotificationBuilder对象本身
CustomPushNotificationBuilder setLayoutIconId(int layoutIconId)
layoutIconId:
layoutIconId。
CustomPushNotificationBuilder对象本身
CustomPushNotificationBuilder setLayoutTitleId(int layoutTitleId)
layoutTitleId:
layoutTitleId。
CustomPushNotificationBuilder对象本身
CustomPushNotificationBuilder setLayoutTextId(int layoutTextId)
layoutTextId:
layoutTextId。
CustomPushNotificationBuilder对象本身
CustomPushNotificationBuilder setLayoutIconDrawableId(int layoutIconDrawableId)
layoutIconDrawableId:
layoutIconDrawableId。
CustomPushNotificationBuilder对象本身
Notification buildNotification(Context ctx)
Context对象
Notification对象
[1] sdk库文件名称“xingesdk-x.x.x.jar”中的“x.x.x”表示版本号,具体名称以下载包为准。
[2] 信鸽使用腾讯移动分析(MTA)作为统计分析工具。欢迎光临本博!
消息推送技术
&&&&&&& iPhone 对于应用程序在后台运行有诸多限制(除非你越狱)。因此,当用户切换到其他程序后,原先的程序无法保持运行状态。对于那些需要保持持续连接状态的应用程序(比如社区网络应用),将不能收到实时的信息。
&&&&&&& 为解决这一限制,苹果推出了APNs(苹果推送通知服务)。APNs 允许设备与苹果的推送通知服务器保持常连接状态。当你想发送一个推送通知给某个用户的iPhone上的应用程序时,你可以使用 APNs 发送一个推送消息给目标设备上已安装的某个应用程序。它通过长IP连接从第三方应用向苹果设备提供推送,通知中可能包括标记、声音、提醒/横幅等。
iOS消息推送的工作机制可以简单的用下图来概括:
&&&&&&& Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的服务器。
上图可以分为三个阶段:
l 应用程序把要发送的消息、目的iPhone的标识打包,发给APNS。
l APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发送到iPhone。
l iPhone把发来的消息传递给相应的应用程序,并且按照设定弹出Push通知。
从上图我们可以看到:
l 应用程序注册消息推送。
l iOS从APNS Server获取device token,应用程序接收device token。
l 应用程序将device token发送给PUSH服务端程序。
l 服务端程序向APNS服务发送消息。
l APNS服务将消息发送给iPhone应用程序。
&&&&&&& 无论是iPhone客户端和APNS,还是Provider和APNS,都需要通过证书进行连接。
&&&&&&& 依赖apns,好处是逻辑统一,当应用在前台得时候,也是可以捕捉到苹果的推送的,然后数据自己处理。&&&&&&& 由客户端直接向自己的服务器用http的方式拉取数据或者和自己服务器建立一个长连接实现实时推送,缺点是程序进入后台时,实效不能保证。
&&&&&&& Android不禁止后台Service,选择的也较多。目前主要的方式有:
方案1、使用GCM服务(Google Cloud Messaging)
简介:Google推出的云消息服务,即第二代的G2DM。优点:Google提供的服务、原生、简单,无需实现和部署服务端。缺点:Android版本限制(必须大于2.2版本),该服务在国内不够稳定、受限于Google。
方案2、使用XMPP协议(Openfire + Spark + Smack)
简介:基于XML协议的通讯协议,前身是Jabber,目前已由IETF国际标准化组织完成了标准化工作。优点:协议成熟、强大、可扩展性强、目前主要应用于许多聊天系统中,且已有开源的Java版的开发实例androidpn。缺点:协议较复杂、冗余(基于XML)、费流量、费电,部署硬件成本高。
方案3、使用MQTT协议(更多信息见:)
简介:轻量级的、基于代理的“发布/订阅”模式的消息传输协议。优点:协议简洁、小巧、可扩展性强、省流量、省电,目前已经应用到企业领域(参考:),且已有C++版的服务端组件rsmb。缺点:不够成熟、实现较复杂、服务端组件rsmb不开源,部署硬件成本较高。
方案4、使用HTTP轮循方式
简介:定时向HTTP服务端接口(Web Service API)获取最新消息。优点:实现简单、可控性强,部署硬件成本低。缺点:实时性差。;
方案5、使用百度,腾讯信鸽,极光,个推等国内第三方方案
1) 基于地理位置的推送,支持省、直辖市、市、区级别的行政区,是基于地理位置推送划分最细致的。
2) 可以使用百度账号系统。
3) 统计报表比较全乎:
a) 统计信息:推送数 到达数 删除数
b) 基础统计:累计终端 在线终端 新增终端 在线占比 新增占比
c) 终端统计报表:设备型号 系统版本 分辨率 运营商 联网方式 应用版本 渠道分布
1) 除了可以提供消息推送服务,还可以提供从客户端上传至云端的服务。
2) 可与自有业务系统深度整合。我理解是你可以通过你自己的服务端,设定你想在什么情况下,在什么时候,给谁发推送信息。
3、APP升级时,只需下载差量部分文件,提升用户体验与更新率。
这几个系统,只有极光支持windows phone。
腾讯信鸽:
信鸽在推送速度和抵达率上比较稳定,腾讯系列的不少手游产品用户都是亿级,部分产品的日推送量在千万级别,总体上还不错,当然任何产品都在迭代版本,更优化性能。
正文部分到此结束
文章总数:94 篇
评论总数:33 篇
标签数量:12 个
链接总数:0 个
建站日期:
运行天数:16522 天
最后更新:
Powered by主题 : 腾讯信鸽----------IOS推送给出的解决方案
级别: 新手上路
可可豆: 45 CB
威望: 45 点
在线时间: 0(时)
发自: Web Page
来源于&&分类
腾讯信鸽----------IOS推送给出的解决方案&&&
信鸽推送官网:iOS 推送常见问题1、信鸽只能保证将消息转交APNS,因此若APNS出错会产生一定得推送时间误差。2、APNS只为离线终端保存一条消息,所以离线终端上线后仅能收到离线期间最新的一条消息。3、受APNS和iOS的限制,效果统计功能可能会有一定得统计误差。4、如果出现以下错误:       请在自己的项目里这样设置:      5、iOS为什么没有抵达数据?      由于苹果系统的问题,信鸽无法统计到消息推送之后的抵达动作。但是,若用户对消息进行了点击,信鸽可以统计其点击动作并且上报。6、为什么无法上传iOS证书?7、为什么证书验证失败?      请仔细参考进行证书制作。8、开发证书和生产证书有什么区别?      开发证书用于开发推送服务时使用,设备获取到的deviceToken是苹果下发的开发环境的deviceToken。      生产证书用于正式的提送,苹果下发的是生产环境的deviceToken。AppStore审核通过后,可以给所有安装App的设备进行推送。9、信鸽能支持 ios7 特性字段吗, 这个content-available=1 是苹果官方静默推送字段,在信鸽API里面好用吗?      后台可以转发这个字段,需要终端实测效果。
级别: 论坛版主
UID: 316527
可可豆: 689 CB
威望: 552 点
在线时间: 333(时)
发自: Web Page
回 楼主(二胡) 的帖子
这个算不算广告呢
级别: 新手上路
可可豆: 16 CB
威望: 26 点
在线时间: 1(时)
发自: Web Page
已经在用了,比其他家都好用,服务还特别好。
本帖最近评分记录: 共1条评分记录
拖最讨厌了。
级别: 新手上路
可可豆: 1 CB
威望: 1 点
在线时间: 0(时)
发自: Web Page
腾讯信鸽最近推出的&&信鸽pro,预测潜在流失用户、潜在付费用户很威武。
级别: 新手上路
可可豆: 11 CB
威望: 11 点
在线时间: 1(时)
发自: Web Page
回 2楼(picnic) 的帖子
masterk体验过再来评分吧,至少我们用了感觉人力省了不少,推送的精准度比之前靠谱!!特别是流失的预测,有备无患吧多用多对比,项目效率上去了才是王道噻[ 此帖被ajulee在 14:58重新编辑 ]
级别: 骑士
UID: 83792
可可豆: 1513 CB
威望: 1314 点
在线时间: 402(时)
发自: Web Page
lz,为毛我的cer用pushmebaby可以推送成功,但是导出pem后上传确要密码啊?生成pem不是已经输入密码了么。百度云推送的pem都不要密码!
级别: 新手上路
可可豆: 42 CB
威望: 42 点
在线时间: 12(时)
发自: Web Page
回 5楼(fordmendeo) 的帖子
&&试试 CocosPush 看看怎么样!
关注本帖(如果有新回复会站内信通知您)
9*6-8 正确答案:46
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版信鸽推送代码 - 下载频道 - CSDN.NET
&&&&信鸽推送代码
&信鸽推送代码
包含客户端和服务端 代码
亿级并发,秒级触达
稳定的大规模接入集群,同时与数亿移动智能终端保持稳定的长连接,支持十亿级并发
秒级触达用户,每天可发送百亿级的通知/消息
最省电省流量方案
智能识别网络环境,根据不同环境定制通讯协议,以最低消耗维护长连接,做到极致省电省流量
通知及消息高度压缩,节省流量的同时加密保证安全性
丰富标签,精准定向
特定标签人群,团队测试用户,全量用户,单个用户等多种推送范围选择
及时稳定地将信息送达到最相关的用户,形成用户粘性,避免骚扰
开放API接口,灵活自定义推送
开放推送能力,提供多种语言API ,包括Java/PHP/Python/Node.js,业务自由集成
可视效果,实时监控
实时监控通知/消息的抵达用户量,点击转化量,点击转化率,推送效果一目了然
登录后,创建应用,获取应用的唯一识别码AccessKey和密钥SecretKey;
下载对应平台的SDK,并参考开发文档完成SDK集成;
通过API调用或Web业务端方便快速地完成推送测试和实际发送,并实时查看推送效果。
通知,定义为Android和iOS开发者指南中的Notifidoveion。服务器定向将信息实时送达手机,通过建立一条手机与服务器的连接链路,当有消息需要发送到手机时,通过此链路发送即可。通过推送一条用户可见的信息,引导用户进行有目的性的操作。通常用于产品信息知会、新闻推送和个性化消息等场景。
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
评价资源返积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
移动开发下载排行
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
信鸽推送代码
所需积分:1
剩余积分:
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
VIP服务公告:

我要回帖

更多关于 百度云推送服务端 的文章

 

随机推荐