Open Reenagrg100 opened 4 years ago
Hi @Reenagrg100 Can you share the SNS payload you are sending?
@Dallas62 This is the payload which I used for sending a message from SNS console. This is the default GCM format. { "GCM": "{ \"data\": { \"message\": \"Sample message for Android endpoints\" } }" }
FYI: I tried with other variations of payload as well.
This is because this kind of payload (data-only) are ignored for popping up to the user. This kind of issue with solution has already been discussed.
@Dallas62 But as I already said this should not be the case as I tried it with other payloads also. Let me share those as well.
{ "GCM": "{ "data": { "message": "Sample message for Android endpoints" },"userInteraction":false,"foreground":true }" } This is the another one, that I tried and this is the same mentioned in this library doc for android.
But, please answer me one thing as per your answer, how the same payload is working in 3.1.9 version.
@Dallas62 In 3.1.9 version everything is working smoothly without modifying anything( even same payload) and I'm receiving notification in killed state too :)
This is an unexpected breaking change introduced in 3.3.0 https://github.com/zo0r/react-native-push-notification/blob/master/CHANGELOG.md#330---2020-04-29
@Dallas62 thanks for sharing this. But, I'm still not convinced with it. As I have lots of confusion going on in my mind.
1) As per you, GCM format is removed in 3.3.0, but I tried with GCM format in 3.2.0 version but even it's not working there. 2) I tried with other formats also( not GCM), it's still not working there => In versions above than 3.1.9 This is the payload, I already shared this above. https://user-images.githubusercontent.com/59276080/87820541-e10daa80-c88b-11ea-9c86-6a7c37746fb2.png 3) FYI with the above-given format ( mentioned in point 2), I'm pretty much sure that it was working around 7th July but stop working after that.
It would be great if you can clear all those points. Thanks in advance!!
Hi, This kind of payload (GCM) will not be supported anymore, there is also example in other issues to get a solution. You can stay in an older version 3.1.9, if this is working. If it was working before 7th, it's probably because the dependencies have been updated.
@Dallas62 Thanks for the reply:) Could you please share the expected payload for the latest version in the case of SNS?
Hi, I already put a link to an issue that explain how to handle this changes 😉
Hey, It would be just great if you can share that link or that issue's link. I searched for it but didn't find it yet.
Running into the same type issues where onNotification
is called nicely when app is foregrounded and backgrounded. However no notifications are shown at any state (killed, fore- and background). Looking into the native logs I am getting the following errors:
Killed state:
Cannot send to notification centre because there is no 'message' field in:...
Even thought looking into the bundle the message field clearly is there
Background state:
Foreground: Doesnt really matter since we are implementing in app notifications
Running v4.0.0, RN 0.62.2
Hi @kyytiPetteri As the error says, you are giving a string which is not an Integer. Change it to a real integer, this should solve this issue.
@Dallas62 Yeah actually this seems to be an issue of Firebase messaging and this lib. Messageid's from firebase come in completely different format than PushNotification lib gets
Are you sure of that ? I mean, this was tested with Firebase remote messaging few days ago (every release), and you are currently the only one reporting this. I'm not sure Firebase will make this kind of breaking change in few days.
Probably the payload send is not right.
Hey @kyytiPetteri how are you triggering the notifications? As in my. case I was doing it from SNS console on AWS side. and what type of payload you are sending?
Our server-side is triggering these using https://www.npmjs.com/package/node-pushnotifications.
I fully removed message handling on the Firebase lib and app being in quit state seems to be causing the biggest problems. When sending test notifications through Postman, the native logs give following:
Here is the bundle the that the lib receives:
Bundle[{
userInteraction=false,
id=-423922623,
foreground=false,
data=Bundle[{
content-available=1,
priority=high,
body=This is test order status changed message. And it's really really long. This takes forever.,
icon=<icon_url>,
sound=default,
title=Test notification,
message=This is test order status changed message. And it's really really long. This takes forever.
}]
}];
11:51:24.229 RNPushNotification onMessageReceived: <Bundle from above>
11:51:24.235 RNPushNotification sendNotification: <Bundle from above>
11:51:24.237 RNPushNotification Cannot send to notification centre because there is no 'message' field in: <Bundle from above>
@kyytiPetteri I was facing the same issue when the app was in the 'killed' or quit state, it wouldn't receive any notifications. I rectified this issue by making these changes:
1) Make sure you setup your custom channel correctly, somewhat in this manner:
PushNotification.createChannel( { channelId: 'MyChannel', channelName: 'PushChanelAlert', vibrate: true, soundName: 'notif', }, (created) => console.log(
createChannel returned '${created}'), );
I had called this function inside my App.js
2) Use the correct channel id inside you AndroidManifest.xml (and avoid usage of deprecated methods/configuration entries):
`<meta-data android:name="com.dieam.reactnativepushnotification.notification_foreground" android:value="false"/> <meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="MyChannel" tools:replace="android:value" /> <meta-data android:name="com.dieam.reactnativepushnotification.notification_color" android:resource="@color/white"/>
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationPublisher" />
<receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationBootEventReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/>
</intent-filter>
</receiver>
` 3) Lastly, make sure you are using the same custom notification channel id inside your notification handler:
PushNotification.localNotification({ channelId: 'MyChannel', priority: 'high', // (optional) set notification priority, default: high largeIcon: 'ic_launcher', // (optional) default: "ic_launcher". Use "" for no large icon. smallIcon: 'ic_launcher', ignoreInForeground: false, autoCancel: false, vibrate: true, // (optional) default: true vibration: 300, // vibration length in milliseconds, ignored if vibrate=false, default: 1000 title: response !== null ? response.data.title : 'Open App for more info!', message:
You have recieved a new order!, playSound: true, soundName: 'notif.mp3', });
Upside is, I receive notifications now in the QUIT state, downside is, I'm yet to receive the response object when the app is in killed state, working on that as of now... :)
Bug
Environment info
react-native info
output: react-native:0.62.2 firebase-messaging: 20.2.1 and SNSLibrary version: 3.1.9> &&<=4.0.0
Steps To Reproduce
- Integrate Push Notification in your app
- Trigger a Push notification from FCM console, it worked
- Trigger a Push notification from SNS console with default payload (in GCM format)
- onNotification will be called, notification will be received in callback but notification won't be shown on your device
Reproducible sample code
export default class PushNotificationController extends Component { constructor(props) { super(props); PushNotification.configure({ // (optional) Called when Token is generated (iOS and Android) onRegister: function(token) { storeObjInPersistentStore('notificationToken', token).then(); },
// (required) Called when a remote or local notification is opened or received onNotification: notification => { if (Platform.OS === 'ios' && notification.foreground) { showNotificationAlert( notification.alert, notification, handleNotificationTap, ); } else if (!notification.foreground) { handleNotificationTap(notification); } }, // ANDROID ONLY: GCM or FCM Sender ID (product_number) (optional - not required for local notifications, but is need to receive remote push notifications) senderID:MY_FCM_SENDER_ID, // IOS ONLY (optional): default: all - Permissions to register. permissions: { alert: true, badge: true, sound: true, }, // Should the initial notification be popped automatically // default: true popInitialNotification: true, /** * (optional) default: true * - Specified if permissions (ios) and token (android and ios) will requested or not, * - if not, you must call PushNotificationsHandler.requestPermissions() later */ requestPermissions: true, });
}
render() { return null; } }
I remember I tried the same using 3.5.2 version on 7th July and it was working using same codebase. But stop working after that. I scratched my head for 4-5 days and at last what I got is that the issue is with version, it started working fine in version 3.1.9 without any further change. I also checked with some other versions but none of them worked in my case.
But I'm not convinced with the solution yet that I got. I request the community to please look at this issue and provide a clear picture of that. Note: I have already tried it with the latest version 4.0.0 but this also didn't work for me.
@Reenagrg100 Here is my finding. The payload you sent is using data
property which is silent notification. I guess you need noisy notification you should declare as notification
property
Example:
noisy notification
{
"GCM": "{ "notification": { "message": "Sample message for Android endpoints" } }"
}
silent notification
{
"GCM": "{ "data": { "message": "Sample message for Android endpoints" } }"
}
you may use both
{
"GCM": "{ "data": { "message": "Sample message for Android endpoints" }, "notification": { "message": "Sample message for Android endpoints" } }"
}
Use this payload as a custom payload in AWS SSN publishing : { "GCM":"{ "notification": { "body": "Sample message for Android endpoints", "title":"TitleTest" } }" }
Bug
Environment info
react-native info
output: react-native:0.62.2 firebase-messaging: 20.2.1 and SNSLibrary version: 3.1.9> &&<=4.0.0
Steps To Reproduce
Reproducible sample code
export default class PushNotificationController extends Component { constructor(props) { super(props); PushNotification.configure({ // (optional) Called when Token is generated (iOS and Android) onRegister: function(token) { storeObjInPersistentStore('notificationToken', token).then(); },
}
render() { return null; } }
I remember I tried the same using 3.5.2 version on 7th July and it was working using same codebase. But stop working after that. I scratched my head for 4-5 days and at last what I got is that the issue is with version, it started working fine in version 3.1.9 without any further change. I also checked with some other versions but none of them worked in my case.
But I'm not convinced with the solution yet that I got. I request the community to please look at this issue and provide a clear picture of that. Note: I have already tried it with the latest version 4.0.0 but this also didn't work for me.