Android 以编程方式向订阅主题的用户发送FCM
我正在创建一个血库应用程序,当用户请求血液时,它会获取请求的血型并在数据库中搜索相同的血型。它显示所有可以捐献给该血型的用户的列表 在列表中,我已经实现了一个向用户发送消息和呼叫的选项。此外,我希望应用程序向所有血型相同的用户发送通知 为了实现这一点,我在成功登录时为用户订阅了一个主题,并向他发送了一个通知,但我是通过控制台完成的 我想实现的是,当一个用户请求献血时,在向他显示所有可以献血的用户列表的同时,该应用程序还应该向所有订阅该主题的用户发送通知 那么,有没有任何可能的方法可以通过编程将FCM发送给订阅同一主题的所有用户 在这里,我将在用户成功登录时订阅一个主题:Android 以编程方式向订阅主题的用户发送FCM,android,firebase,firebase-cloud-messaging,Android,Firebase,Firebase Cloud Messaging,我正在创建一个血库应用程序,当用户请求血液时,它会获取请求的血型并在数据库中搜索相同的血型。它显示所有可以捐献给该血型的用户的列表 在列表中,我已经实现了一个向用户发送消息和呼叫的选项。此外,我希望应用程序向所有血型相同的用户发送通知 为了实现这一点,我在成功登录时为用户订阅了一个主题,并向他发送了一个通知,但我是通过控制台完成的 我想实现的是,当一个用户请求献血时,在向他显示所有可以献血的用户列表的同时,该应用程序还应该向所有订阅该主题的用户发送通知 那么,有没有任何可能的方法可以通过编程将F
firebaseAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
progressDialog.dismiss();
topicSubscription();
} else {
progressDialog.dismiss();
String exception = task.getException().getMessage();
HelperClass.showSnakbarMsg(rootView, exception);
}
}
});
}
private void topicSubscription() {
FirebaseMessaging.getInstance().subscribeToTopic("Blood")
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
String msg = getString(R.string.msg_subscribed);
if (!task.isSuccessful()) {
msg = getString(R.string.msg_subscribe_failed);
} else {
startActivity(new Intent(LoginActivity.this, MainActivity.class));
finish();
}
Log.d("log", msg);
Toast.makeText(LoginActivity.this, msg, Toast.LENGTH_SHORT).show();
}
});
我已经读过了,很多人都说要通过API以编程方式发送FCM。但我在firebase中创建整个应用程序,所以我的数据库也在firebase中,因为我的数据库在firebase中,所以我不能只对一个通知使用API,就像我必须为该通知在DB中管理一些表一样,并且只有一个表我必须管理一个单独的DB。
那么,在成功加载捐献者列表后,我是否可以通过编程方式将FCM发送给所有订阅了相同主题的用户,该列表显示了可以向请求的血型献血的用户。
感谢您可以直接从android向订阅主题的所有设备发送推送通知,请查看以下如何直接从android发送MSG,但在本例中,用户正在发送消息,要向订阅主题的用户发送fcm消息,您需要更改fcm文档中指定的设置是否必须使用HTTP请求向订阅主题的所有用户发送消息您可以使用您选择的库(如改装库或截取库)发送请求。
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMsgService";
/**
* Called when message is received.
*
* @param remoteMessage Object representing the message received from Firebase Cloud Messaging.
*/
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// TODO(developer): Handle FCM messages here.
Log.d(TAG, "From: " + remoteMessage.getFrom());
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
}
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
}
}