Я разрабатываю приложение Xamarin.Android, которое использует Foreground Service для отслеживания местоположения пользователя после определенного времени / расстояния.
Для поддержания работоспособности службы у меня есть текущее уведомление с низким приоритетом, а также канал уведомлений с низким приоритетом.Я пробовал все виды комбинаций (низкие и минимальные приоритеты и текстовые сообщения).
Код канала уведомления:
private NotificationChannel CreateNotificationChannel(string channelId)
{
if (Build.VERSION.SdkInt < BuildVersionCodes.O)
{
return null;
}
string channelName = Resources.GetString(Resource.String.notification_channel_name);
string channelDesc = Resources.GetString(Resource.String.notification_channel_desc);
NotificationChannel notificationChannel = new NotificationChannel(channelId, channelName, NotificationImportance.Default)
{
Description = channelDesc
};
switch(channelId)
{
case UPDATES_NOTIFICATION_CHANNEL_ID:
notificationChannel.Importance = NotificationImportance.High;
break;
case ONGOING_NOTIFICATION_CHANNEL_ID:
notificationChannel.Importance = NotificationImportance.Low;
break;
default:
break;
}
var notifManager = (NotificationManager)GetSystemService(NotificationService);
notifManager.CreateNotificationChannel(notificationChannel);
return notificationChannel;
}
Код уведомления:
private Notification CreateOngoingNotification()
{
Intent notificationIntent = new Intent(this, typeof(MainActivity));
PendingIntent pendingIntent =
PendingIntent.GetActivity(this, 0, notificationIntent, 0);
string content = "The application is fetching your location every " + MIN_TIME / (60 * 1000) + " minutes if you moved at least " + MIN_DISTANCE + " meters.";
NotificationCompat.Builder builder;
if (Build.VERSION.SdkInt < BuildVersionCodes.O) builder = new NotificationCompat.Builder(this);
else builder = new NotificationCompat.Builder(this, m_ongoingNotificationChannel.Id);
builder
.SetContentTitle("Persistent notification")
.SetStyle(new NotificationCompat.BigTextStyle().BigText(content))
.SetSmallIcon(Resource.Drawable.ic_notification)
.SetContentIntent(pendingIntent)
.SetGroup("persistent")
.SetOngoing(true)
.SetVisibility((int)NotificationVisibility.Private)
.SetPriority((int)NotificationPriority.Low);
Notification notification = builder.Build();
return notification;
}
ИмеяНа следующем изображении я пытаюсь соответствовать стилю уведомлений из приложения LinkedIn, одного Google Weather (внизу) и другого (3-го, начиная с конца).
ВсеЯ могу получить это с «Постоянное уведомление» в заголовке.
Любая помощь будет приветствоваться!
РЕДАКТИРОВАТЬ: ясно, что яиспользую Xamarin, а не Java