Calling remoteMessage.getNotification()
returns null
and
when calling remoteMessage.getData()
I get a strange object back that has an initial property _wp={
as listed below. I need to extract the alert property each time but I am not sure how.
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
RemoteMessage.Notification notification = remoteMessage.getNotification();
Map<String, String> data = remoteMessage.getData();
Log.d("DATA", remoteMessage.getData().toString());
sendNotification(data);
}
The remote data log returns the below. So I can't seem get the title and text I need to in order to construct my notification.
{_wp={"c":"01euntvtna3epk83","alert":{"text":"Body text","title":"test"},"receipt":false,"type":"simple","targetUrl":"wonderpush:\/\/notificationOpen\/default","n":"01eunu08bjla8303","reporting":{"campaignId":"01euntvtna3epk83","notificationId":"01eunu08bjla8303"},"receiptUsingMeasurements":true}, alert=Body text}
I basically want to use them with when using the NotificationCompat.Builder
.setContentTitle(title)
.setContentText(text)
Any help will be greatly appreciated.
It is normal that remoteMessage.getNotification()
returns null
as WonderPush only uses FCM notifications with data inside them, nothing in the Firebase's own format.
remoteMessage.getData()
returns you with a map that can only store String values. This corresponds to the top-level JSON payload. This map's fields are the top-level JSON object fields, and its values are all stringified.
So you'll have to parse the _wp
key using new JSONObject(remoteMessage.getData().get("_wp"))
.
You'll basically read the title
and text
fields of this parsed _wp
JSON object to feed .setContentTitle()
and .setContentText()
of the NotificationCompat.Builder
.
But you should note that the WonderPush Android SDK is precisely here for that purpose:
_wp.alert
field: https://github.com/wonderpush/wonderpush-android-sdk/blob/v4.0.2/sdk/src/main/java/com/wonderpush/sdk/AlertModel.javaIf you have an addition, it would make more sense to fork, hack, submit a pull request, and use your fork in the meanwhile.
Best,