服务端集成实现问题

jpush
标签: #<Tag:0x00007fb83b295e50>

(彩虹) #1

基本业务实现

我们在系统中有一些订单,订单中有用户的手机号码,在服务端有一个定时任务,在后台会把某些订单分配给某个用户,使用手机号码标记,定时任务扫描到这个状态是分配给这个用户,然后向APP端的这个用户推送一条提示,APP端是使用手机号码登录的。
问题:这个应该使用哪种方式呢?怎样找到推送的APP?怎样找到这条消息推送的是APP的哪个用户?


#2

极光提供的推送方式有:别名、标签、registrationID和广播

你可以在客户端给用户设置别名、标签、注册后调用API获取到registrationID,然后将别名标签和ID以及你的用户信息上传给你的服务器保存起来,这样既可对应联系

简单方法,可以用手机号作为别名或标签给设备设置。

另:极光的推送针对的是设备而不是你们的账号,只是由上将二者联系了起来。

具体:


(彩虹) #3

好的,十分感谢回复,基本明白了!!


(彩虹) #4

你好,这个registrationID是客户端传递给我的吗?可能文档太多,这个还没有怎么看明白。如果是客户端传递给我的,比如客户端登录之后,调取极光的接口,得到registrationID,然后把用别名(用户手机号码),标签,ID上传到Java服务端,Java服务端就可以知道我要向哪个用户推送消息了。


#5

是的,客户端获取后传给你


(彩虹) #6

噢噢。。好的。。那客户端就只用做一下获取registrationID,把相关信息传递给我,其它的推送我都写在Java服务端。那我的流程就基本理清楚了。十分感谢。


#7

嗯,我建议你们部分设置别名、标签的逻辑也放在客户端,服务端调用API有频率限制的

客户端设置后也把别名信息传给你存起来


(彩虹) #8

嗯嗯。。我现在在Java服务端设置了两个实体,一个是设备:让其通过接口上传:别名(手机号码)、标签、registrationID,我保存到服务端数据库,另一个是推送记录。

有个小问题:客户端每次登陆之后都要调用接口获取registrationID吗? 应该每台设备的registrationID都是一样的。

之前没有考虑到:别名、标签、registrationID也要使用你们的接口,向你们上传,这部分放在客户端来进行。他上传给我,我存在本地数据库,到时候和你们那边数据库中比对,就知道发送给哪台设备中的哪个用户了。’


#9

最好每次都获取一下,考虑到可能一个设备登录不同的账号,以及iOS9之后,卸载重装registrationID会改变


(彩虹) #10

嗯嗯。。好的。明白咯!!十分感谢耐心的回答!!


(彩虹) #11

你好,现在推送逻辑已基本实现。现在有个小问题,麻烦看到后给予回复一下,十分感谢。

推送逻辑已经基本实现。我们现在的想法像QQ一样,有个新消息出来,点击这个新消息,就直接进入到消息聊天界面。我们想点击这个消息,直接进入到订单详情。我看着这个推送的是个字符串,看着也可以使用map。如果要直接进入到订单详情,那推送的时候就要把订单详情的相关字段推送过来。字段应该是有点多,20几个,推送的时候,这些字段是处理为map吗,然后APP端点击这条消息的时候,直接进入到APP,并能够把相应的字段读出来。谢谢。


#12

你们自己的字段传在extras里面

你需要看你使用的SDK是否是支持或者用的map,最终发到极光这边来都是json


(彩虹) #13

噢噢。。好的。。谢谢,我试一下!!


(彩虹) #14

你好。有个小问题再问一下,之前我使用的是.setMessage(Message.newBuilder().setMsgContent(msg).addExtras(map).build())这个方法,返回结果是已经推送成功了,不过手机上没有收到。改为setNotification(Notification.alert(msg))这个就可以了。这两种消息推送到设备上,有区别吗?谢谢!!


#15