Closed dev4bitcoin closed 2 years ago
I'm also facing the same problem, did you solved it?
I just removed the following from registerNotificationReceivedForeground and registerNotificationReceivedBackground.
Remove this line.
Notifications.postLocalNotification(notification.payload);
Hey is anyone got solutions ?. I am also facing this issue, notifications arrived but it not visible in foreground state.while app is in background state then notification is visible there.
Degrading react-native-notification version from 4.3.1 to 4.2.1 worked for me !
I am using below version :
"react-native": "0.68.2",
"react-native-notifications": "4.1.2",
The notification is not displaying in the Notification Center but I can see it on console whenever notification is arrived. It only happens on Android though. iOS is working fine. I went through all the open and closed bugs but none of the solutions are working.
Below is the version I am using.
"react-native": "0.64.3", "react-native-notifications": "^4.3.0",
Also, notification logged twice when it I arrived.
Try "react-native-notifications": "4.1.2" will worked !
Hey gents, hopefully useful for anyone else who comes across this. You need to register for a channel when you're on Android, and you need to decorate the local notification payload with a channel id
, and then it works great.
Not so much a library-specific thing rather than an Android-specific setup for notification - should be better documented but the library works fine. (I'm on 4.3.1
)
Channel creation:
Notifications.setNotificationChannel({
channelId: 'my-notification-channel-id',
name: 'My App',
importance: 5,
description: 'My Notification',
enableLights: true,
enableVibration: true,
showBadge: true,
vibrationPattern: [200, 1000, 500, 1000, 500],
});
Code I used to add the channel id to incoming remote notifications, and to de-dupe the handling of them (local notification will trigger another received foreground notification.
Notifications.registerNotificationReceivedForeground((notification: Notification, completion) => {
if (callback)
callback(notification);
if (Platform.OS == 'android') {
console.log(JSON.stringify(notification.payload));
// check if we have a payload, and if a channel was supplied - if no channel then we have a remote push notification
// if channel was supplied, it's a callback to the local notification we're creating inside of this if statement
if (!notification.payload || (!notification.payload.android_channel_id && !notification.payload["gcm.notification.android_channel_id"])) {
notification.payload.android_channel_id = "my-notification-channel-id";
let nId = Notifications.postLocalNotification(notification.payload);
console.log(nId);
}
}
// Calling completion on iOS with `alert: true` will present the native iOS inApp notification.
completion({alert: true, sound: true, badge: false});
},
);
The code in the library uses this to lookup the channelId
from the payload:
public String getChannelId() {
return getBundleStringFirstNotNull("gcm.notification.android_channel_id", "android_channel_id");
}
If nothing is found, it will use the default channel properties baked into the library.
final private String DEFAULT_CHANNEL_ID = "channel_01";
final private String DEFAULT_CHANNEL_NAME = "Channel Name";
So in theory, you could just register a channel with this ID and channel name, and it would just work without the other code to decorate the payload. Naturally, that's probably only appropriate for local testing/development.
Hope this is useful!
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.
Hey gents, hopefully useful for anyone else who comes across this. You need to register for a channel when you're on Android, and you need to decorate the local notification payload with a
channel id
, and then it works great.Not so much a library-specific thing rather than an Android-specific setup for notification - should be better documented but the library works fine. (I'm on
4.3.1
)Channel creation:
Notifications.setNotificationChannel({ channelId: 'my-notification-channel-id', name: 'My App', importance: 5, description: 'My Notification', enableLights: true, enableVibration: true, showBadge: true, vibrationPattern: [200, 1000, 500, 1000, 500], });
Code I used to add the channel id to incoming remote notifications, and to de-dupe the handling of them (local notification will trigger another received foreground notification.
Notifications.registerNotificationReceivedForeground((notification: Notification, completion) => { if (callback) callback(notification); if (Platform.OS == 'android') { console.log(JSON.stringify(notification.payload)); // check if we have a payload, and if a channel was supplied - if no channel then we have a remote push notification // if channel was supplied, it's a callback to the local notification we're creating inside of this if statement if (!notification.payload || (!notification.payload.android_channel_id && !notification.payload["gcm.notification.android_channel_id"])) { notification.payload.android_channel_id = "my-notification-channel-id"; let nId = Notifications.postLocalNotification(notification.payload); console.log(nId); } } // Calling completion on iOS with `alert: true` will present the native iOS inApp notification. completion({alert: true, sound: true, badge: false}); }, );
The code in the library uses this to lookup the
channelId
from the payload:public String getChannelId() { return getBundleStringFirstNotNull("gcm.notification.android_channel_id", "android_channel_id"); }
If nothing is found, it will use the default channel properties baked into the library.
final private String DEFAULT_CHANNEL_ID = "channel_01"; final private String DEFAULT_CHANNEL_NAME = "Channel Name";
So in theory, you could just register a channel with this ID and channel name, and it would just work without the other code to decorate the payload. Naturally, that's probably only appropriate for local testing/development.
Hope this is useful!
@dwardin you're a legend mate. Perfect fix 👍
The issue has been closed for inactivity.
The notification is not displaying in the Notification Center but I can see it on console whenever notification is arrived. It only happens on Android though. iOS is working fine. I went through all the open and closed bugs but none of the solutions are working.
Below is the version I am using.
"react-native": "0.64.3", "react-native-notifications": "^4.3.0",
Also, notification logged twice when it I arrived.