Как получить ответ на уведомление FCM в правильном формате JSON?

Я работаю с уведомлением FCM для нашего приложения для Android. Здесь у меня проблема с ответом уведомления FCM. Который приведен ниже код и ответ.

<?php
// API access key from Google API's Console
define( 'API_ACCESS_KEY', 'xxxxxxxxxxxxxxxxx' );
$registrationIds = array('id'=>'xxxxxxxxxxxxxxxx');
// prep the bundle
$msg = array
(
'message'   => 'here is a message. message',
'title' => 'This is a title. title',
);
$fields = array
(
'registration_ids'  => $registrationIds,
'data'      => $msg
);

$headers = array
(
'Authorization: key=' . API_ACCESS_KEY,
'Content-Type: application/json'
);

$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://android.googleapis.com/gcm/send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
$result = curl_exec($ch );
curl_close( $ch );
echo $result;

Отклик:

{message = here is a message. message, title = This is a title. title }

Но выше ответ не является правильным форматом JSON. Пожалуйста, помогите мне, как отправить ответ на уведомление FCM в правильном формате JSON.

Код Android приведен ниже:

public class FireMsgService extends FirebaseMessagingService {

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Log.e("remoteMessage-", "remoteMessage--->" + remoteMessage.getData());
// Log.e("getnotification-", "getnotification--->" + remoteMessage.getNotification());
Intent intent = new Intent(this, EventFragment.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 1410, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
//.setSmallIcon(getNotificationIcon())
.setContentTitle("Event Application")
.setContentText("Quiz notification")
.setAutoCancel(true)
.setSound(sound)
.setContentIntent(pendingIntent)
.setSmallIcon(getNotificationIcon());
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

}

private int getNotificationIcon() {
boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP);
return useWhiteIcon ? R.drawable.a_option : R.drawable.a_option;
}
}

я получаю ответ, используя remoteMessage.getData ().

и класс Firebase ID

public class FireIDService extends FirebaseInstanceIdService {

@Override
public void onTokenRefresh() {
super.onTokenRefresh();
String tkn = FirebaseInstanceId.getInstance().getToken();
Log.e("tkn","tkn---->"+tkn);
}
}

1

Решение

Firebase отправляет push-уведомление как объект карты. Чтобы получить карту в формате JSON, вы можете использовать JSONObject учебный класс.

Итак, разбор будет такой->

JSONObject jsonData = new JSONObject(remoteMessage.getData());

Вы также можете создать класс POJO и проанализировать его с помощью библиотеки GSON.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]