一个设备收到两个别名的推送通知

别名
标签: #<Tag:0x00007fb8322a5228>

(药儿) #1

前段时间,我的APP(iOS生产环境)能收到针对两个不同别名的通知,我在控制台上查看了API通知记录,记录上的通知发送的别名A,但是我的手机注册的别名是B,并且能正确接收B别名的通知,为什么还能接收到A别名的通知啊


#2

是IOS9吗?
可以看看这两个帖子里面的解答:



(药儿) #3

是iOS9系统,这两个帖子我也看过了。我的手机确实注册过两个别名,但是前一个别名是大概一个月以前注册的,而且中途还卸载重装过好几次,照理说前一个别名对应的token应该早就失效了。


(Floriss) #4

你试试用 regid 进行推送,看看是不是还能收到重复的通知。
因为 iOS9 设备上卸载安装后会得到新的token,如果你在某个iOS9设备上反复卸载安装,这个设备得到过多个不同的token,而这些token在apple那边一直有效,那你广播推送一个记录,你的这个设备会收到多条。如果你通过rid推送应该是只能收到一条。


(药儿) #5

发现这个现象并且看过那两个帖子之后,我也做了卸载重装的试验。我注册了一个别名A,卸载重装后再注册另外一个别名B,这时候根据别名A发送的通知,推送目标没有减少,而且,控制台上显示的所有设备都推送成功,但是这时我的手机却没有收到别名A的通知。


(药儿) #6

出现一个设备收到两个别名的通知的情况,是不是因为前一次注册别名A的时候对应的token,跟卸载重装后,注册别名B的token相同了,或者说有没有这种token重复的可能?


(药儿) #7

我看了一下regid,这个id只能对应一个设备,跟token的作用差不多,但是我们的通知逻辑是:多个设备可以注册一个alias,这样,给一个alias发送通知,所有注册了这个alias的设备都能收到通知,如果用regid发送通知的话,我们的服务器在发送的每条通知都要带上很长的regid参数,如果只有一两个设备还好,如果有几十上百个设备的话,HTTP参数总长都有可能写不下这么多regid啊。


(糊涂) #8

我也遇到这个问题了,使用regid推送的,只要推送,就会收到两条信息!


#9

让你用rid推送一下看看是不是只有一条,是测试一下是不是token的原因


(药儿) #11

我昨天晚上又收到了两个别名的通知,我在后台查了一下MessageID,分别是1186891206、3816209837,这两条通知对应的alias分别是"20007"、“20043”,后面那条只有一个推送目标,前面那条iOS平台有4个推送目标,一个点击的,那个点击的应该是我的手机,能帮我查查看这两条消息吗?


#12

你不能把你的手机设备的rid发给我么- -
我查了一下,后一条消息的目标并不在前一条消息的目标里面。
你如果根据你的手机的rid去推送一条消息,你的手机只收到一条通知,那么就是我之前所说的那个token造成的问题。目前看来可以确定是token未失效引起的,因为我们的服务器并没有向你这个设备发送消息,但是apple给你的设备发送了


(药儿) #13

如果我改变开发生产环境的话,rid是不是会不一样啊,因为我的APP是已经上线的,在生产环境下才出现这种情况,而之前的版本里没有用到rid。


(药儿) #14

极光的后台能不能把alias和rid绑定在一起,这样的话,根据alias发送的通知就不会因为token未失效导致消息混乱了。


(药儿) #15

我的手机的regid是13165ffa4e09aa1122c,我的手机注册的别名是"20043",我之前注册的regid,APP其他用户的regid我现在没办法获取到。


(Floriss) #16

如果你要将alias 与 rid 绑在一起可以看看这个。


里面有提到 如何设置alias。


(药儿) #17

我的意思不是这个,我是想,既然激光的服务器根据alias绑定token,那能不能根据alias绑定regid,这样的话,激光的用户还是可以根据别名发送通知,而且regid可以避免token未失效导致的消息混乱情况,这不是你好我好大家好的局面吗