Ионный конденсатор iOS не может обнаружить возврат в онлайн-режим после автономного режима с помощью @capacitor/networkIOS

Программируем под IOS
Ответить
Anonymous
 Ионный конденсатор iOS не может обнаружить возврат в онлайн-режим после автономного режима с помощью @capacitor/network

Сообщение Anonymous »

У меня есть проект Ionic + Capacitor + Angular, использующий @capacitor/network. На iOS:
  • Когда приложение переходит в автономный режим (режим полета или отсутствие Wi-Fi), иногда (в моем случае каждый раз) не удается обнаружить подключение к сети.
  • Я пробовал Network.addListener('networkStatusChange'), ручной опрос с помощью Network.getStatus() и постановку в очередь автономных действий — ни один из них не работает надежно.
Шаги для воспроизведения:
  • Запустите приложение на устройстве iOS или в симуляторе.
  • Переключитесь в автономный режим.
  • Переключитесь обратно в онлайн.
  • Обратите внимание, что онлайн-обнаружение не работает.
Вы также можете обратиться к этой проблеме для получения более подробной информации и обсуждения: https://github.com/ionic-team/capacitor ... /issues/40
. Однако ни одно из предложенных решений не решило проблему в моем случае.
Как я могу надежно определить, когда приложение iOS снова подключается к сети? Существуют ли известные способы обхода или исправления этого ограничения?

минимальный воспроизводимый пример:

// sandbox-code: https://github.com/sidharth74659/capaci ... rk-ios-mwe

// Reproduces only on iOS (device & simulator). Android works correctly.

import { CommonModule } from '@angular/common';
import { Component, OnDestroy, OnInit } from '@angular/core';
import { PluginListenerHandle } from '@capacitor/core';
import { Network } from '@capacitor/network';
import {
IonButton,
IonContent,
IonHeader,
IonItem,
IonList,
IonTitle,
IonToolbar
} from '@ionic/angular/standalone';

@Component({
standalone: true,
selector: 'app-home',
templateUrl: 'home.page.html',
imports: [
CommonModule,
IonHeader,
IonToolbar,
IonTitle,
IonContent,
IonButton,
IonList,
IonItem
],
})
export class HomePage implements OnInit, OnDestroy {

isOnline = false;
logs: string[] = [];
networkListener?: PluginListenerHandle;

async ngOnInit() {
const status = await Network.getStatus();
this.isOnline = status.connected;
this.log(`Initial getStatus(): ${this.state()}`);

this.networkListener = await Network.addListener(
'networkStatusChange',
status => {
this.isOnline = status.connected;
this.log(`networkStatusChange fired: ${this.state()}`);
}
);
}

ngOnDestroy() {
this.networkListener?.remove();
}

async checkNetworkStatus() {
const status = await Network.getStatus();
this.isOnline = status.connected;
this.log(`Manual getStatus(): ${this.state()}`);
}

private log(message: string) {
const time = new Date().toLocaleTimeString();
this.logs.unshift(`${time} - ${message}`);
}

private state() {
return this.isOnline ? 'ONLINE' : 'OFFLINE';
}
}



Capacitor Network iOS MWE






{{ isOnline ? 'ONLINE' : 'OFFLINE' }}



Check Network.getStatus()




{{ log }}






Подробнее здесь: https://stackoverflow.com/questions/798 ... g-capacito
Ответить

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

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

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

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

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