>我已经对我的Android应用程序进行了编码,我需要设备令牌在首次启动时可用。(用户将登录/注册,我需要将此令牌与登录/注册请求一起发送到服务器。
但是,我注意到当我需要设备令牌时,甚至还没有调用onTokenRefresh。它在模拟器和真实设备中都是相同的。我的问题有什么解决方案?是否可以按需获取设备令牌?或者可能与请求强制生成设备令牌的权限有关?
文档指出"在应用初始启动时,FCM SDK 会为客户端应用实例生成注册令牌。如果要定位单个设备或创建设备组,则需要通过扩展 FirebaseInstanceIdService 来访问此令牌。但是,我注意到它没有在我需要时按时生成,并且似乎无法保证它在我需要时可用。
请指教。谢谢!
也许可以肯定的是,令牌会在应用程序开始时生成。如果没有满足某些条件,则不会重新生成/重新创建此令牌。 您可以使用共享首选项存储此令牌,以后可以使用。 我正在这样做,似乎在需要时为用户获取令牌。
如果令牌刷新需要很长时间,那么您可以在获取令牌后更新用户信息。 -这可能是避免空值的最安全解决方案。
从我的角度来看,在应用程序启动后随时更新用户信息(如果令牌值不为空)并将令牌值存储在内部的共享首选项中
onTokenRefresh()
如果该用户值在任何情况下发生变化,它将始终更新。
每次需要令牌时都可以调用FirebaseInstanceId.getInstance().getToken()
。它对我来说效果很好。
只需在启动器活动的onCreate方法中使用它
String id=FirebaseInstanceId.getInstance().getToken()
并将此 ID 传递到您想要使用的位置