个推那个不同某设备在不同使用年限下同个账号的cid一样么

之前写推送功能都在使用百度云推送的系统,然后,突然发现百度云推送在教育网情况下的服务不是很稳定,因此决定采用个推开放平台
个推的官网,在这上面注册账号很简单,注册之后,登记新应用,然后有两种方式,一种可以下载SDK自己接入,
还有一种可以选择下载官方网站的示例Demo进行自己的修改,个推的SDK配置其实还是很简单的,官网的文档讲的也很详细下载的SDK包里面有比较详细的接口和文档
但是,在这里我说一下我在使用之中遇到的几个问题,
首先 &注册推送服务的代码是
& &&1 MessageManager.getInstance().initialize(this.getApplicationContext());&
在这里,成功注册服务之后,会收到一个clientid 这个clientid对应的是设备,在同一个设备上同一个应用不论启动多少次都会拿到同一个值
必须要等到拿到clientid之后才会开始推送服务,平均注册成功的时间依据你的当前的网络状况来确定,一般情况下应该在10-15秒
另外,在这里,使用服务器推送消息智能推送透传消息,在官网的首页看到的通知消息是不能使用服务器推送的,透传消息需要注册一个BroadcastReceiver
在文档中和官方的Demo中都有说明就不详细介绍了这个东西
在这个里面,这个是取得透传数据的代码部分,同时因为要通知主线程更新UI线程,所以我使用了BroadcastReceiver来确保能使消息更新主线程
case Consts.GET_MSG_DATA:
// 获取透传数据
// String appid = bundle.getString("appid");
byte[] payload = bundle.getByteArray("payload");
if (payload != null) {
String data = new String(payload);
System.out.println("the item is " + data);
Log.d("GexinSdkDemo", "Got Payload:" + data);
Intent intent1 = new Intent();
intent1.setAction("com.message");
context.sendBroadcast(intent1);
同时clientid也是在这里面拿到的
case Consts.GET_CLIENTID:
// 获取ClientID(CID)
// 第三方应用需要将CID上传到第三方服务器,并且将当前用户帐号和CID进行关联,以便日后通过用户帐号查找CID进行消息推送
String cid = bundle.getString("clientid");
System.out.println("the client id is" + cid);
同时,在个推中还有许多功能其他的功能可以拓展,我正在研究中,以后可能还会有其他的更新
阅读(...) 评论()个推推送Android问题检测
1、获取不到CID问题:1.&&&&& 查看配置文件是否有问题,appkey、appsecret、appid是否有空格存在。2.&&&&& 相关权限是否全部添加。3.&&&&& manifest.xml相关配置是否有添加。4.&&&&& SDK版本是否过旧。5.&&&&& 很大部分原因是因网络不稳定导致的。6.&&&&& 查看一下manifest.xml配置文件里用户有没有设置自己的Receiver。Recevier没有设置,是接收不到广播消息的,就无法接收到广播里传过来的CID。2、病毒查杀问题:1.&&&&& 先安装一下杀毒软件进行检测。2.&&&&& 如果是使用版本过低的SDK导致报病毒,则需要下载修改后的SDK。3.&&&&& 看一下是否为“需导入的资料”里的bin/文件夹报的病毒,如果是则删除里面的全部文件。4.&&&&& 如果是“真机测试包”报的病毒,则把此包删除掉,用代码重新编译生成一个就可以了。5.&&&&& 目前所有病毒问题基本全部解决,如有问题,请下载个推官网最新的压缩包。3、网络延迟问题:1.&&&&& 先测试一下,在工具箱里进行推送,看看是否会延迟。2.&&&&& 判断网络原因,是不是因为无线或信号不好导致的客户端假在线。3.&&&&& 查日志,看一下客户端的回执有没有上来。4.&&&&& 查看此CID的相关日志,个推工具箱里根据CID查到CELL,然后根据CELL去查消息是否进入了离线消息(有可能是断网一会又重连上后才收到消息)。4、如何获取到手机上APP的CID1.&&&&& 手机连接Eclipse,然后点DDMS,在LogCat里查看是否有日志输出;如果没有,在Devices里查看手机是否连接成功,如果没有成功,最好用应用宝或91助手、360手机助手给手机安装一下驱动。2. 连接成功后,先把应用停止掉再重启一下应用,把LogCat日志清除一下;在LogCat里查找Clientid字段,如果应用成功获取到CID,就会如下图展示,如果获取不到则查询不到CID。5、在调用个推接口的时候,会返回状态码,注:返回客户端状态(status),有如下两种状态:在线返回:successed_online离线返回:successed_offline还有一种是 successed_ignore ,请问是什么意思?1.&&&&& 客户端三个月未登陆了,Clientid已经失效了。用户再次登录的话,会产生新的Clientid。2.&&&&& 用户精细分类:就类似于用户画像,通过大数据计算给用户附上特定属性。3.&&&&& 进程看护:就是在同个手机的多个个推进程会相互看护,这样可以最大化的保证非活跃应用客户端的被激活率。4.&&&&& 第2项的功能会保持客户端的激活,只要用户不卸载掉应用。6、为什么CID和APPID绑定错误,导致消息接收不到?1.&&&&& 是因为第一次配置的APPID和应用的APPID不一致,但这个时候已经获取到了CID,但是这个CID和APPID的绑定是错误的,导致消息接收不到。之后再修改APPID等信息,CID已经在libs下的包名下的数据存在了,如果已经存在CID则不会再重新获取。解决办法:双清:即把sdCard下libs文件夹删除掉,再把应用卸载了重新安装,之后就可以获取到新的CID,这个CID和APPID的绑定是正确的。7、Tag何时才可以设置?1.&&&&& 拿到clientid之后,再设置tag。你先看下客户端接入文档,获取透传消息这块中有包含 GET_CLIENTID的action,当收到这个clientid广播之后你才可以settag()。至于放在哪里自己定。8、stopService( )方法无效的原因?1.&&&&& 先查看一下是不是调用了System.exit(0),因为新版的SDK目前会因调用这个导致所有进程杀死,stopService()方法执行的过程中进程被杀死,所以会导致这个方法无效。9、服务端调用接口给应用推送消息,为什么在个推平台里没有这条推送的记录呢?调接口发送,不会在这个发送记录中,等到第二天会出现在推送报表中的任务发送记录中。10、android客户端为什么一定要加android.permission.WAKE_LOCK这个权限?为了能使SDK进程在后台正常运行。11、CID在哪些情况下会变或失效Android:1.&&&&& 用户超过三个月未登录,之后再登录会重新生成一个CID2.&&&&& 卸载应用,清除Sdcard下libs文件夹,重新安装3.&&&&& 应用的包名修改IOS:BundleID改变失效的情况:一个月未登录后,不再对此CID进行推送消息;三个月未登录,CID会被删除。12、魅族手机强制停止或杀死进程后,消息能接收到,但是点击消息后无反应这是因为魅族手机有自启动管理功能,自启动被禁止了,打开后就可以正常点击有反应了。13、个推点击通知栏消息可以跳转到指定的应用的界面中吗?可以,需要客户端做一下处理。可以用通知栏消息加透传,把要跳转的页面的类名透传到客户端,客户端接收到透传消息后,获取到页面的类名,然后去打开对应的界面14、客户端SDK一直报10008的代号是什么意思?获取到10008是因为个推SDK的进程重启,SDK停止后再初始,就会广播出这个10008,之后才会获取到clientid。如果获取到10008而后续没有获取到clientid,很有可能是当时网络的原因导致clientid一直登录不成功导致的,所以会一直离线这种情况并没有问题的,后续对你也不会有太大的影响,所以可以放心使用。
最新教程周点击榜
微信扫一扫关于个推上传cid的一些有关问题 - J2SE当前位置:& &&&关于个推上传cid的一些有关问题关于个推上传cid的一些有关问题&&网友分享于:&&浏览:0次关于个推上传cid的一些问题关于上传clientid到个推服务,给的方法是IBatch,代码如下:IGtPush&push&=&new&IGtPush(host,&appkey,&master);
TransmissionTemplate&template&=getTemplate(appId,appkey,"问题就在这!!!!");
SingleMessage&singleMessage&=&new&SingleMessage();
singleMessage.setData(template);
singleMessage.setOffline(false);//设置消息离线储存
singleMessage.setPushNetWorkType(0);//0不限制推送方式,1wifi推送
Target&target&=&new&Target();
target.setAppId(appId);
target.setClientId(cid);
IBatch&batch&=&push.getBatch();
batch.add(singleMessage,&target);
但是这样也会把消息推过去,我想实现的是,上传cid后,还需要判断这个cid是否在线,只给在线的推送,请问怎么实现呀?------解决思路----------------------你的在线、离线的标准是什么?
使用透传消息的话,可以在app端判断是否离线.
个推的获取用户状态接口:getClientIdStatus
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 1234567891011 Copyright & &&版权所有}

我要回帖

更多关于 不同战网账号角色转移 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信