我的应用要求用户注册并登录才能使用该应用。我正在使用Firebase身份验证来验证用户身份。问题是如果用户下载应用程序并且没有登录,它会收到其他用户发送的不应该发生的推送通知。用户应该只在她/她登录时才会收到与应用程序相关的通知。这是因为在应用程序下载后会立即生成并存储令牌。如果用户已登录,我该如何生成令牌? 这是我试图使用的代码,但令牌根本没有产生:
private FirebaseAuth.AuthStateListener mAuthListener;
@Override
public void onTokenRefresh() {
final String recent_token = FirebaseInstanceId.getInstance().getToken();
Log.d(REG_TOKEN, recent_token);
//databaseReference = FirebaseDatabase.getInstance().getReference().child("Blog");
mAuth = FirebaseAuth.getInstance();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
if (firebaseAuth.getCurrentUser() != null) {
if(recent_token!=null)
Log.d(REG_TOKEN, recent_token);
else if(recent_token==null)
onTokenRefresh();
}
}
};
}}
答案 0 :(得分:0)
我打算对此发表评论,因为我没有开发到原生Android,所以我无法共享很多代码,但是如何将推送发送到主题而不是令牌呢?
您可以在用户登录或创建帐户后向用户订阅特定主题,并仅向订阅这些主题的人发送推送。
您可以使用
为某个主题订阅用户FirebaseMessaging.getInstance().subscribeToTopic("your_topic_name");
因此,当发送推送时,您只会发送到your_topic_name
,这样更容易,因为您不需要获取所有令牌并逐个发送(我认为您正在做的事情)。
当用户打开应用程序时,您需要再次检查并订阅他(仅为安全起见)。
您可以在此处找到有关subscribing users to topics的更多信息。
希望这有帮助。