OneSignal 为每个应用程序安装创建多个用户记录

Posted

技术标签:

【中文标题】OneSignal 为每个应用程序安装创建多个用户记录【英文标题】:OneSignal creating multiple user records for each app installation 【发布时间】:2016-02-02 12:00:56 【问题描述】:

我从 parse.com 转到 oneSignal 以提供推送通知服务。 我将 SDK 集成到我的 android 应用程序中,它能够在安装应用程序时在 oneSignal 中创建用户记录。 但是当我卸载并重新安装我的android应用时,在oneSignal中创建了一个新的用户记录,导致重复的用户记录。

如何解决重复问题?即使用户重新安装我的应用程序,我也只想要一个用户记录。

在 parse.com 中,我使用在插入新记录之前检查解析云代码中的重复项。在 oneSignal 上是否有类似的东西?

【问题讨论】:

目前坐在这里遇到和你一样的问题,好奇你最后做了什么? @mattias 抱歉回复晚了。我继续使用 OneSignal。我在服务器端编写了代码来基于唯一标签“激活”或停用“记录,但不幸的是我还不能删除它们。 啊,好吧,做了类似的事情,谢谢。他们似乎不想添加从 api 中删除它们的选项,至少现在不是。 @mattias 你应该明确提出这个想法。 “Gdeglin”是 OneSignal 的 CEO(下面的答案),我也向他提出了同样的要求。也许你也可以请求它,因为这是推送框架中的基本要求。 【参考方案1】:

OneSignal 的 SDK 尽最大努力防止创建重复的用户记录。这主要是通过检查用户的广告标识符来完成的,基本上是一个唯一的 ID,在应用程序安装的不同时间之间保持不变。

但是,一些 Android 用户已选择不让应用查看其广告 ID。在这些情况下,OneSignal 不可能知道用户已经重新安装了应用程序,并且会创建重复的用户记录。

当 OneSignal 下次尝试向之前的用户记录发送通知时,Google 的 GCM 服务器会通知 OneSignal 的系统该用户拥有更新的推送令牌。此时,OneSignal 将禁用旧用户记录,以便以后不会向其发送通知。 OneSignal 的 SDK 还将确保不会在设备上显示两次相同的通知。

【讨论】:

感谢您的回复。但是使用 google 广告 ID 来确定用户的“唯一性”有点棘手……对吧?首先 - 一些用户选择退出,其次 - 用户经常更换他们的设备。我认为,解决此问题的最接近的可能性是允许 API 删除当前缺失的用户。或者您能提出一个更好的解决方案吗?【参考方案2】:

在创建新用户之前,你必须这样做 https://documentation.onesignal.com/docs/android-native-sdk 和服务器相同的可以在这里找到 https://documentation.onesignal.com/reference

【讨论】:

Android 应用程序类中 OneSignal 的初始化代码会在我的代码被初始化以进行检查之前创建用户记录。我可以稍后检查现有用户的重复项,但我无法使用 SDK 或 API 删除用户记录.. 或者我可以吗? 在您的应用程序中调用 init 之前运行此 api 调用 这是错误的,或者你没有得到我的问题。除非调用 init(),否则我无法对 oneSignal 服务器执行任何代码。 (API,密钥注册等发生)。此外,为了检查是否存在重复用户,我必须将用户登录到我的服务器,这绝对不会发生在 Android 的应用程序类中(init() 进入应用程序类)。

以上是关于OneSignal 为每个应用程序安装创建多个用户记录的主要内容,如果未能解决你的问题,请参考以下文章

删除用户后可以将用户添加到 OneSignal 吗?

ionic2 - 用户订阅 OneSignal 后如何获取玩家 ID

如何为应用用户注册/订阅 OneSignal 中的主题?

OneSignal.setSubscription(true) 在 Android 上不起作用?

多个模式与巨大的表[关闭]

找不到 OneSignal Swift 安装文件