Получение канала = ноль при получении push-уведомления от городского андроида - PullRequest
0 голосов
/ 15 ноября 2018

Я получаю страшное 'предупреждение разработчика для пакета "com.mycompany.applicationame" Не удалось опубликовать уведомление на канале "null" "Тостовое сообщение при отправке push-уведомления на мое устройство. Я использую Android API 27. Вот мой код:

public class UAAutoPilot extends Autopilot {

@Override
public void onAirshipReady(@NonNull UAirship airship) {
    airship.getPushManager().setUserNotificationsEnabled(true);

    // Android O
    if (Build.VERSION.SDK_INT >= 26) {
        Context context = UAirship.getApplicationContext();
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);


        NotificationChannel channel = new NotificationChannel("customChannel",
                context.getString(R.string.custom_channel),
                        NotificationManager.IMPORTANCE_DEFAULT);

        notificationManager.createNotificationChannel(channel);

    }
    // Create a customized default notification factory
    CustomNotificationFactory notificationFactory;
    notificationFactory = new CustomNotificationFactory(UAirship.getApplicationContext());

    // Set the factory on the PushManager
    airship.getPushManager()
            .setNotificationFactory(notificationFactory);


    airship.getPushManager()
            .getNotificationFactory()
            .setNotificationChannel("customChannel");

}

}

Сообщение Logcat:

2018-11-14 14: 00: 52.821 1683-13152 / system_process E / NotificationService: канал не найден для pkg = com.mycompany.applicationame, channelId = null, id = 1007, tag = null, opPkg = com.mycompany.applicationame, callUid = 10081, userId = 0, входящий_идентификатор = 0, примечание

Отображается уведомление, но я получаю сообщение об ошибке. Новое в UrbanAirship. Я не вижу, что я делаю не так.

1 Ответ

0 голосов
/ 15 ноября 2018

Проблема заключалась в том, что я неправильно настроил Построитель уведомлений.

public class CustomNotificationFactory extends NotificationFactory {

Context context;
String channelID = "";

public CustomNotificationFactory(Context context, String channelID) {
    super(context);
    this.context = context;
    this.channelID = channelID;
}

@Override
public Notification createNotification(PushMessage message, int notificationId) {
    // do not display a notification if there is not an alert
    if (UAStringUtil.isEmpty(message.getAlert())) {
        return null;
    }

    // Build the notification
    NotificationCompat.Builder builder = new NotificationCompat.Builder(getContext(),channelID) //wasn't sending in channelID here.  
            .setContentTitle(context.getResources().getString(R.string.notification_title))
            .setContentText(message.getAlert())
            .setAutoCancel(true)
            .setSmallIcon(R.drawable.ic_notification);

    // Notification action buttons
    builder.extend(new ActionsNotificationExtender(getContext(), message, notificationId));

    return builder.build();
}

@Override
public int getNextId(PushMessage pushMessage) {
    return NotificationIdGenerator.nextID();
}


@Override
public boolean requiresLongRunningTask(PushMessage message) {
    return false;
}

}
...