OneSignal 发送给目标用户

OneSignal sending to targeted users

我打算向目标用户发送推送通知。我知道这可以通过玩家 ID 定位来实现。但是采用这种方法需要我的数据库引入对 OneSignal 的依赖,这是我试图避免的事情。

我在想是否可以通过用户名定位玩家。我的意思是当应用程序初始化时它会更新 OneSignal 说 'my username is user1' 并且当服务器发出通知时它可以定位 'user1'(同样,不使用播放器 ID 方法)。

我能想到的最接近的方法是标记用户可以使用用户名注册自己作为标签,服务器可以通过使用标签来定位用户。但是从文档看来,使用这种方法我们一次只能定位 200 个用户,这对我来说也不可行 - 我可能会发送给数千个用户。

有什么建议吗?

OneSignal 是 Android 上 Firebase Cloud Messaging 或 FCM(以前称为 Google Cloud Messaging 或 GCM)的包装器。如果您不想依赖 OneSignal 内部设备 ID(或玩家 ID),您仍然可以直接使用 FCM/GCM 注册 ID(也称为推送令牌)来定位用户与通知。但在那种情况下,您仍然需要在您的服务器上存储新的 ID(而不是使用您自己的),更重要的是,您必须自己处理 FCM/GCM 令牌的复杂性(管理错误、规范等) ..

更好的解决方案是使用像Batch.com (disclosure: I'm a co-founder). We allow developers to provide their own User ID (it's called a Custom User ID, you can set it from the app code) and then use it with our Transactional API这样的第三方向一个或多个用户发送推送通知(收件人可以是推送令牌、批量安装 ID 或您自己的 User/Custom ID).

正如您所建议的,标签是在不存储 OneSignal ID 的情况下实现此目的的最佳方式。

虽然一次限制为 200 个,但您可以进行多次 API 调用以向更多的总用户投放。 OneSignal 对此方法的平均 API 响应时间低于 50 毫秒,因此如果您按顺序进行 API 调用,此方法每秒可达到 4,000 个用户。