Уведомление не уведомляет - PullRequest
0 голосов
/ 14 декабря 2018

Я создаю клиентское приложение MQTT, используя paho MQTT клиент зависимость.

Реализация кода в фоновой службе.и все работает хорошо, за исключением того, что Уведомление не работает!

Фрагмент сервисного кода здесь :

Мои коды находятся внутри внутреннего класса TimeDisplayTimerTask.

Этот код находится в функции обратного вызова:

            @Override
        public void messageArrived(String topic, MqttMessage message) throws Exception {
            mIntent = new Intent(getApplicationContext(), MainActivity.class);
            mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
            pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, mIntent, 0);

            createNotificationChannel();

            Toast.makeText(getApplicationContext(),"A message received : "+ new String(message.getPayload()),Toast.LENGTH_SHORT).show();

            vibrator.vibrate(500);
            myRingtone.play();
            mBuilder .setContentTitle("Message received at : " + mTopic)
                    .setPriority(NotificationCompat.PRIORITY_HIGH)
                    .setContentIntent(pendingIntent)
                    .setAutoCancel(true)
                    .setContentText("Message : "+ new String(message.getPayload()));
            mNotificationManager.notify(0, mBuilder.build());
        }

И этот код создает канал уведомлений (как упомянуто в руководстве для разработчиков Google):

Опубликовано с помощью этого ответ .

private void createNotificationChannel() {

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            String chanel_id = "3000";
            CharSequence name = "Mqtt message";
            String description = "Message arrived";
            int importance = NotificationManager.IMPORTANCE_DEFAULT;
            NotificationChannel mChannel = new NotificationChannel(chanel_id, name, importance);
            mChannel.setDescription(description);
            mChannel.enableLights(true);
            mChannel.setLightColor(Color.BLUE);
            mNotificationManager = getSystemService(NotificationManager.class);
            if (mNotificationManager != null) {
                mNotificationManager.createNotificationChannel(mChannel);
            }

            mBuilder = new NotificationCompat.Builder(getApplicationContext(), chanel_id);
        }
        else
        {
            mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            mBuilder = new NotificationCompat.Builder(getApplicationContext());
        }

    }

При получении сообщения появляется сообщение с тостом, содержащее сообщение.Но это не подталкивает уведомление.

Проверенные приложения и уведомления, все уведомления разрешены.

РЕШЕНО: метод setter .setSmallIcon должен быть вызван для успешной сборки уведомления.

Что было не важно для меня.

...