NotificationCompat.Builder показывает диалог вместо уведомления - PullRequest
0 голосов
/ 09 июля 2019

Я работаю в приложении чата, используя push-уведомления с OneSignal.

Если пользователь находится в приложении, но не участвует в диалоге, при получении уведомления отображается диалог, а не уведомление.

Я хочу показать уведомление вместо диалога.Это код:

protected boolean onNotificationProcessing(OSNotificationReceivedResult notification) {
    almacen=((Almacen)getApplication());
    JSONObject noti=notification.payload.additionalData;
    try {
        idChat=noti.getInt("idchat");
    } catch (JSONException e) {
        e.printStackTrace();
    }

    showNoti=!(almacen.getIdChat()==idChat);
    if(showNoti){
        OverrideSettings overrideSettings = new OverrideSettings();
        overrideSettings.extender = new NotificationCompat.Extender() {
            @Override
            public NotificationCompat.Builder extend(NotificationCompat.Builder builder) {
                Bitmap icon = BitmapFactory.decodeResource(Almacen.getContext().getResources(),
                        R.drawable.chat);
                builder.setLargeIcon(icon);
                return builder.setColor(new BigInteger("FF0000FF", 16).intValue());
            }
        };

        OSNotificationDisplayedResult displayedResult = displayNotification(overrideSettings);
        Log.d("OneSignalExample", "Notification displayed with id: " + displayedResult.androidNotificationId);
    }else{
        if(almacen.getActivity()!=null){
            almacen.getActivity().reload();
        }
    }


    return true;
}

Используя это, приложение ведет себя так, как сказано: отображается диалог, а не уведомление.

Как можно избежать этого и показывать уведомление вместоДиалог?

Спасибо.

1 Ответ

0 голосов
/ 09 июля 2019

Я решил это, добавив эту строку:

.inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)

В методе startInit:

OneSignal.startInit(this)
            .setNotificationOpenedHandler(new MyNotificationOpenedHandler())
            .setNotificationReceivedHandler(new MyNotificationReceivedHandler())
            .inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
            .init();
...