Я использую push-уведомления OneSignal. Когда приложение Android находится на переднем плане и получает уведомление, оно создает окно предупреждения с уведомлением. Как сделать так, чтобы это не появлялось при получении уведомлений?
Как предотвратить оповещение о входящем уведомлении OneSignal?
comment
Получатель реализован внутри активности? Если это может быть проблемой. Попробуйте сделать приемник отдельным классом.
- person Quintin Balsdon   schedule 16.12.2016
comment
Вот аналогичный вопрос о ios ссылка Поэтому я думаю, что это можно решить, отключив какую-то опцию, потому что по умолчанию она создает оповещение.
- person user3671635   schedule 16.12.2016
Ответы (5)
Из документации SDK — при запуске Init OneSignal сделайте обязательно вызовите inFocusDisplaying с «Нет», чтобы отключить OneSignal в приложении AlertBox.
также в разделе NotificationReceivedHandler -
Важные примечания о поведении. Если вы будете отображать собственное сообщение в приложении при получении уведомления, обязательно вызовите inFocusDisplaying с None, чтобы отключить OneSignal в приложении AlertBox.
person
Nati Sholman Oskar
schedule
19.12.2016
Используя эту строку кода, я решил свою проблему.
OneSignal.inFocusDisplaying(2);
person
Janaka Pushpakumara
schedule
25.12.2018
У меня были похожие проблемы, и я решил их с помощью inFocusDisplaying.
вот как использовать это в android.
public class MyApplicationClass extends Application {
private static Context context;
PlayerIdsession session;
public static Context getContext() {
return context;
}
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
//MyNotificationOpenedHandler : This will be called when a notification is tapped on.
//MyNotificationReceivedHandler : This will be called when a notification is received while your app is running.
OneSignal.startInit(this)
.setNotificationOpenedHandler(new MyNotiOpenedHandler())
.setNotificationReceivedHandler( new MyNotiReceivedHandler() )
.inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
.init();
OneSignal.idsAvailable(new OneSignal.IdsAvailableHandler() {
@Override
public void idsAvailable(String userId, String registrationId) {
if (userId != null){
session=new PlayerIdsession(context);
session.savePlayerId(userId);
Log.d("debug", "PlayerId:" + userId);
}
/* if (registrationId != null){
Log.d("debug", "registrationId:" + registrationId);
}*/
}
});
}
}
person
Rajwant Kaur Boughan
schedule
16.05.2017
Просто добавьте эту строку в ваш windows.plugin.signal
.inFocusDisplaying(window.plugins.OneSignal.OSInFocusDisplayOption.Notification)
Например :-
window.plugins.OneSignal
.startInit("YOUR_APPID")
.inFocusDisplaying(window.plugins.OneSignal.OSInFocusDisplayOption.Notification)
.endInit();
person
mayur sawant
schedule
16.04.2019
Это изменилось в OneSignal 4.0.
Для Котлина:
OneSignal.setNotificationWillShowInForegroundHandler { notificationReceivedEvent ->
notificationReceivedEvent.complete(null)
}
Для Java:
OneSignal.setNotificationWillShowInForegroundHandler(new NotificationWillShowInForegroundHandler() {
@Override
void notificationWillShowInForeground(OSNotificationReceivedEvent notificationReceivedEvent) {
notificationReceivedEvent.complete(null);
}
});
person
Muz
schedule
08.02.2021