Android OneSignal如何生成唯一的持久用户ID?

Android OneSignal如何生成唯一的持久用户ID?,android,uuid,onesignal,Android,Uuid,Onesignal,我正在使用向使用我的应用程序的用户发送推送通知。安装并启动应用程序后,将生成新的用户(玩家)ID并发送到OneSignal服务器,然后您可以在web仪表板中使用应用程序查询用户 public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); OneSignal.startInit(this).init(); } }

我正在使用向使用我的应用程序的用户发送推送通知。安装并启动应用程序后,将生成新的用户(玩家)ID并发送到OneSignal服务器,然后您可以在web仪表板中使用应用程序查询用户

public class MyApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        OneSignal.startInit(this).init();
    }

}
当我清除数据并重新运行应用程序时,用户ID仍然相同。我的意思是,只有当我卸载应用程序并重新安装它时,才会重新创建用户ID。怎么做的?我的意思是,OneSignal存储第一次创建的用户ID,以避免每次重新创建


如果您将某些内容存储在共享首选项或数据库中,则一旦清除应用程序数据,它们也将被清除。因此,使用共享首选项或数据库将无法工作。我确信这是一件愚蠢的事情,但我想知道它是如何实现的。

要让OneSignal工作,你应该给它谷歌项目号(来自Firebase)和谷歌服务器API密钥,这也是你从Firebase获得的。onesignal在其SDK中为您做的另一项工作。所以,这是因为firebase令牌。只有在您重新启动play services(主要是在您重新安装或更新应用程序时)时,他们才会向您发送新令牌,并且有多个信号通过此令牌以某种方式生成自己的id。

听起来好像是通过与服务器通信来生成的。在这种情况下,服务器如何知道谁是该设备?当设备向服务器请求其用户ID时,它是如何“自动验证”的?从文档中可以看出:只要用户安装了你的应用程序,它就会保持不变……如果用户没有选择退出谷歌广告ID(Android),则在完全重新安装后,ID将保持不变。感谢@ValentinoS的参考。但是,它是如何实施的?当用户“清除数据”时,如何/在何处存储用户ID以使其不被删除?不,您错了。要使OneSignal正常工作,您应该为其提供google_项目编号(来自Firebase)和google_服务器API_密钥,这也是您从Firebase获得的。还有一个信号为你做的工作是SDKOk,我做得太快了。如果你愿意,你可以在这里编辑你的答案,这样我就可以向上投票,删除向下投票。好的,我已经更改了答案。如果有帮助的话,你可以投票感谢你的回答。重新初始化播放服务时如何检测?播放服务告诉firebase它们是重新初始化的,firebase推送新令牌。您的OneSignal后台服务处理它并将它自己的id发送到OneSignal服务器。如果你问firebase如何知道PlayServices是否重新初始化-我想,这是因为你在清单中注册了它。以及在清除应用程序时未清除清单中注册的所有数据。仅当您删除或更新此应用程序时。