Мы разработали приложение для чата Android, которое успешно получало push-уведомления FCM на большинстве устройств Android.Однако мы обнаружили, что на некоторых устройствах, таких как {OPPO, VIVO, Xiomi, Asus}.мы не можем запустить наш сервис при отправке сообщения FCM.
Мы провели поиск в журналах и нашли:
2019-03-14 16: 23: 50.191 29074-29074/com.ourapp E / FirebaseInstanceId: Ошибка при доставке сообщения: ServiceIntent не найден.
Наш проект имеет следующую структуру:
Манифест:
<service
android:name=".services.FirebaseScheduledJobService"
android:exported="false">
<intent-filter>
<action android:name="com.firebase.jobdispatcher.ACTION_EXECUTE" />
</intent-filter>
</service>
Файл Gradle уровня проекта:
dependencies {
...
classpath 'com.google.gms:google-services:4.0.1'
...
}
Служба планировщика заданий Firebase:
public class FirebaseScheduledJobService extends JobService {
@Override
public boolean onStartJob(JobParameters job) {
new Thread(() -> {
if (job.getExtras() != null)
sendDeliveryReceipt(job.getExtras());
jobFinished(job, false);
}).start();
return true;
}
@Override
public boolean onStopJob(JobParameters job) {
return false;
}
private void sendDeliveryReceipt(Bundle bundle) {
String currentUserJid = SharedPreferenceManager.instance.getUserJidFromPreference();
...
}
}
}
Мы исследовали эту проблему и обнаружили, что нам нужно вручную включить автозапуск для этих производителей, а такжепусть пользователь отключит оптимизацию батареи для нашего приложения.Однако мы считаем, что это решение слишком техническое для обычных пользователей, поскольку они в основном не знают о таких настройках.
Чтобы помочь, мы добавили специальный код устройства, чтобы помочь пользователю перейти на страницу настроек автозапуска наих устройство.Мы также добавили код, чтобы помочь этим пользователям открыть настройки оптимизации батареи.
Есть ли другой способ решения этой проблемы FCM для этих конкретных производителей?
Возможно, стоит отметить, что наше исследование такжеМы пришли к выводу, что некоторые популярные приложения включены в белый список по умолчанию.Конечно, это не помогает нам, но может помочь объяснить, почему другие популярные приложения не требуют таких мер.
Мы будем благодарны за любую помощь.Спасибо.