如题,我添加了个 pushID 字段,然后我想根据业务逻辑对设备分组,通过 Rest API 将某些 pushID 的设备订阅指定 Channel,然后我可以按 Channel 推送,从而实现分组推送。

请问这样是否可行?如果不可行而我又必须实现该功能的话,你们有什么可行的建议,谢谢!

你好,其实都不需要 pushID 字段。你在进行业务逻辑分组的时候,把当前设备的直接订阅到一个 channel 就可以了。

我是希望通过后端请求 Rest API 订阅,而不是客户端去订阅,后端订阅的话以后逻辑有变动,后端可以随时修改

订阅和退订只能通过 Installation 对象的 objectId 吗?不能用自定义字段吗?

可以的。channel 里的字段,你可以按自己的需求来,任意字符串都行。

核心是你要维护好,这些字符串和用户之间的业务对应关系。

这里的你可能没有理解。你传任何的字符串都可以作为 Channel。文档里只是把 objectId 作为假设的例子,来进行讲解。

你可能没有理解我的问题,我是要由后端根据业务逻辑帮用户订阅某些 channel,业务逻辑可能会改变,所有一定得有后端通过 Rest API 来动态订阅 channel,但是目前我只看到通过 objectId 来请求订阅的 API,没有看到通过自定义字段来查询设备,然后帮这些设备订阅某些 channel 的 API

你的表述歧义很大。我们确定一下,你是要把 pushID 作为 Channel 的值,还是说把某个带了 pushID 的设备订阅到某些 channel 上?

前者的话,直接把 pushID 传进去;
后者的话,你需要先查询 _Installation 表的 pushId 字段,得到目标 pushID 的设备,然后订阅你要订阅的 channel 就好了。参考: https://leancloud.cn/docs/rest_api.html#查询约束5

后者,我试了下,查询 _Installation 返回

{
  "code": 403,
  "error": "Forbidden to find by class permissions."
}

哈 非常感谢