iOS别名推送不知道怎么搞

别名
ios
标签: #<Tag:0x00007fb83bd24998> #<Tag:0x00007fb83bd247e0>

(MK) #1

这是我写的代码,安卓那边的同事说用的是极光默认的字段来判断这个账号是不是已经登录了,但是我们iOS我不知道该怎么搞了,求官方帮助下,谢谢着急啊 ,我们的需求就是,同一个账号不能同同时在两个设备上登录,一旦登录就要给前一个设备推送, 此账号再另一设备登录。 求官方帮助下谢谢了,着急


极光推送切换账号后RegistrationId怎么区分账号推送
#2

与Android的思路是一致的,只是注意设置别名的API与相关参数有所不同


重新安装APP未登录收到推送
退出登录不再接受推送时
iOS突然接收不到推送,偶尔重新登录后能接收到推送,请问是什么原因,用的SDK是2.2.0版本
极光推送,同一台安卓机,切换账号,离线再登录收不到推送
ios 连接不成功,用的apicloud提供的设置方法,别名设置不上
怎样算一个用户的?
极光推送退出个人账户后
请问是否可以将我的应用从北京机房转到南方机房?
关于同一个账号多个设备登录,推送的问题
jpush推送中的标签(tags)和别名(alias)是怎么设置的?是在后端设置的还是APP设置的?
jpush推送中的标签(tags)和别名(alias)是怎么设置的?是在后端设置的还是APP设置的?
能否绕开iOS或android端通过RegistrationId给单个用户推送
同一台登录设备,不同登录帐号,恢复推送出现问题
ios 有断开极光推送的api么
多个账号切换登录
对于离线推送,如何根据别名判断是否在线,就是文档中的这句话,该如何实现?求教
(MK) #3

麻烦你能介绍清楚点嘛,我第一次做别名推送,有点不是很明白,安卓同事说他们用的是JPushInterface.EXTRA_ALERT这个,我不是很懂,求帮助。


#4

我表示也不是很懂你们Android是怎么做的,要只说推送,iOS和Android就是基本参数除了稍微有些不同外,都是一一对应的。

你问了三个问题:
1、别名推送怎么做
不就是你客户端设置别名,将设置好的别名另外传一份给你的服务器存起来,下次要推送的时候,找出来是哪个别名值,再推送不就OK?

2、然后你说:[quote=“MK123, post:1, topic:13427”]
用的是极光默认的字段来判断这个账号是不是已经登录
[/quote]

你说的账号是否登录,账号是你们自己的账号,那么你们自己不是有注册登录的逻辑?登录成功了你们自己没有做检测吗?

若说极光这边检测,只能检测说这个设备现在是不是登录了极光的服务器,是否集成成功
iOS就是监听 extern NSString * const kJPFNetworkDidLoginNotification; // 登录成功

3、而你又说:

我根据第三点的需求,已经给了你二楼的答案。


(MK) #5

不好意思,可能我没有表达清楚,我们的需求就是同一账号不能再两个设备同时登录,就这个需求,我用了我们极光的别名推送,就是上面我截图的代码,但是现在这个需求我一直都没有实现,不知道该怎么才好了


#6


之前这里我已经回复过你了,这需要你们客户端与服务端配合完成

你仔细看二楼的说明与附的链接


(MK) #7

有没有实例,我该怎么配合呢,求指导下谢谢了


#8

额,实例没有,你们Android端不是完成了吗?他们完成了的话,iOS这边没有任何差别呀,除了客户端设置别名和获取registrationID的API不一样

这个配合是你们和你们自己的服务端配合的,以上已经把我的意见说的很清楚了,而如果Android端那边找到更好的方法,你们沟通一下做一样的操作不是更好更有效率吗?


(MK) #9

我们安卓那边调通了,你的意思是说 除了客户端设置别名和获取registrationID的API不一样 其他都是一样的? 我给你截图的那段代码就是 获取registrationID的,你看下对不对。


#10

如果是按照我的说法,那就是一样的,[quote=“MK123, post:9, topic:13427”]
我们安卓那边调通了
[/quote]

可以让你们Android的仔细说一下他们怎么做的吗?

获取registrationID的方法
设置别名的方法

将registrationID和别名另外上传保存到你们自己的服务器这块是你们自己做的,与你们服务器那边定好接口。


(MK) #11

你好能加微信吗或者QQ?


(MK) #12

我的代码里面 我只用了这个方法

我看文档,这个方法是设置别名的方法;

这个是我自己写的代码

,我看楼上你给我的提示,我好像 还少个 获取registrationIDde 方法是吗?

是你们文档里面的这个方法吗

? ,但是我还是有疑问啊,我写的那个方法我已经储存过registrationID了啊?还是有点糊涂?


#13

你哪里有方法去存储registrationID了?

我给的获取registrationID的方法,是让你客户端获取到这个值,然后你们在把这个值给自己的服务器上传一下,这个需要你们服务器那边给个上传的接口。


#15

这里能看到的逻辑就是
如果客户端收到了一条消息是:您的账号已在其他设备上登录,那么就去做什么操作(大约是登出操作,并且在登出操作那里调用API置空了别名)

这是其中的一步。

要讲整个的流程,其实真的,我二楼说的很清楚了,我再一步步跟你解释吧,话说你们Android的开发就不能完成的跟你讲一遍他们实现的逻辑?

1、登录时,设置别名,获取registrationID,上传这些信息给服务器
2、登出时,置空别名(如果你们每次设置的别名都不一样,也没有必要置空,如果一样,为了防止以别名推送时,多个设备收到,那么是有必要置空的)

过程:

  • 用户在A登录,登录的时候给他设置别名,同时获取registrationID,将别名、registrationID与用户账号名(你们自己对用户设置的key值)上传给你们的服务器。

  • 之后在B登录,同样的操作,然后服务器这边检测到 同一个用户账号,registrationID的值变了,说明他换了设备了。

  • 那么此时,你们服务器就给之前的那个registrationID发一条信息:您的账号已在其他设备上登录,A设备收到消息后,取到了对应的数据,就触发了自动登出操作,然后就置空掉别名。

3、对服务器推送的这条消息:Android的消息是不点击通知栏可直接获取到的,而iOS你必须推送Background remote Notification这样的消息才可

最好的办法是:服务器同时推送一条自定义消息(应用内消息),这条消息走极光通道,设置了离线时间后可以保存很久,不易丢失,当用户一点开app,网络OK,就能收到这条消息,还是默认不展示的,你们不实现展示的话,就取到数据去触发自动登出操作即可。

这是我个人的逻辑,因为要与服务端配合,所以你可以问Android端是不是这样的,如果是,服务端就不用额外增加不一样的判断方式。