Я делаю приложение, в котором я должен показать push-уведомление. Я могу правильно зарегистрировать токен, а также получить данные в FirebaseMessageService remoteMessage. Но это не показывает уведомление. Я хочу проверить тип. если type = 3, тогда показывать только уведомление. И после этого я хочу сохранить всю эту информацию на локальном компьютере, чтобы отобразить ее позже.
Бэкэнд, отправляющий эти данные в fcm
$fields = array(
'registration_ids' => $token,
'priority' => 10,
'notification' => array('title' => 'digimkey', 'body' => $message
,'sound'=>'Default','image'=>'Notification Image' ),
);
FCM отвечает этими данными (образец):
Message data payload: {type=3, title=Ravi Kulkarni - Marathi, partner_id=8, student_parent_list=2894|3052|Roshni Kaushal|, message=home, tickerText=New Message from Ravi Kulkarni}
MyFirebaseMessagingService class
Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (remoteMessage.getData().size() > 0){
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
Map<String, String> params = remoteMessage.getData();
JSONObject object = new JSONObject(params);
Log.e("JSON_OBJECT", object.toString());
try {
String title = object.getString("title");
String partnerId = object.getString("partner_id");
String studentInfo = object.getString("student_parent_list");
String message = object.getString("message");
String studentName = studentInfo.split("|").toString().replace("|","");
String ticker = object.getString("tickerText");
String notStatus = SharedPreferenceManager.getmInstance(getApplicationContext()).getNotification();
if (notStatus.equals("YES")){
SendNotification(message,studentName,ticker);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
private void SendNotification(String messageBody,String studentName,String ticker){
Intent intent = new Intent(this,Notification_All.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_ONE_SHOT);
String channelId = getString(R.string.default_notification_channel_id);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notification = new NotificationCompat.Builder(getApplicationContext(),channelId)
.setSmallIcon(R.drawable.logo)
.setTicker(ticker)
.setContentTitle("DIGIMKEY")
.setContentText(messageBody+"for"+studentName)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0,notification.build());
}
}