1
1

More than 3 years have passed since last update.

Ionic アプリ起動時にオフラインなら警告を出す(Capacitor)

Last updated at Posted at 2020-02-07

はじめに

この記事を確認して欲しい
ionic ネットワーク接続を確認する 【Capacitor】

上記の記事は私が前に書いたものだ。
最近発見したのだが、この記事で紹介してあるコードには1つ大きな欠落があった。。

タイトル通りだが、アプリの起動時にオフラインなら警告アラートが出ないのだ!!!

今回はその欠落を埋める。

なぜアプリの起動時にオフラインなら警告アラートがでない?

「はじめに」で紹介した記事より、コードを引用

startListenNetwork() {
    this.listener = Network.addListener('networkStatusChange', (status) => {
      if (!status.connected) {
        this.networkAlert();
      }
    });
  }

これはネットワークの状態が変化した場合の処理なのだ。

通信がonからoffになった時、もしくはoffからonになった時。
そして、もし通信がonからoffになった時は、アラートを出す。

こんな感じである。

つまり、アプリ起動時に通信がoffだろうとstartListenNetwork()は、何も実行されない!

結論、こうすれば良い

home.service.ts
import { AlertController } from '@ionic/angular';
import { Plugins, NetworkStatus } from '@capacitor/core';
const { Network } = Plugins;

@Component({
  selector: 'app-home',
  templateUrl: 'home.page.html',
  styleUrls: ['home.page.scss'],
})
export class HomePage {
  status: NetworkStatus;
  constructor(private alertCtrl: AlertController) { }


  // ネット接続の状態を取得
  async getStatus() {
    try {
      this.status = await Network.getStatus();
      if (this.status.connected === false) {
        this.networkAlert();
      }
    } catch (error) {
      console.log('エラー ' + error);
    }
  }

 // ネット接続の確認を開始
  startListenNetwork() {
    this.listener = Network.addListener('networkStatusChange', (status) => {
      if (!status.connected) {
        this.networkAlert();
      }
    });
  }

// ネット接続の確認を終了
  stopListenNetwork() {
    if (this.listener) {
      this.listener.remove();
    }
  }

  async networkAlert() {
    const alert = await this.alertCtrl.create({
      header: '接続エラー',
      message: 'インターネット接続がオフラインです。。インターネット接続を確認して下さい!',
      buttons: ['OK']
    });
    await alert.present();
  }
}
home.page.ts
constructor(
    private homeService: HomeService,
  ) 

ionViewDidEnter() {
    this.homeService.getStatus();
    this.homeService.startListenNetwork();
  }

  ionViewWillLeave() {
    this.homeService.stopListenNetwork();
  }

どこが変わったかというとgetStatus()のところ。

これで、もしアプリ起動時にオフラインならアラートがでる。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1