reactネイティブiOSでインターネット接続を確認する必要があります
私は次のコードを試してみます:
NetInfo.isConnected.fetch().then(isConnected => {
console.log(isConnected);
});
それはreact native Androidアプリケーションで正常に機能しますが、react native iOSでは常に 'false'を返します。
react native's github に現在これに関する未解決の問題があります。
ここでディスカッションを見ることができますが、簡単に言うと、fetch
は常にfalse
を返しますが、接続変更イベントをリッスンすることで回避できます。
そこからのコード例:
componentDidMount() {
NetInfo.isConnected.addEventListener('change', this.handleConnectionChange);
NetInfo.isConnected.fetch().done(
(isConnected) => { this.setState({ status: isConnected }); }
);
}
componentWillUnmount() {
NetInfo.isConnected.removeEventListener('change', this.handleConnectionChange);
}
handleConnectionChange = (isConnected) => {
this.setState({ status: isConnected });
console.log(`is connected: ${this.state.status}`);
}
編集:
この問題は 作業中 のようです。また、change
イベントはconnectionChange
に名前が変更されました。更新された回避策コード:
componentDidMount() {
NetInfo.isConnected.addEventListener('connectionChange', this.handleConnectionChange);
NetInfo.isConnected.fetch().done(
(isConnected) => { this.setState({ status: isConnected }); }
);
}
componentWillUnmount() {
NetInfo.isConnected.removeEventListener('connectionChange', this.handleConnectionChange);
}
handleConnectionChange = (isConnected) => {
this.setState({ status: isConnected });
console.log(`is connected: ${this.state.status}`);
}
更新:
change
イベントタイプは廃止されました。 connectionChange
イベントタイプの使用を検討してください。