先简单介绍下push的机制
客户端通过
(void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types
这个函数向APNs(Apple Push Service)注册push,types可标明接收的push的类型,声音,数字等。
(void)application:(UIApplication )application didRegisterForRemoteNotificationsWithDeviceToken:(NSData )deviceToken;
当app成功注册通知后,会调用这个函数,并把deviceToken返回给应用。
然后我们的程序就会把返回的这个deviceToken以及设备的udid及软件版本(淘宝 for iPhone还是淘宝 for iPad)及系统版本,用户名等发送到我们的服务器(下图中的provider)上,然后存储在数据库里。整个获取device token的过程可参见下图所示:
APNs可以根据与APNs建立连接的Provider所使用的证书判断是要哪个app请求发送的notification,继而把这个notification发送到的设备上。
下图为一个简单的从Provider到Device发送push的过程:
对于APS来说,token是设备的标识符。device token不同于UIDevice的uniqueIdentifier(即UDID),因为出于安全和隐私原因,当设备被擦除后,token必须变化。
所以也就是说,一般情况下,token是不变的,但是在设备被擦除后,token会变的。
今天无心说在我们的服务器上的数据库里,存在同一个UDID对应有多个token的情况,之前是没有考虑到设备擦除的情况,所以就怀疑是不是同一个 设备上同时装了taobao4iphone和taobao4ipad,而token是与app关联的,所以产生的这种情况,于是就找了杨匡的ipad来做 测试,结果发现taobao4iphone和taobao4ipad收到的token是相同的,所以token应该是与app无关的,而是针对设备的(文 档上也是如此描述的),是设备的标识,那除了设备被擦除的情况外,设备的device token 应该是相同的,可是杨匡说之前崇厚给他查出来的他的iPad的token和我log出来的device token是不同的,后来就想到了,push是有两套的,development和product,即调试和release,在这两种情况下,服务端使用 的push证书是不一样的,而程序使用的证书也不一样,那同一个设备在development和distribution情况下收到的device token是否一样呢,于是就做了实验,实际结果如下
实验设备:iPad 1
<img size-full="" wp-image-39"="" src=">
在接口测试中,有这样的使用场景,某一步 *** 作需要用到之前步骤获取到的值,token就是一个典型。关于网上获取token的教程大同小异,但是没有一篇能解决我的问题。因此本人从正则表达式、抓包工具等入手,终于解决了获取token的问题。现将需要注意的地方分享如下。
1首先需要确认需要用到的token是哪个接口返回的,如果是登录的步骤就使用到了token,那么肯定在登录前还有其他的接口访问,否则登录没有token必然失败,因此,先使用抓包工具或者F12功能查看登录之前的接口访问情况。本人的情况就是登录的时候就需要使用token,用fiddler抓包后发现,在login的接口访问之前,有一个registerDevice的接口访问,查看这个接口的返回,发现此时已经有给到token的信息。
2查看token是从哪个地方提交的。网上有好多文章都是token在请求头信息中,所以都是按照这种方式去处理的,但是本人的情况不是,使用抓包工具查看token信息,发现login的这个接口,在请求发送的时候,就把token当做参数发送了。
3因此要搞清楚你的token是从哪个地方提交的。如果是请求头中,那么就需要添加>
1先生成App ID,在去Provisioning里面生成新的Profile
2删除Xcode里面原来的push profile(如果没有就不用删除)再次双击新下载的profile(mobileprovision文件)
3在项目的target里面选择新的profile然后编译,3000错误就是因为profile和app ID不符合造成的,各位可以自己试试更新一下profile就好了
以上就是关于如何获取distribution certificate device token全部的内容,包括:如何获取distribution certificate device token、请问在apple store发布使用APNS的app的时候deviceToken怎样获得、Jmeter获取token并使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)