I am unable to view Popup Notification on android app created via react-native using OneSignal. I am able to view it in System tray. The eventListener onReceived function of OneSignal is also called and I can see the notification (only in the system tray) and also able to hear the ding sound, but notification popup did not show.
My code where I configure OneSignal in the main container:
OneSignal.init("ONE_SIGNAL_APP_ID");
OneSignal.inFocusDisplaying(2);
OneSignal.addEventListener('ids', (payload) => store.dispatch(Actions.savePushTokenLocal(payload)));
OneSignal.addEventListener('received', (payload) => store.dispatch(Actions.notificationReceived(payload)));
OneSignal.addEventListener('opened', (payload) => store.dispatch(Actions.notificationOpened(payload)));
OneSignal.configure()
I need to be able to view the notification popup when the notification is received, but I am unable to. I have tried almost everything that the documentation has to offer, but all in vain.
Please help me in this.
Unfortunately at the time of writing this it seems like it there have been issues on this. On the iOS initialization docs (https://documentation.onesignal.com/docs/react-native-sdk) it states "At the present time, none of these settings are available in the Android SDK." which below refers to setting the kOSSettingsKeyInFocusDisplayOption parameter. I assuming this is causing your problem and hopefully available in the future. The best solution may be to set the inFocusDisplaying to 0 and present a custom notification by animating a component into view for a set time when a notification is received. That way you have the ability to customize how the notification displays and behaves.
Related
For implementing notifications on Android TV below points needs clarification
As I have gone through SO and other articles, Android TV doesn't have notification tray,
Hence Notification has to be handled in a custom way. Therefore, please clarify:
Can we use Notification Manager.
Proper method to implementation Android TV notification.
Can we set the Notification priority
Possible way to find out whether the user has seen/interacted with notification or not
Handling list of notification messages by Local Database or any other method.
Any help would be much appreciated.
Notifications on Android TV OS are significantly different than mobile Android. There is an area to display notifications within the launcher, but it is limited to system-level notifications that are important for the user (e.g., issues with your account or info about OS updates). General app notifications do not show up, which means you need to display any kind of notification within your own app UI and not with the regular NotificationManager and related APIs.
Can we use Notification Manager. / Can we set the Notification priority
Yes, but it won't result in a notification being visible to the user and shouldn't be done on Android TV OS.
Proper method to implementation Android TV notification.
This should be handled within app UI. Most apps have a reserved space to show these on the main screen so that users see them as soon as they open the app.
Possible way to find out whether the user has seen/interacted with notification or not
Since you'll have to display it in your own UI, you can use regular View methods. For example, if you want to know if the user clicked the message, you can add that code to the OnClickListener.
Handling list of notification messages by Local Database or any other method.
This is a bit vague to give a specific answer, so you may want to post a separate question with more details about what you're trying to accomplish. One general way to go about it is that you have a server endpoint that understands the state of notifications for a given user and you sync that with your local database (easiest is probably Sqlite using Room). Your UI needs to be told if there's a relevant notification to display within the app, but the details of that depend on your app architecture.
I have activated push notifications in my application and I have done all the settings with Google and Apple to be able to send from the Appcelerator Dashboard.
I can receive notifications on both Android and iOS without any problems.
In iOS, when i click the notification from the notification center, the application opens and the callback function of Ti.Network.registerForPushNotifications is executed automatically.
The problem is that in Android, the function assigned to the callback event of the cloudPush module is not executed, I understand that it will be because when opening the application the listener is not yet created.
If I receive the notification when the application is open the callback function runs smoothly.
Reading in documentation of Android seems to me to understand that the notification is included in the extras of the intent when opening the application, but I am not clear what extra is, since in Appcelerator I do not find any function to obtain all the extras.
Someone could give me an idea of how to get the payload, whether or not when I click the notification the app is in the background, as if it is totally closed?
Thanks in advance.
This is the first time I am integrating notifications into my application. I am using Firebase. Setup was extremely simple and I am able to view the notification in the tray.
So, when the application is open, and if it receives a notification. I would like to display the notification in the activity itself.
How should I go about this?
You can look at Gmail approach. If there is new mail in current thread, they show SnackBar with notification.
You need to determinate connected parts of your app. And if notification connected to part where current user is - show SnackBar, and if there is something completely different - show heads-up notification.
Guide how to do Heads-Up notifications here
Guide how to do SnackBar notifications here
Have you ever tried Pushbots , its an infra- Structure for Notifications , it has more interesting Features than Firebase. Give it a shot.
Pushbots link
As we know, developing on Android we can handle push notification and show a custom view depending on our logic. But there is a problem, if I send a push notification with a content and title from the server android will auto-display the notification and if I handle them at the same time the phone shows both, mine and the auto-displayed.
How can I disable auto display of the notification in these cases.
Why do I need to do this?
I am using OneSignal to send push notifications for both android and ios. The second one need to receive a content and title to be shown but this is not mandatory for android and I want to be able to show a custom view in this case.
Thanks in advance
You can omit the displaying of the OneSignal notification by the SDK by setting up a NotificationExtenderService per the OneSignal Background Data and Notification Overriding documentation. Use the NotificationExtenderBareBonesExample class example shown in step 2 and return true instead of false to let the SDK know your handling the notification.
My intention is to display a notification with a personalised icon. However, if a notification with the same id is already displayed and then I need to add a new notification with the same id, my program will instead prepare a "stacked" version of the notification where the icon is changed to some generic icon and the notification content shows excerpts from the last and current notifications. Similar to how Gmail does when there are multiple emails.
To implement that I need to check if there are notifications of my app, currently displayed. I do not see any API to retrieve my own notifications.
I cannot simply cache the notification details that I have displayed till now, since in that case I need to know when they will be dismissed by the user, and update my cache accordingly. I also do not see any API to listen for dismiss events.
If you observe the gmail app notification behaviour properly u will notice that even when u dismiss one notification gmail shows you the same notification again in the list when a new notification comes. It looks to me that gmail is relying on total unread/unopened messages rather than keeping a cache of notifications.
There is no direct api for ur suggested SDK version. You need to fallback to ur own implementation. However, there is a way to know if a already showed notification was dismissed - How to know when my notification is cleared via Clear button?
This is possible with android 4.3 upwards now
See http://developer.android.com/reference/android/service/notification/NotificationListenerService.html#getActiveNotifications()