Как реализовать действие нажатия push-уведомлений, если оно выполняется через облачные сообщения вручную, и получить доступ к дополнительным данным в фоновом режиме как уведомление - PullRequest
0 голосов
/ 23 марта 2019

enter image description here

Я просто хочу получить доступ к тем пользовательским данным, которые записаны внутри дополнительной опции в фоне

В моей базе данных есть категории и страницы, связанные с ними, такие как Sports to Sports.java, Politics to Politics.java

Теперь, чтобы показать уведомление, я сделал это: я просто хочу, чтобы при уведомлении о клике приложение считывало категорию и индекс и в соответствии с этим предназначалось для этой страницы .

public void setindex(String index,String category){
FirebaseUser current_user = FirebaseAuth.getInstance().getCurrentUser();
String uid = current_user.getUid();
DatabaseReference mi = FirebaseDatabase.getInstance().getReference().child("Users").child(uid).child("Last").child(category);
mi.setValue(index).addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {
        if (task.isSuccessful()) {

        }
    }
});}

и как получить эти заголовок, сообщение, категорию, индекс на клике уведомление

private void showNotification(String title, String message,String category,String index) {
    setindex(index,catgory);
    switch (category){
        case "Sports":Intent intent=new Intent(getApplicationContext(),Sports.class);break;
        case "Politics":intent=new Intent(getApplicationContext(),Politics.class);break;
        default:break;
    }

    PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(),0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
    NotificationCompat.Builder b = new NotificationCompat.Builder(getApplicationContext());
    b.setAutoCancel(true)
            .setDefaults(Notification.DEFAULT_ALL)
            .setWhen(System.currentTimeMillis())
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentTitle(title)
            .setContentText(message)
            .setContentIntent(contentIntent);
    NotificationManager notificationManager = (NotificationManager)getBaseContext().getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(1,b.build());
}

Я также создал файл FirebaseMessagingService.java

public class MyFirebaseMessagingService extends FirebaseMessagingService {


@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);
    showNotification(remoteMessage.getNotification());
}
private void showNotification(RemoteMessage.Notification notification) {
  PendingIntent pendingIntent=PendingIntent.getActivity(this,0,a,PendingIntent.FLAG_ONE_SHOT);
    NotificationCompat.Builder builder=new NotificationCompat.Builder(this).setSmallIcon(R.mipmap.ic_launcher_foreground).setContentTitle(notification.getTitle()).setContentText(notification.getBody()).setAutoCancel(true).setContentIntent(pendingIntent);
    NotificationManager notificationManager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
    notificationManager.notify(0,builder.build());

}

, а также FirebaseInstaceIdServcie.java

public class MyFirebaseIdService extends FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
    super.onTokenRefresh();
    String refreshedToken = FirebaseInstanceId.getInstance().getToken();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...