如何针对性的将某条消息推送给某个用户
注意先阅读 极光推送别名设置的限制将于 2020 年 2 月 10 日进行调整(重要)
前提条件:客户端已安装了一个集成了极光 SDK 的 App ,且成功注册取到了 registrationID 值
根据集成指南:Android、iOS,将极光的 SDK 集成到自己的项目中去,在配置正确的情况下,初始化后可以取到 registrationID ,能取到该 ID 是初始化成功的标志!
如果你是服务端开发,现在需要先测试一下推送功能,可以下载极光的 demo 进行测试
在官网控制台 - 应用详情 - 推送设置 - Android - 使用浏览器扫码下载一个 Android 的 demo 安装到手机上。
tag、alias、registrationID、segment 都可以用于实现本需求,一般在前三个字段中任选一个去实现。
极光推送针对的是设备,tag、alias 等也是与设备进行的绑定,不管是使用什么样的推送目标,在极光服务器最终都是查询到满足条件的 registrationID 来使得推送送达到设备上。
思路参考:
根据一般的 App 逻辑,开发者会有自己的用户信息,在用户注册登陆后将用户信息传到自己服务器保存。
极光注册得到的 registrationID 是设备标识,不是开发者自己创建的用户,所以需要将「开发者的用户体系」和「极光设备」关联起来,如何做?
在上传用户信息给自己的服务器时,顺带将极光初始化得到的 registrationID 也对应上传并保存,可直接用该 ID 信息进行推送。该 ID 信息很重要,即便你不使用它进行推送,我的建议是也上传到服务器保存。
使用别名和标签对用户进行分类、做个性化的标识。
比较简单的做法是:用我们的用户名作为别名值调用极光的客户端 api :Android旧接口、Android新接口、iOS 设置为该 App 的别名;对一些多用户集合性质的分类,就设置为标签,譬如某些用户都喜欢了「周杰伦」,将「周杰伦」三个字作为标签给这些用户设置,当你对「周杰伦」这个标签推送时,他们都会收到。
设置别名标签成功后,也同样的与用户信息一起上传到开发者服务器上保存起来,当要选择推送的时候,在自己的数据库里面去查询即可得到。
如果你们在思考「标签、别名应该是服务端还是客户端设置」,阅读本帖
需求:用户退出登录后不要收到针对用户的个性化通知,一般思路是项目的用户退出登录—删除别名—点击登录—重设别名。
若你们不允许多设备登录,需要判断用户是否更换设备:将用户某唯一信息与获取到的 registrationID 一起上传,registrationID 与之前相比改变了,则判断为更换了设备。
- 如果使用 registrationID 推送,则只需要设置推送到当前登录设备的 registrationID 即可,如果是使用别名、标签,请继续阅读:
如果用户未在 A 手机主动点击退出登陆 ,直接在 B 手机登录:
- 希望 A 手机不再收到消息,那么应该在自己的后台判断出 A 用户“ 换了设备登录” ,让 A 手机自动做登出操作,Android 旧版本 SDK 是在客户端置空别名,Android 新版本 SDK 调 deleteAlias,iOS API 文档;
如果用户直接杀死 A 手机的 App,在 B 手机登录,登出信息无法及时送达到 A 手机上。
- 可以在服务端调用极光的 API 去置空 A 手机设置的别名,此处就需要传 A 手机的 registrationID。
需要注意:别名删除后 至 重设别名 期间,推送的消息, 在重设别名后,设备不会收到。
特别说明: 如果 A 别名只有一个设备设置了,当 A 删除了别名,再给这个别名发消息就会报 1011 ,这是正常现象,请自行处理:捕获错误保存;删除别名后不要发消息等。若需要这期间的消息也被收到,需要自己服务器对此进行判断、保存、并在客户端重设别名后,重新向极光发起推送请求。
若需要用户的历史推送消息可被查询,需要自己服务器那边去保存。
注意:对别名标签的操作并不影响广播推送的消息和对 registrationID 推送的消息的接收,只是收不到对别名标签推送的消息,如何完全关闭推送服务:
Android 端调用 stoppush :
- 一种本地的状态操作,相当于手动终止 push 服务的效果,这个会导致同时关掉对所有类型消息的接收。
- 极光推送所有的其他 API 调用都无效。
- 必须调用 resumepush 才能恢复推送服务。
- 恢复后,如果推送的消息还在
time_to_live
内,客户端会收到这条消息。
iOS 提示用户在手机[设置]-[通知]-[XX App]选择打开或关闭通知;
iOS 8 以上可用此方法跳转到通知设置页让用户设置:[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]
iOS 也可以调用反注册代码进行关闭:
[[UIApplication sharedApplication] unregisterForRemoteNotifications];
- iOS 9 设备使用代码反注册 APNs ,再调用代码注册 APNs ,需要杀死应用后,再重新开启应用才会有 APNs 提示(这里可能与系统本身 bug 有关)。
可能需要了解的内容:消息的生命周期,离线消息
如果对你有帮助,点个赞 呗ლ(╹◡╹ლ)
点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ
0条评论