Приложение Android VoIP: PARTIAL_WAKE_LOCK против игнорирования оптимизации батареи (белый список)

Я работаю над приложением Voice over IP (VoIP), использующим протокол SIP, который требует, чтобы приложение прослушивало входящие вызовы. Это означает, что приложение не должно спать или умирать.

Для старого кода, кажется, способ сделать это - получить PARTIAL_WAKE_LOCK.

Теперь с Android 6.0 и выше, есть новая Doze. Рекомендуется, чтобы, если вы не хотите, чтобы ваше приложение перешло в режим ожидания, вы должны "внести его в белый список", запросив разрешение REQUEST_IGNORE_BATTERY_OPTIMIZATIONS. Это специально для приложений VoIP в соответствии с документацией.

Эти две разные вещи, кажется, связаны между собой. Я не уверен, как они связаны, если они мешают друг другу, должен ли я использовать один или другой или оба, и если есть другие соображения. Пожалуйста, объясни.

Кроме того, я не могу использовать Push-уведомления в этом проекте. Если у вас есть другие советы по сохранению батареи, пожалуйста, дайте мне знать.

1 ответ

Решение

В вашем случае выглядит так, как будто вы должны запрашивать белый список, так как документация, которую вы связали, говорит о том, что GCM может конфликтовать с протоколом SIP. Я бы обработал этот случай как типичное разрешение во время выполнения. В каком-то месте вашего приложения (например, при создании вашего основного экрана) спросите белый список и причину, по которой он вам нужен, если они не хотят, просто отключите функции, связанные с приемом вызовов.

Вы должны использовать только один из них за раз, вы всегда можете сделать это сложным способом и обрабатывать VoIP-звонки без SIP, тогда вы можете обрабатывать входящие звонки с помощью push-уведомлений с вашего сервера, но я не думаю, что кто-то до этого, если Вам нужен продукт высшего уровня.

Для этого не существует обходного пути, действительно, единственный хороший способ - это сделать тяжелую работу самостоятельно, потому что пользователям довольно популярно использовать оптимизаторы батареи / улучшенные приложения для дозирования, чтобы вас в любом случае могли убить.

Другие вопросы по тегам