ネットワーク接続ステータスを監視するためにアプリケーションが実行されているときは、常にプロバイダを用意する必要があります。Ionic 3のプロバイダーのグローバルインスタンス
したがって、tutorialに私のapp.module.ts
ファイルにクラスを追加して、グローバルインスタンスにしました。だから私が理解する限り、サービスは、アプリケーションがそれがルートコンポーネント(したがってapp.module.ts
)を初期化するときにアップする必要があります。
問題:プロバイダは、アプリケーションの特定のページがそれをインポートして使用するまで呼び出されません。前述のチュートリアルprovider
で
は、そのようにインポートされます:
ionicBootstrap(MyApp, [TestProvider]);
残念ながら、私のために動作しないこと。そのpostは、この全く新しいチュートリアルが時代遅れだと言っています。
質問:どのように私は、彼らがアプリケーションを起動した後つのインスタンスとして利用可能であることIonic 3
でproviders
を使用することができますか?
マイapp.module.ts:
import { NetworkConnectionProvider } from '../providers/networkconnection/networkconnection';
// (...)
@NgModule({
declarations: [
MyApp,
// (...)
],
imports: [
BrowserModule,
HttpModule,
IonicModule.forRoot(MyApp),
ionicGalleryModal.GalleryModalModule,
],
bootstrap: [
IonicApp
],
entryComponents: [
MyApp,
// (...)
],
providers: [
// (...)
NetworkConnectionProvider
]
})
export class AppModule {}
マイプロバイダ:
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
import { Network } from '@ionic-native/network';
@Injectable()
export class NetworkConnectionProvider {
private TAG = "NetworkConnectionProvider ";
private isConnectedToInternet: Boolean;
constructor(
public http: Http,
public network: Network
) {
this.isConnectedToInternet = true;
let disconnectSubscription = this.network.onDisconnect().subscribe(() => {
console.log(this.TAG + 'network was disconnected.');
this.isConnectedToInternet = false;
});
// watch network for a connection
let connectSubscription = this.network.onConnect().subscribe(() => {
console.log('network connected!');
this.isConnectedToInternet = true;
// We just got a connection but we need to wait briefly
// before we determine the connection type. Might need to wait.
// prior to doing any api requests as well.
setTimeout(() => {
if (this.network.type === 'wifi') {
console.log(this.TAG + 'wifi connection available');
}
}, 3000);
});
console.log('Hello NetworkConnectionProvider');
}
public subscribeOnConnect() {
return this.network.onConnect();
}
public isConnected(): Boolean{
return this.isConnectedToInternet;
}
public getConnectionType(): string {
return this.network.type;
}
}