Я разрабатываю приложение, которое позволяет выполнять экстренные вызовы с помощью Twilio. Мой код взят из https://github.com/twilio/twilio-client-quickstart-android.
Все, что я сделал, отличается от кода GitHub, — это создал отдельный класс AlertManager
, который выполняет инициализацию Twilio вне класса Activity
.
В любой момент пользователь должен иметь возможность открыть приложение и нажать кнопку, которая (как можно быстрее) сделает экстренный вызов с помощью Twilio.
Моя проблема в том, что Twilio требует создания clientDevice
путем запроса «capabilityToken» с моего сервера. Это нормально, но срок действия токена истекает через час.
Предполагая, что всегда есть внешнее подключение к Интернету, как я могу сделать так, чтобы мое приложение всегда имело объект clientDevice
(с действительным токеном), доступный где-то в памяти, так что, когда пользователь вводит Activity
для экстренного вызова, они могут сделать это немедленно, без необходимости приложению запрашивать новый токен или создавать новый clientDevice
?
Из быстрого теста с использованием режима полета и жесткого кодирования действительного токена видно, что Twilio SDK может создать clientDevice
, если у него есть токен, т. е. для получения токена требуется только один сетевой запрос, а не два, если требуется другой. создать clientDevice
.
Я знаю, что мог бы использовать какой-то Service
для получения токенов, но я не совсем уверен, где я могу хранить свои clientDevice
. Он не может находиться внутри Activity
, так как приложение не всегда будет запущено. Мне было интересно создать свой собственный класс Application
, но, насколько я понимаю, Android может и будет создавать новые экземпляры этого класса, когда это необходимо, что затем приведет к удалению моего clientDevice
из памяти. Или можно сохранить его в Service
и потом отправить какую-то широковещательную рассылку в Сервис для совершения звонка?
Я надеюсь, что это имеет какой-то смысл, и если у кого-то есть какие-либо идеи, это будет очень признательно.