Как предотвратить оповещение о входящем уведомлении OneSignal?

Я использую push-уведомления OneSignal. Когда приложение Android находится на переднем плане и получает уведомление, оно создает окно предупреждения с уведомлением. Как сделать так, чтобы это не появлялось при получении уведомлений?


person user3671635    schedule 16.12.2016    source источник
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