能否绕开iOS或android端通过RegistrationId给单个用户推送


#1
$client = new JPushClient($app_key, $master_secret);
$client->push()
        ->setPlatform('all')
        ->addRegistrationId($registrationId)
        ->setNotificationAlert('Hello, JPush')
        ->send();

向大神们求教~我现在做的项目是iOS/android将h5页面打包成app,现在想给app客户端(手机)的特定某个用户推送消息,在php端sdk里面看到了addRegistrationId()函数,根据文档,这个应该可以给特定设备标识的某个用户推送。
但现在的问题是,我能否能否绕开iOS或android端,以php代码直接获取到用户的RegistrationId?然后通过上述方法推送消息到指定RegistrationId的用户
还望指教~


#2

1、registrationID是设备标识,,推送是推送给设备的,registrationID只能在客户端集成注册成功后在 客户端获取到

2、

3、不明白你说的绕开iOS和Android客户端的意思,你不需要分辨你的ID是iOS的还是Android的,设定platform是all,分别对iOS和Android传好值,那么audience对应的registrationID是iOS的,那他就收到iOS的数据,反之亦然

4、用户的概念,是你们自己的,推送是对应设备的,将你们自己的用户概念和我们的设备概念联系起来,可以用别名或标签: iOS别名推送不知道怎么搞


#3

谢谢解答!您回复的就是我想要的。

我之前提问里面的"绕开"的意思是,能否在iOS/android端的开发者不写代码的情况下,单独由php完成获取registrationID和推送消息的操作。现在看来是不行,因为毕竟客户端和服务端不是一起的,客户端的监听操作由php代码来实现,这样的操作在我看来也是不合逻辑的

我明白您说的"推送是对应设备"的概念,我知道推送是对设备而言的,但我作为php,不通过iOS/android端,是没办法获取设备标识的。我又看了极光IM,那我能不能在Javascript代码里面,通过唯一的username直接给特定用户发送一个即时消息呢~虽然这不是推送,但是至少能实现给特定用户发消息的功能


#4

1、registrationID只能在客户端获取,你客户端获取后上传保存到服务器

2、你可以用上面的别名和标签功能,当然也是需要上传信息给你服务器保存
registrationID、别名、标签使用好都是可以给特定的用户发消息。

只是需要注意如果你们有什么「允许多个设备同时登陆一个账号」、「一个App上前后登录不同的账号,收到特定的消息」等需要的时候,就得配合好,登录时置空别名,上传ID等,这些上面链接里面已经说明,请细看。

3、你要完全客户端和服务端不做交互这不太可能,你自己的用户信息在用户注册填写后不是也得上传给你服务器吗?

4、除非你们本来就是要做类似即时通讯的功能,否则不建议用JMessage实现JPush的功能,你会把问题搞的更加复杂

5、客户端不存在不写代码,即便你不获取registrationID上传ID信息,你也得集成SDK,也得写获取信息的API。


#5

恩恩,感谢!

主要原因是这个项目非常的坑,现在是纯粹的iOS/android打包h5页面作为app。比如在iOS一端,所有的东西其实就是WebView。所以除了打包的操作,整个过程是没有iOS/android介入的,所谓客户端-服务端交互,其实都是我来弄,因为是h5页面,所以交互是通过前端Javascript交互到后台php(这些都是我弄)。

因为设备标识registrationID的问题,凭我自己确实没办法用JPush实现,所以选用JMessage实在是没有办法,因为现在的交互只能是app加载WebView的基础上,由我在h5页面里面通过js和php来操作


#6

这个说明你先看一下

如果用JMessage,你可能需要的是web sdk
https://docs.jiguang.cn/jmessage/client/im_sdk_js_v2/