Delphi - новые приложения в Google Play должны быть ориентированы на Android 8 (уровень API 26) - PUSH-уведомление в фоновом режиме
С августа 2018 года все новые приложения в Google Play должны быть ориентированы на Android 8 (уровень API 26) или выше, а с ноября 2018 года все обновления приложений в Google Play должны быть такими же приложениями в Google Play.
Прямо сейчас единственный способ загрузить новое приложение для Android 8 - это отредактировать файл AndroidManifest.template.xml и заменить targetSdkVersion = "% targetSdkVersion%" на: Android: targetSdkVersion = "26"
Проблема в том, что с этого момента приложение имеет ограничения, введенные Android O. Разрешения, которые считаются опасными (камера, местоположение, SMS,...), не будут предоставлены приложению, если просто включить их в AndroidManifest. файл. До свидания с камерой, с GPS, ...
В этой сети вы можете выполнить несколько простых шагов, чтобы начать запрашивать разрешения у пользователя: http://delphiworlds.com/2018/05/targeting-android-8-and-higher/
ОДНАКО, цель Android 8 имеет гораздо больше последствий. Мое приложение, для простого факта изменения targetSDKVersion с 25 на 26, НЕ ПОЛУЧАЕТ УВЕЛИЧЕННЫХ УВЕДОМЛЕНИЙ, когда приложение не запущено (или в фоновом режиме).
Мой тест прост: я меняю targetSDK, и он больше не работает. Я перематываю, и это снова работает, как с запущенным приложением, так и с приложением в фоновом режиме или закрытым.
Ключом является изменение TARGETSDKVERSION, потому что я всегда пытался выбрать SDK 24.3.3 в SDK Manager.
Я думаю, что одной из основных причин является исчезновение фоновых служб в Android O, как они объясняют в https://blog.klinkerapps.com/android-o-background-services/ Но я не уверен.
МОЯ БОЛЬШАЯ ПРОБЛЕМА.
Я только что загрузил приложение для Android 7 (уровень 25) в Google Play. Проблема в том, что с ноября 2018 года я НЕ смогу загружать обновления, если я не изменю TARGETSDKVERSION на 26-й уровень. Но если я это сделаю... Я перестану получать PUSH-уведомления, и без PUSH-уведомлений мое приложение НЕ РАБОТАЕТ ДЛЯ ВСЕГО.
Признаюсь, я немного напуган этим
Я извиняюсь за мой английский.
Большое спасибо вам.
1 ответ
Вы должны убедиться, что ваше уведомление имеет высокий приоритет, FCM немедленно опубликует его
FCM пытается доставить сообщения с высоким приоритетом немедленно, что позволяет службе FCM при необходимости разбудить спящее устройство и выполнить некоторую ограниченную обработку (включая очень ограниченный доступ к сети). Сообщения с высоким приоритетом обычно должны приводить к взаимодействию пользователя с вашим приложением. Если FCM обнаруживает шаблон, в котором они не обнаруживают, ваши сообщения могут быть расставлены по приоритетам
Если ваши пользователи взаимодействуют с уведомлением, FCM не будет задерживать его. Фоновые службы могут быть запрещены в некоторых случаях в Android O, но это не значит, что вы не можете отправлять уведомления
Также ваше уведомление не будет отображаться, если вы не используете каналы уведомлений, вы можете использовать этот код для создания каналов уведомлений
public void initChannels(Context context) {
if (Build.VERSION.SDK_INT < 26) {
return;
}
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel channel = new NotificationChannel("default",
"Channel name",
NotificationManager.IMPORTANCE_DEFAULT);
channel.setDescription("Channel description");
notificationManager.createNotificationChannel(channel);
}