Модернизация – не вызывает вызов API, когда приложение находится в фоновом режиме/закрытоAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Модернизация – не вызывает вызов API, когда приложение находится в фоновом режиме/закрыто

Сообщение Anonymous »

Я использую Retrofit2 с OkHttp. С ним все работает нормально, кроме одного
 — сетевого вызова, когда приложение закрыто или находится в фоновом режиме.'

Работает

Каждый раз, когда приходит уведомление Firebase, я делаю сетевой вызов для получения данных, связанных с
этим уведомлением, а затем показываю уведомление.

Сценарий

Рассмотрим приложение Android, которое работает в фоновом режиме или закрыто и пришло уведомление.

Что происходит

Уведомление доставлено успешно, я его вижу. Но когда я пытаюсь позвонить, он
всегда выдает ошибку «java.net.SocketTimeoutException». Не удалось подключиться к
*******, и я не вижу никаких вызовов, поступающих на сервер.

Мой класс Retrofit

@Singleton
@Provides
static Retrofit provideRetrofitInstance(){
OkHttpClient.Builder client = new OkHttpClient.Builder();
client.connectTimeout(300, TimeUnit.SECONDS)
.callTimeout(300, TimeUnit.SECONDS)
.writeTimeout(300, TimeUnit.SECONDS)
.readTimeout(300, TimeUnit.SECONDS)
.retryOnConnectionFailure(true);

return new Retrofit.Builder()
.baseUrl(Constants.BASE_URL)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.client(client.build())
.build();
}


Класс «Мой диспетчер работ»

@NonNull
@Override
public Result doWork() {

String encodedString = getInputData().getString(Constants.MODEL);

// Starting foreground service
setForegroundAsync(createForegroundInfo());

//calling the api
}


Инициализировать диспетчер работ

NotificationModel model = new NotificationModel(
intent.getStringExtra(Constants.KEY_MSG_TITLE),
intent.getStringExtra(Constants.KEY_MSG_BODY),
intent.getStringExtra(Constants.KEY_TYPE),
intent.getStringExtra(Constants.KEY_NOTIFCATION_ID),
intent.getStringExtra(Constants.KEY_SHOW),
intent.getStringExtra(Constants.KEY_NOTIFICATION_TYPE));

String encodedModel = Helper.serializeToJson(model);

Data createGroup = new Data.Builder()
.putString(Constants.MODEL , encodedModel)
.build();

uploadWorkRequest = new OneTimeWorkRequest.Builder(AlertWorker.class)
.setInputData(createGroup)
.build();

WorkManager.getInstance().enqueue(uploadWorkRequest);


Разрешения в манифесте:






Подробнее здесь: https://stackoverflow.com/questions/608 ... und-closed
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»