我只是在使用Firebase,现在我设法创建了用户身份验证,并且在Firebase中有一些推送通知问题。
在我学习教程here之前,我很高兴。但是显然,在我注销并尝试推送通知后,我仍然仍然收到通知。
所以我的问题也与推送通知有关,即:
这是我编写的代码:
MyFirebaseInstanceldService.java
public class MyFirebaseInstanceldService extends FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
// If you want to send messages to this application instance or
// manage this apps subscriptions on the server side, send the
// Instance ID token to your app server.
sendRegistrationToServer(refreshedToken);
}
private void sendRegistrationToServer(String refreshedToken) {
}
}
MyFirebaseMessaginService.java
public class MyFirebaseMessagingService extends FirebaseMessagingService {
public MyFirebaseMessagingService() {
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
sendNotification(Objects.requireNonNull(remoteMessage.getNotification()).getBody());
}
private void sendNotification(String messageBody) {
Intent intent = new Intent(this, HotelManagementActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
notificationBuilder.setSmallIcon(R.drawable.rotarylogo);
notificationBuilder.setContentTitle("Rotary Barcode");
notificationBuilder.setContentText(messageBody);
notificationBuilder.setAutoCancel(true);
notificationBuilder.setSound(defaultSoundUri);
notificationBuilder.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
assert notificationManager != null;
notificationManager.notify(0, notificationBuilder.build());
}
}
如果我仍然需要添加任何内容,请说其他代码。非常感谢您想要帮助仍然是初学者的我。
答案 0 :(得分:0)
- 如何仅在登录后才输入通知?
您必须以一种将生成的令牌与成功登录的用户配对的方式来处理它,并确保您也handle the logout。
- 如何仅使用已注册的UID定位通知?
根据您使用的服务器,您可以将令牌与用户的UID配对(我假设您正在使用Firebase Auth)。例如,我们在应用程序(我们正在使用Firebase DB)中执行的操作是,一旦用户进入主屏幕(成功登录),我们便将令牌提交给数据库,其中的键是uid。这样,我们可以通过指定uid轻松获得令牌。
- 是否有必要从firebase发出通知,所以它不像自动聊天应用程序那么简单吗?
我不确定这是什么意思。
通常,在Stack Overflow中不建议在一个帖子中有3个问题。我强烈建议您今后将每个问题尽可能地分成自己的帖子。