Delphi - Новые приложения в Google Play должны быть ориентированы на Android 8 (уровень API 26) - PUSH-уведомление в фоновом режиме - PullRequest
0 голосов
/ 27 мая 2018

С августа 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/

ОДНАКО, нацелить на Android8 имеет много других последствий.Мое приложение, для простого факта изменения 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 Ответ

0 голосов
/ 27 мая 2018

Вам необходимо убедиться, что ваше уведомление имеет высокий приоритет, 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);

}

...