如何仅在Firebase中向UID用户发送推送通知?

时间:2018-08-23 06:17:52

标签: android firebase push-notification firebase-cloud-messaging

我只是在使用Firebase,现在我设法创建了用户身份验证,并且在Firebase中有一些推送通知问题。

在我学习教程here之前,我很高兴。但是显然,在我注销并尝试推送通知后,我仍然仍然收到通知。

所以我的问题也与推送通知有关,即:

  1. 如何仅在登录后才输入通知?
  2. 如何仅使用已注册的UID定位通知?
  3. 是否有必要从firebase发出通知,所以它不像自动聊天应用程序那么简单吗?

这是我编写的代码:

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());
    }
}

如果我仍然需要添加任何内容,请说其他代码。非常感谢您想要帮助仍然是初学者的我。

1 个答案:

答案 0 :(得分:0)

  
      
  1. 如何仅在登录后才输入通知?
  2.   

您必须以一种将生成的令牌与成功登录的用户配对的方式来处理它,并确保您也handle the logout

  
      
  1. 如何仅使用已注册的UID定位通知?
  2.   

根据您使用的服务器,您可以将令牌与用户的UID配对(我假设您正在使用Firebase Auth)。例如,我们在应用程序(我们正在使用Firebase DB)中执行的操作是,一旦用户进入主屏幕(成功登录),我们便将令牌提交给数据库,其中的键是uid。这样,我们可以通过指定uid轻松获得令牌。

  
      
  1. 是否有必要从firebase发出通知,所以它不像自动聊天应用程序那么简单吗?
  2.   

我不确定这是什么意思。


通常,在Stack Overflow中不建议在一个帖子中有3个问题。我强烈建议您今后将每个问题尽可能地分成自己的帖子。