ç§ã¯çŸåšRN0.28.0ãå®è¡ããŠããŸã...
NetInfo.isConnected.fetch().then(isConnected => {
// variable isConnected is always false
});
PRãããŸãããiOSçšã«ã³ãŒãã£ã³ã°ã§ããŸããã
ããã¯RN0.29.0ã§ãåçŸã§ããŸãã 以åã¯0.26.2ã§å®è¡ããŠããŸããããåé¡ãªãåäœããŸããã ãœãŒã¹ãããã«ãããŠãããã°ããŠã¿ãŸãã
+1
以åã«åãåé¡ãå ±åããŸããïŒ https ïŒ
ç°¡åãªåé¿çã¯ãã€ãã³ããã³ãã©ãŒNetInfo.isConnected.addEventListener('change', Function.prototype)
ãè¿œå ããããšã§ãã
+1ãšNetInfo.fetchïŒïŒãdoneïŒïŒã®åãåé¡-åžžã«unknown
è¿ããŸã
ç§ã¯ããããã®ããã«è§£æ±ºããŸããïŒ
componentDidMount() {
const dispatchConnected = isConnected => this.props.dispatch(setIsConnected(isConnected));
NetInfo.isConnected.fetch().then().done(() => {
NetInfo.isConnected.addEventListener('change', dispatchConnected);
});
}
+1
ãã®ãã°ã¯0.29.2ã§èŠã€ãããŸããã
ãã®ãã°ã¯0.28ã§èŠã€ãããŸãã
0.30.0ããŸã æ©èœããªã
é¢é£ããã³ãŒãã¯å€æŽãããŠããªãããããŸã æ©èœããŠããªãããšã¯çã«ããªã£ãŠããŸãã
以åã«ããã§ãã°ãå ±åããããšã«æ³šæããŠãã ããïŒ //github.com/facebook/react-native/issues/8469ããã§ã¯ãåå ã®è©³çŽ°ãšãµã³ãã«ã³ãŒããæ·»ä»ãããŠããŸãã ãã®ããããããéãããŸãŸã«ããŠããã®ã¯çã«ããªã£ãŠãããšæããŸãã
æªè§£æ±ºã®RNã®åé¡ã®æ°ã¯æ¥ã å¢å ããŠãããããç§ãã¡ã®åœ¹å²ãæãããå¯èœãªå Žåã¯çµ±åããããšãéèŠã§ãã
ç§ã¯ä»æ¥åãåé¡ã«æ°ã¥ããŸãã
0.30.0ããŒãžã§ã³ã䜿çšããŠããŸããããã®ãšã©ãŒãèŠã€ãããŸããã
åãåé¡ã§ããã RN @ 0.30.0ã䜿çšããŠããŸããããã§ããã¯åžžã«äžæãè¿ããŸãã
ãã ãã代ããã«addEventListenerã䜿çšã§ããŸãã
NetInfo.addEventListener('change',
(networkType)=> {
this.setState({networkType})
}
)
ã®ä»£ããã«ïŒ
NetInfo.fetch().done(
(networkType)=> {
this.setState({networkType})
}
)
@ facebook-github-botã®ãã°
0.31ã§ãã®åé¡ãçºçããŠããŸãããä¿®æ£ãããŸããïŒ
0.32ãšåã
@knowbodyã¹ããããã¯ã©ã®ããã«æ©èœããŸããïŒ ã¯ã©ã¹ã§ããŸãã¯ã°ããŒãã«é¢æ°ãšããŠããŸãã¯ä»ã®äœããšããŠsetIsConnectedã¡ãœãããå®çŸ©ããå¿
èŠããããŸããïŒ ãªããªããå®éã«ã¯Can't find variable: setIsConnected
ãšèšã£ããšã©ãŒããããŸã
@florentsorelãªã®ã§ãç§ã®ãããžã§ã¯ãã§ã¯ç¶æ
管çã«reduxã䜿çšãã setIsConnected
ã¯ã¢ã¯ã·ã§ã³ã¯ãªãšãŒã¿ãŒã§ããããã¯æ¬¡ã®ããã«ãªããŸãã
actions/network.js
export const setIsConnected = (isConnected) => ({
type: 'SET_IS_CONNECTED',
isConnected
});
ãããŠãç§ã¯network
ã¬ãã¥ãŒãµãŒãæã£ãŠããŸãïŒ
reducers/network.js
const initialState = {
isConnected: true
};
const network = (state = initialState, action) => {
switch (action.type) {
case 'SET_IS_CONNECTED':
return {
isConnected: action.isConnected
};
default:
return state;
}
}
export default network;
+1
v0.34.1ã§ãã®åé¡ãçºçããŠããŸã
ç·šéïŒv0.35.0ã«æŽæ°ããåãåé¡ã
v0.35.0ã§ãåã
v0.36.0ã§ãåãåé¡ãçºçããŠããŸã
@knowbodyã¹ããããã¯0.36ã§åäœããŸã
@Dnld ïŒ @Ehespã¯ã
åºã«ãªãã³ãŒãã¯å®éã«ã¯å€æŽãããŠããªãã®ã§ãããããä¿®æ£ããããŠãããšãããé©ããŸãã
ãã®å€æŽã®åæ©ã¯ãã¢ããªã±ãŒã·ã§ã³ã³ãŒãããããã¯ãŒã¯ã¹ããŒã¿ã¹ã®ç£èŠã«é¢å¿ãããå Žåã«ã®ã¿ããããã¯ãŒã¯ã¹ããŒã¿ã¹ãç£èŠãããã€ãã£ãã®æ©æ¢°ãèšå®ããããšã§ãããšæããããããä¿®æ£ãåŒçšç¬Šã§å²ã¿ãŸãã
ã¢ããªã¯ãå°éå¯èœæ§ã®ãã§ãã¯ãã€ãã³ããªã¹ããŒããé¢å¿ãç»é²ããŸãã
ãã®æç¹ã§ã¯ããããæãŸããåäœã§ããããã«æããããããããããããã¥ã¡ã³ãã®å€æŽãå¿
èŠã§ãã NetInfo.isConnected
ã¯ããŒã«å€ãè¿ããããç¶æ
ãäžæã§ãããã€ãã³ããªã¹ããŒãè¿œå ãããŸã§ç¶æ
ãå€æŽãããªãããšãè¡šããŸããã ãŸãã¯ãé¢æ°ãå€æŽããŠnull
ãŸãã¯ããŒã«å€ãè¿ãããšãã§ããŸãã
ç§ã®ã¢ããªã«ã¯ã @ knowbodyãæçš¿ãããã®ãšéåžžã«ãã䌌ãã³ãŒãããããŸãã ãã ããèµ·åæã«ã¯åœ¹ã«ç«ããªãã®ã§ã NetInfo.isConnected.fetch()
ã¯ãŸã£ããåŒã³åºããŸããã
æ¥ç¶ããããšä»®å®ãããªã¹ããŒãè¿œå ãããšãæ¥ç¶ç¶æ ãäžæã§ãªããªã£ããšãã«ç¶æ ãæŽæ°ãããŸãã
0.34.1ããŸã æ©èœããªã
RN0.37.0ãšåãåé¡
@ xing-zhengäœããã®çç±ã§ãã³ã³ãã¥ãŒã¿ãŒã®Wi-Fiããªãã«ããŠãããœãªã¥ãŒã·ã§ã³ã¯ãMOBILEãã®ã¿ãè¿ããŸããããã¯ãšãã¥ã¬ãŒã¿ãŒã«åæ ãããŸãã çç±ã¯äœã§ããïŒ
componentDidMount() {
NetInfo.addEventListener('change',
(networkType)=> {
this.setState({connected: networkType})
}
)
}
RN0.38.0ãšåãåé¡
0.39ã§ãåã
addEventListenerãœãªã¥ãŒã·ã§ã³ãè©ŠããŠã¿ããšãNetInfoã¯1ã€ãŸãã¯2ã€ã®æ¥ç¶å€æŽã®ã¿ãæ€åºããŸãã ããšãã°ãæ¥ç¶ãéå§ããŠãããããããããšãNetinfoã¯ãããæ€åºããŸãããåæ¥ç¶ãããšãæ¥ç¶ãããŠããããšãæ€åºã§ããŸããã NetInfoã¯ãåé¿çããã£ãŠããç§ã®ã¢ããªã§éåžžã«å€ãã®èª€æ€ç¥ãçæããŠããŸãã ä»ã®èª°ããåãããšãçµéšããŠããŸããïŒ
ããã解決ããã«ã¯ãå¥åŠãªåé¿çãäœæããå¿ èŠããããŸããã äœããã®çç±ã§ãäžæ¹ã®æ¹æ³ã¯Androidã§æ©èœããããäžæ¹ã®æ¹æ³ã¯iOSã§æ©èœããŸãã ããã«å¯Ÿããä¿®æ£ã¯çŽ æŽãããã§ãããã
function handleFirstConnectivityChange(isConnected) {
if (!sConnected) {
// do action
}
NetInfo.isConnected.removeEventListener('change', handleFirstConnectivityChange);
}
if (Platform.OS === 'ios') {
NetInfo.isConnected.addEventListener('change', handleFirstConnectivityChange);
} else {
NetInfo.isConnected.fetch().then(isConnected => {
if (!sConnected) {
// do action
}
}
@ robertodias180ããã¯æ©èœããŠããŸããã
RN- 0.39 +
é¢æ°handleFirstConnectivityChangeïŒisConnectedïŒ{
ifïŒïŒsConnectedïŒ{
//ã¢ã¯ã·ã§ã³ãå®è¡ããŸã
}
NetInfo.isConnected.removeEventListenerïŒ 'change'ãhandleFirstConnectivityChangeïŒ;
}
ifïŒPlatform.OS === 'ios'ïŒ{
NetInfo.isConnected.addEventListenerïŒ 'change'ãhandleFirstConnectivityChangeïŒ;
} ããããªããš {
NetInfo.isConnected.fetchïŒïŒãthenïŒisConnected => {
ifïŒïŒsConnectedïŒ{
//ã¢ã¯ã·ã§ã³ãå®è¡ããŸã
}
}
æäŒã£ãŠãããŸãããã
@imbudhirajaã©ã®ãã©ãããã©ãŒã ã§ãåäœããŸããïŒ
ããããã©ã®ãã©ãããã©ãŒã ã§ãæ©èœããŠããŸããã§ãã
ããããšã
ãããã·ã¥ããã£ã©ãžã£
2017幎1æ3æ¥ååŸ8æ12åããRobertoDiasã [email protected]ã¯æ¬¡ã®ããã«æžããŠããŸãã
@imbudhiraja https://github.com/imbudhirajaã¯ã
ãã©ãããã©ãŒã ïŒâ
ããªããèšåãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/facebook/react-native/issues/8615#issuecomment-270128504 ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AVTjXHSe8OcVq8fQ5XVk8hh9XXHfHFVZks5rOl5ggaJpZM4JGaBc
ã
ããã«ã¯2ã€ã®åé¡ãããããã§ãã
isConnected.fetch
ã¯iOSã§å£ããŠããããã§ã-ä¿®æ£ã¯ç°¡åãªã¯ãã§ãã @ robertodias180ã«ãã£ãŠæçš¿ãããåé¿çã¯ãå¥ã®ã¡ãœããã§ãã€ãã£ãã³ãŒããã¯ãšãªãããããçã«ããªã£ãŠããŸããRN 0.38.1以åãiOSã·ãã¥ã¬ãŒã¿ã
componentDidMount() {
NetInfo.isConnected.fetch().then(this._handleConnectionInfoChange);
NetInfo.isConnected.addEventListener(
'change',
this._handleConnectionInfoChange
);
}
componentWillUnmount(){
NetInfo.isConnected.removeEventListener(
'change',
this._handleConnectionInfoChange
);
}
_handleConnectionInfoChange(isConnected){
this.props.connectActions.netInfo(isConnected);
dbg('connected', isConnected);
};
æåã®NetInfo.isConnected.fetch().then(this._handleConnectionInfoChange);
ã¯ãçŸåšã®æ¥ç¶ã¹ããŒã¿ã¹ãæ£ããååŸããŸãã ãã ããæ¥ç¶ã¹ããŒã¿ã¹ãžã®ãã®åŸã®å€æŽã¯ãeventListenerã«ãã£ãŠãã£ããã£ãããŸããã
ç§ã¯çŸåšãå€ãã®RNããŒãžã§ã³ã§ãã®åé¡ãæ±ããŠããŸãã
@imbudhirajaç§ã¯çµå±ãããã¯ãªãŒã³ãªããã®ã®ã³ãŒããå€æŽããŸããã ãããã¯ãŒã¯æ¥ç¶ã®çŸåšã®ç¶æ
ãæã€ãŠãŒãã£ãªãã£ããããŸãã ããã¯äž¡æ¹ã®ãã©ãããã©ãŒã ã§æ©èœããŠããŸãã ã¢ããªãéãããinitializeConnection
ãå¿
èŠãªãšãã¯isConnected
ã§ãã ã¢ããªãéãããšãã«NetInfo
ãæ¥ç¶ã¹ããŒã¿ã¹ãååŸãããŸã§ã«æéããããå Žåãããããšã«æ³šæããŠãã ããïŒç¹ã«Androidã®å ŽåïŒã hasConnection !== null
ãŸã§å»¶æããŸããã ããã圹ã«ç«ãŠã°å¹žã
const hasConnection = null;
export const initializeConnection = () => {
const dispatchConnected = isConnected => { hasConnection = isConnected; };
NetInfo.isConnected.fetch().then().done(() => {
NetInfo.isConnected.addEventListener('change', dispatchConnected);
});
}
export const isConnected = () => {
NetInfo.fetch().done((reach) => {
console.log('Initial: ' + reach);
});
return hasConnection;
}
åæ§ã®ããšãè©Šã¿ãŸããããæ¥ç¶ãïŒã·ãã¥ã¬ãŒã¿ãŒã§ïŒæ»ã£ããšãã«eventListenerããããæ€åºããªããšããç¶æ³ã«ééãç¶ããŸãã
ã€ã³ã¿ãŒãããã«æ¥ç¶ããã«ã¢ããªããªããŒã=>æ€åº
ã€ã³ã¿ãŒãããããªã³ã«æ»ã=>æ€åºãããªã
ã€ã³ã¿ãŒãããæ¥ç¶ã§ã¢ããªããªããŒã=>æ€åº
ã€ã³ã¿ãŒãããããªãã«ãã=>æ€åºããã
ã€ã³ã¿ãŒãããããªã³ã«æ»ã=>æ€åºãããªã
<strong i="11">@autobind</strong>
export default class ConnectionToast extends React.Component {
constructor(props){
super(props);
}
componentDidMount() {
NetInfo.isConnected.fetch()
.then(this._handleConnectionInfoChange)
.done(this._addListener);
}
componentWillUnmount(){
this._removeListener();
}
_addListener(){
NetInfo.isConnected.addEventListener(
'change',
this._handleConnectionInfoChange
);
}
_removeListener(){
NetInfo.isConnected.removeEventListener(
'change',
this._handleConnectionInfoChange
);
}
_handleConnectionInfoChange(isConnected){
this.props.connectActions.netInfo(isConnected);
dbg('connected', isConnected);
// this._removeListener();
// this._addListener();
}
[...]
å€æŽã®ãã³ã«ãªã¹ããŒãåé€ããŠå床远å ããããšããŸããããåã³ã¯ãããŸããã§ããã
@mschipperheyn @knowbodyã以åã«æçš¿ããã¢ãããŒãã䜿çšããŠããŸã£ããåãåé¡ãçºçããŠããŸãã
ããã¥ã¡ã³ãã¯ã handleFirstConnectivityChange
ä»ããæåã®å€æŽã®ã¿ãåŠçããããšã瀺åããŠããŸãã ããã¯æ£ããã§ããããããšããã®åŸã®ãã¹ãŠã®å€æŽãæ€åºããå¿
èŠããããŸããïŒ
ããªããæã£ãŠããããšã確èªããŠãã ãã
Androidãããã§ã¹ããã¡ã€ã«ã«èšå®ããŸãã ããã¯ç§ãã€ãŸããããã
RN0.41.0ãšåãåé¡
iOSã§ã¯ããªã¹ããŒãè¿œå ãããSCNetworkReachabilitySetCallbackãç»é²ããŸããã 確ãã«æ©èœããŠããŸããã èšèšç®çã¯äœã§ããïŒ
0.41.2ãšåã
@djohnkirbyã³ã¡ã³ãã«æçš¿ãã
AndroidManifest.xmlã«è¿œå ããè¡ã¯æ¬¡ã®ãšããã§ãã
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
0.39.2ïŒåãåé¡ã NetInfo fetch
çµæã¯åžžã«false
ã§ããã ãã§ãªããã¢ããªã®èµ·ååŸããã«æ¥ç¶ã¹ããŒã¿ã¹ã®å€åãæ€åºããŸã
0.42.0ïŒåãåé¡ã ç§ã¯ããã§ç§ã®åé¡ã«ã€ããŠã説æããŸããïŒ https ïŒ
iOSãšmacOSSierraã§ãã¹ãããŠããŸãã
æŽæ°ïŒç§ã®åé¡ã¯ãã·ãã¥ã¬ãŒã¿ãŒã§ã®ãã¹ããåå ã§ãããå®éã®ããã€ã¹ã§ã¯ããã¹ãŠãæ©èœããŠããŸãã äžèšã®ãªã³ã¯ã§åçããŸããã
ç§ã¯åãåé¡ãæ±ããŠããŸã:(
NetInfo.isConnected.fetch().then((isConnected) => { console.log(isConnected); });
// always return false
ã¢ããªãã·ãã¥ã¬ãŒã¿ãŒã§å®è¡ãããŠãããã©ããã誰ããç¥ãããå ŽåïŒ http ïŒ
ãã°ã§ã¯ãããŸããã ãã€ãã£ãã¢ãžã¥ãŒã«RCTNetInfo
ã¯RCTEventEmitter
ãµãã¯ã©ã¹ã§ããããã startObserving
ã¡ãœãããããªã¬ãŒãããªãã¶ãŒããŒãè¿œå ããå¿
èŠããããŸãã
ã¢ããªã®èµ·åããã»ã¹ã§ãä»»æã®ãªãã¶ãŒããŒãNetInfoã«è¿œå ãããšã fetch
é¢æ°ãåŒã³åºãããšãã§ããŸãïŒNetInfo.isConnectedã¯å®éã«ãã§ããé¢æ°ãåŒã³åºããŸãïŒ
@ robertodias180ã®ææ¡ã«ãããšãç§ã¯isConnectedã®ã©ãããŒãæãã€ããã
ããŸãããããã§ããããã¹ãŠã®å Žåã«ããŸãããã®ã ããã
export function isNetworkConnected() {
if (Platform.OS === 'ios') {
return new Promise(resolve => {
const handleFirstConnectivityChangeIOS = isConnected => {
NetInfo.isConnected.removeEventListener('change', handleFirstConnectivityChangeIOS);
resolve(isConnected);
};
NetInfo.isConnected.addEventListener('change', handleFirstConnectivityChangeIOS);
});
}
return NetInfo.isConnected.fetch();
}
åãåé¡ã 0.40
åãåé¡ãçºçããŠããŸã
0.42.3-ã·ãã¥ã¬ãŒã¿ãšå®éã®ããã€ã¹ã®äž¡æ¹ã§iOSãå®è¡ãããšåãåé¡ãçºçããŸããã @ Knight704ã®ãœãªã¥ãŒã·ã§ã³ã䜿çšãããšãåé¡ã軜æžãããŸããã
0.42.3ã§ãåã
0.43.1ã§ãåã
0.40ã§ãããèŠã
ãã®åé¡ããããŸãã ã©ã³ãã ã«åäœãããããšãã§ããåŸãåäœãåæ¢ããŸããã
@ Knight704ã®ãœãªã¥ãŒã·ã§ã³ã¯æåã¯æ©èœããŸããããäœããã®çç±ã§ãã¢ãŒãã«ã®ããã²ãŒã¿ãŒã®2çªç®ã®ã¬ã€ã€ãŒå ããäžåºŠåŒã³åºããšãã¢ãŒãã«ãéããåŸã§ãé¢æ°ãæ©èœããªããªããŸãïŒhandleFirstConnectivityChangeIOSã¯åŒã³åºãããŸããïŒã éåžžã«å¥åŠãªåäœã§ãããããæ©èœããªãçç±ããã³ãŒãããŒã¹å ã§NetInfoã§ããŸãæ©èœããŠããªããã®ã§ãããã©ããã¯ããããŸããã
ç§ã¯äœãæ¬ ããŠããŸããïŒ
this.state = {
isConnected: null,
}
componentDidMount() {
console.log('first one ', this.state.isConnected)
NetInfo.isConnected.addEventListener(
'change',
this._handleConnectivityChange
);
console.log('second ', this.state.isConnected)
NetInfo.isConnected.fetch().done(
(isConnected) => {this.setState({isConnected});}
);
console.log('third ', this.state.isConnected)
}
componentWillUnmount(){
console.log('did it unmount ', this.state.isConnected)
NetInfo.isConnected.removeEventListener(
'change',
this._handleConnectionInfoChange
);
console.log('it did unmount ', this.state.isConnected)
}
_handleConnectivityChange = (isConnected) => {
this.setState({
isConnected,
});
};
render() {
console.log('fourth ', this.state.isConnected)
if(this.state.isConnected === false){
const connectAlert = (Alert.alert(
'ERROR',
'No connection bro!',
[
{text: 'OK'},
]
))
}
return ()
}
ã ããç§ããããå®è¡ãããšãããã¯ç§ã«æã ãåžžã«ã§ã¯ãªãèŠåãäžããŸã....
ãããã¯ãæ¥ç¶ãããå Žåã§ãã¢ã©ãŒãã衚瀺ãããšãã«è¿ãããã³ã³ãœãŒã«ãã°ã§ãã
'fourth ', null
'first one ', null
'second ', null
'third ', null
'fourth ', false
'fourth ', true
ç§ã¯ã@ Knight704ããä¿®æ£ããã°ã©ã ã䜿çšããå Žå@SteffeyDevãšåãåé¡ãçºçããŠhttps://github.com/facebook/react-native/issues/8615#issuecommentã»ãšãã©ã®å Žå-287977178ãããã¯ç§ãæã£ãŠããããããšããããŸãåäœããŸãããã·ã¥ãŸãã¯ããããããã¢ãŒãã«ã¯ã change
ã€ãã³ãããã§ã«çºè¡ãããŠãããšæ³å®ããŠãããããåãã³ãŒãã解決ãããããšã¯ãããŸããã
ãããã®æ¡ä»¶äžã§ã NetInfo.fetch()
ãunknown
ç¶æ
ãè¿ãããšã«æ°ä»ããŸããïŒããã«ããã false
äžã§NetInfo.isConnected.fetch()
false
ãããªã¬ãŒããããããåé¿ã§ããŸãããå
ã®åé¿çã«æ¬¡ã®å€æŽãå ããŸãã
export function isNetworkConnected() {
return NetInfo.fetch().then(reachability => {
if (reachability === 'unknown') {
return new Promise(resolve => {
const handleFirstConnectivityChangeIOS = isConnected => {
NetInfo.isConnected.removeEventListener('change', handleFirstConnectivityChangeIOS);
resolve(isConnected);
};
NetInfo.isConnected.addEventListener('change', handleFirstConnectivityChangeIOS);
});
}
reachability = reachability.toLowerCase();
return (reachability !== 'none' && reachability !== 'unknown');
});
}
Androidã¯UNKNOWN
è¿ãããã unknown
æ¡ä»¶ã¯iOSã§ã®ã¿ããªã¬ãŒãããŸãã ããã¯ãã¹ããŒã¿ã¹ãè¿ãåã«å°æåã«ããçç±ã§ããããŸããããã¯ã NetInfo.isConnected.fetch
ããã®æ¢åã®åäœãå€ããå°ãªããä¿æããã¯ãã ããã§ãã
0.44ã§ãåã
æåãNetInfoã¯1ãµã€ã¯ã«ïŒãªã³->ãªãïŒåŸã«ã®ã¿ãããã¯ãŒã¯ã¹ããŒã¿ã¹ã®å€æŽãè¿ãããããšã«æ°ã¥ããŸããã ã·ãã¥ã¬ãŒã¿ãŒã§ã®ã¿ãã®åé¡ãããããšãå€æããŸããã å®éã®ããã€ã¹ã§ã¯ãè€æ°ã®æ¥ç¶/åæãµã€ã¯ã«ã§ãã³ãŒã«ããã¯ãé©åã«èµ·åããŸãã
ãµã³ãã«ã³ãŒã
NetInfo.addEventListener( 'change', this._onConnectivityChange );
_onConnectivityChange(connType) {
// Do something with connType...
}
ãã®åé¡ã¯ãã°ããã®éç§ãæ©ãŸããç§ã¯éæ¥çã«RNãªãã©ã€ã³/ãªã³ã©ã€ã³æ€åºã«çŠç¹ãåœãŠãå°ããªãŠãŒãã£ãªãã£ã©ã€ãã©ãªãäœæããŸãããããã«ã¯å žåçãªReactãã¿ãŒã³ãšreduxãšã®çŽ æŽãããçµ±åãå«ãŸããŠããŸãã
AndroidãšiOSã®äž¡æ¹ã®å®éã®ããã€ã¹ã§æ£ããåäœããŸãã ãã ããiOSã·ãã¥ã¬ãŒã¿ãŒã§ãªã¹ããŒãããªã¬ãŒããããæ¥ç¶ç¶æ ãäžæŽåã«ãªãå Žåãããããšã確èªããããšãã§ããŸãã @ knight704ãš@Ignigena ïŒãããããããšããïŒã«ãã£ãŠææ¡ããããœãªã¥ãŒã·ã§ã³ã¯ãŸã è©ŠããŠããŸããããæéãããã°ããã«ãã¹ãããäºå®ã§ãã
ãããã®ãœãªã¥ãŒã·ã§ã³ãé åã®ããã«æ©èœããããšã確èªãã人ãå¢ããå Žåã«ããPRã¯å€§æè¿ã§ãïŒ
ä¿®æ£ããŠãã ããã
ãããããã«ä¿®æ£ãããå¯èœæ§ãäœãå Žåã¯ãå°ãªããšãããã¥ã¡ã³ããæŽæ°ããŠããããiOSã§æ©èœããªãããšã瀺ãããšãã§ããŸããïŒ
@ jpb12 PRãäœæããŠãããããããŒãžããããã©ããã確èªãã䟡å€ããããããããŸããã ãããå¿ããããŠããããã«èŠããã®ã§ãå®éã«ãããããç®ã«èŠããããã«ãããããããŸããã
ç§ã¯AndroidããŒãžã§ã³ã§ãã®åé¡ã«çŽé¢ããŠããŸãã ããã¯ã°ã©ãŠã³ãã«ç§»åããŠãã©ã¢ã°ã©ãŠã³ãã«æ»ãããšã«é¢é£ããŠããããã§ãã æ®å¿µãªããããã®åé¡ã確å®ã«åçŸããããšã¯ã§ããŸããããããã€ãã®ããã¯ã°ã©ãŠã³ã/ãã©ã¢ã°ã©ãŠã³ãé·ç§»ã®åŸã«ç¢ºå®ã«çºçããŸãã ç¹ã«ãã®æã«æ¥ç¶ç¶æ ãå€æŽãããå Žå
ãããèµ·ãã£ããšã
NetInfo.isConnected.fetch().then(isConnected => {...})
åžžã«false
è¿ããŸã
NetInfo.fetch().then((reach) => {...})
åžžã«NONE
è¿ããŸã
ãªã¹ããŒã®è¿œå /åé€ã¯åœ¹ã«ç«ã¡ãŸãã
å®éã®æ¥ç¶ã¹ããŒã¿ã¹ãæ€åºããããã®ä¿¡é Œã§ããæ¹æ³ãããã°éåžžã«ãããããã§ã
Wi-Fiã«æ¥ç¶ãããšisConnectedãtrueãè¿ãããïŒãããŸã§ã®ãšããåé¡ãããŸããïŒãå¥åŠãªåäœã«çŽé¢ããŠããŸãããã¢ãã ãã€ã³ã¿ãŒãããã«å°éããªãå Žåã§ããisConnectedã¯trueã§ãã ãããã¯ãŒã¯æ¥ç¶ã ãã§ãªããã€ã³ã¿ãŒãããæ¥ç¶ãå¹æçã«ãã§ãã¯ããæ¹æ³ãããããããŸããã äœãæ¡ã¯ïŒ ããããšã
@kodatechãã®ã¢ãžã¥ãŒã«ã¯ããã®åé¡ã®è§£æ±ºã«åœ¹ç«ã€ã¯ãã§ãã æè¿ãããžã§ã¯ãã§äœ¿çšããŸãããã httpsïŒ//github.com/rauliyohmc/react-native-offlineã匷ããå§ãã
@craigcolesã«æè¬ã
@ Knight704ããããšã仲éã
@craigcolesç§ãåŸãããšãã§ããå®çšçãªã³ãŒãã¯ãããŸããïŒ
@nmfzone衚瀺ã§ãããã®ã¯ãããŸãããã Readmeã«ã¯ããããã®ã³ãŒãäŸããããŸãð
ç§ã¯æ¬¡ã®ããã«Netinfoãªã¹ããŒã€ãã³ãã䜿çšããŠããŸããäž¡æ¹ã®ãã©ãããã©ãŒã ã§ããŸãæ©èœããŸãã
"react-native"ïŒ "0.43.4"ã
componentDidMount(){
NetInfo.isConnected.addEventListener('change', this._handleConnectivityChange);
}
componentWillUnmount(){
NetInfo.isConnected.removeEventListener('change', this._handleConnectivityChange);
}
_handleConnectivityChange = (isConnected) => {
console.warn(isConnected);
}
@ sumesh1993ç§ã®çµéšãããAndroidã¢ããªãïŒããã¯ã°ã©ãŠã³ãã§ïŒæå°åãããŠããå Žåã 'change'
ã€ãã³ãã«åå¿ããŸããã Galaxy Note 5ãAndroid7.0ã§ãã¹ãæžã¿
äžèšã§æšå¥šãããã¢ãžã¥ãŒã«https://github.com/rauliyohmc/react-native-offlineã¯ã https://google.com
ç¶ç¶çã«pingããŸãã åäœããŸããããã®ãã°ãä¿®æ£ããããšæããŸã
Androidã¢ããªã¯ããã¯ã°ã©ãŠã³ãã§äžæããããããããã¯çã«ããªã£ãŠããŸãã ã€ãã³ããåä¿¡ããã«ã¯ãã¢ããªãäžæåæ¢ãããŠããéãå®è¡ãç¶ç¶ãããµãŒãã¹ãäœæããå¿ èŠããããŸãã
ãŸãã¯ã onResumeãã³ãã©ãŒãã¢ããªã«è¿œå ããŠããªãã©ã€ã³ã¹ããŒã¿ã¹ãã¯ãšãªããããšãã§ããŸãã ããã¯ããµãŒãã¹ãäœæããã³ç®¡çãããããç°¡åãªã¯ãã§ãã
@ alsh76ç§ã«ãšã£ãŠã¯ãã¢ããªãããã¯ã°ã©ãŠã³ãã«ãããšãã«æ©èœããŸããããã«ãã¿ã¹ã¯ã¡ãã¥ãŒããã¢ããªã
ããŒã ç»é¢ãèµ·åãããã³ã«æ¬¡ã®é¢æ°ãåŒã³åºãããšã§è§£æ±ºããŸããã
if(Platform.OS === 'android'){
NetInfo.isConnected.fetch().then(isConnected => {
if(!isConnected)
return;
//Do something
});
}
Androidä»®æ³ããã€ã¹ã§åãåé¡ã«ééããŸããã ããããåé¡ã¯ãæ°æ¥åã¯åé¡ãªããiOSããã€ã¹ãšãšãã¥ã¬ãŒã¿ãŒã§ãåé¡ããªãã£ããšããããšã§ãã 誰ãããããã¯ãŒã¯æ¥ç¶ã¹ããŒã¿ã¹ãååŸããããã®å®å®ããæ£ããæ¹æ³ãèŠã€ããŸãããïŒ
iOSã§ç§ã®ããã«ããªãã¯ãããŠããã@ sumesh1993ã«æè¬ããŸãïŒ
@igorarkhipenko圌ã®ææ¡ãè©ŠããŸãããïŒ
ããã«ã¡ã¯ããªãã¯èš±å¯ãè¿œå ããŸãããäŸãã°ã¢ã³ããã€ãã¯è¿œå ããå¿
èŠããããŸã
AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
NetInfo.fetchãéæšå¥šã«ãªã£ãããã @ Knight704ãš@Ignigenaã«ãããœãªã¥ãŒã·ã§ã³ã®ã»ãã®å°ãã®æŽæ°ã ããã¯ç§ã«ãšã£ãŠããªãã¯ã§ããïŒ
`` `
const isNetworkConnected =ïŒïŒ=> {
NetInfo.getConnectionInfoïŒïŒãthenïŒreachability => {ãè¿ã
ifïŒreachability.type === 'äžæ'ïŒ{
æ°ããPromiseïŒresolve => {ãè¿ã
const handleFirstConnectivityChangeIOS = isConnected => {
NetInfo.isConnected.removeEventListenerïŒ 'connectionChange'ãhandleFirstConnectivityChangeIOSïŒ;
resolveïŒisConnectedïŒ;
};
NetInfo.isConnected.addEventListenerïŒ 'connectionChange'ãhandleFirstConnectivityChangeIOSïŒ;
}ïŒ;
}
returnïŒreachability.typeïŒ== 'none' && Reachability.typeïŒ== 'unknown'ïŒ
}ïŒ;
}
Imho NetInfo.isConnected.fetch()
ã¯éèŠãªæ©èœã§ãããã§ããã ãæ©ãä¿®æ£ããå¿
èŠããããŸãã
@javache @sahrens @davidaurelio @janicduplessis @hramos @shergin @rigdernããã«ã¿ã€ã ã©ã€ã³ã¯ãããŸããïŒ
THXïŒ
@pensierinmusicaããã¯ã³ãã¥ããã£äž»å°ã®ãããžã§ã¯ããªã®ã§ãè¯ãPRãããããšæããŸãã
@shergin React Nativeã¯ãFacebookã«ãã£ãŠå éšçã«äœæãä¿å®ã䜿çšãããŠããããã®çç±ãã
cc @rigdern
RNã³ã¢ã³ãŒãã®å€ãã¯ãã³ãã¥ããã£ã«ãã£ãŠäœæããã³ä¿å®ãããŠããŸãã
ãŸããFacebookã§äœ¿çšãããŠããªãæ©èœãå€æ°ããããããããã«åªå é äœãä»ããŠãäœæè ããã°/ãŠãŒã¹ã±ãŒã¹ã®ä¿®æ£ã確èªã§ããã³ãã¥ããã£PRãåªå ããããšã¯å°é£ã§ãã
ãŸããiOSãšã®react0.47.0ã§åé¡ãçºçããŠããŸãã
@pensierinmusicaãã®åé¡ã¯ééããªãåªå ãããã¹ãã§ãã .isConnectedïŒïŒããããŒã«å€ãè¿ãããšã¯ã©ãã»ã©é£ããã§ããããïŒ
ããŠããããããªãã¯ãå®è¡ããã¯ãã®ããã«äœ¿ããåé¿çã§ãïŒç§ã«ãšã£ãŠã¯ããã§ãïŒã ã¢ã¯ãã£ãã«ãªãããšãããã£ãŠãããµã€ãã«httpãªã¯ãšã¹ããéä¿¡ããå¿çãè©äŸ¡ããŸãã
ç®±ããåºããŠããã«æ©èœããã¬ããåæåããŸããã https://github.com/JamesDorrian/NetInfoCheckConnection/tree/master
泚ïŒhttpAddresså€æ°ãhttps://www.galwaydaily.comããå¥ã®å€æ°ïŒããããgoogle.comïŒã«å€æŽããŠ
@pensierinmusica @anujsinghwd
@JamesDorrianããããšããç§ã¯ãgoogle.comãã«pingãå®è¡ããŠãåæ§ã®ããšãããããšã«ãªããŸããã
ã¹ããããã¯æ¬¡ã®ãšããã§ãã
// /utilities/connectivity.js
import { Alert } from 'react-native';
export function warning () {
Alert.alert(
'No connection',
'Mmm... you seem to be offline'
);
};
export async function checkAsync () {
try {
const res = await fetch('https://google.com');
if (res.status === 200) return true;
} catch (e) {
warning();
}
return false;
};
ããã§ããããã¯äžæçãªåé¿çã§ããã NetInfo.isConnected
ã¯ã§ããã ãæ©ãä¿®æ£ããå¿
èŠããããšæããŸãã
let isConnected = false;
Platform.OS === "ios"
? (isConnected = await fetch("https://www.google.com"))
: (isConnected = await NetInfo.isConnected.fetch());
Platform.OS === "ios" && (isConnected.status = 200)
? (isConnected = true)
: (isConnected = false);
console.log(isConnected); //Result
ãã®åé¡ã«é¢ãã+1
ã³ã¡ã³ãã§åæ¢ã§ããŸããïŒããããªã¢ã¯ã·ã§ã³ã®çšéã§ãã
iosïŒ
æåã®ãªã¯ãšã¹ãã ãµãŒããŒãã¯ã©ãã·ã¥ããå Žåãé»è©±ã«ã¯Wi-FiããããŸãã
NetInfo.isConnected.fetchïŒïŒãthenïŒïŒisConnectedïŒ=> {åžžã«false}
0.49.3ã
@kddcããªãã®ãœãªã¥ãŒã·ã§ã³ã¯éçºã§ããŸãæ©èœããŠããããã§ãð
@fuatsengul Xcodeãããžã§ã¯ãã®ã©ã€ãã©ãªãšããŠReachabilityãããžã§ã¯ããè¿œå ããŸããããããã§ãåé¡ã¯è§£æ±ºããŠããŸãããåé¡ã解決ããããã«ä»ã«äœãããå¿ èŠãããããç°¡åã«èª¬æããŠãã ããã ããããšãã
åé¡ã¯ãã§ããAPIã§ã®ã¿çºçããããã§ãããã ããã€ãã³ããªã¹ããŒã®è¿œå ã¯iOS
ãŸãããã ããaddEventListenerã¯Androidã§ã¯æ©èœããªãããããã§ããAPIã䜿çšããå¿
èŠããããŸã:)
ãããäž¡æ¹ã®äžçã§æ©èœããããã«ããããã®ç§ã®ã¹ããããã§ãïŒ
function handleFirstConnectivityChange(isConnected) {
console.log('Then, is ' + (isConnected ? 'online' : 'offline'))
NetInfo.isConnected.removeEventListener(
'connectionChange',
handleFirstConnectivityChange,
)
}
if (Platform.OS === 'android') {
NetInfo.isConnected.fetch().then(isConnected => {
console.log('First, is ' + (isConnected ? 'online' : 'offline'))
})
} else {
NetInfo.isConnected.addEventListener(
'connectionChange',
handleFirstConnectivityChange,
)
}
æ¥ç¶ãããŠããŠããIOSã§ãªãã©ã€ã³ã§è¡šç€ºãããŸã
RN-0.50
NetInfo.isConnected.fetch().then(isConnected => {
console.log('First, is ' + (isConnected ? 'online' : 'offline'));
});
@kddcåé¿çãããããšãã
iOSããã€ã¹ã§åé¡ãçºçããŠããŸããã·ããªãªã¯æ¬¡ã®ãšããã§ãã
æ©å
ã¢ãŒããå€æŽããŠããéãããã¯ã°ã©ãŠã³ãã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããŠããéäžã
ã¢ããªãåèµ·åããã ãã§ãæ°ãããããã¯ãŒã¯æ¥ç¶ãããã£ããããããŸãã
+1
+1
ä¿®æ£ããŠãããŠããããšã@ alburdette619
ã ãããããã¯ä¿®æ£ãããããŒãžã§ã³0.54ã§å©çšå¯èœã«ãªããŸããïŒ
@ assafb81ããããããŸãããã©ããã圌ãã¯ãããå éšã«çéžãããŠããããã§ãããããŠç§ã¯ãã®ããã®ããã»ã¹ãäœã§ããã
ãã«ãªã¯ãšã¹ããããŒãžããããšãFacebookã¯æåã«ãããå éšã®React Nativeãªããžããªã«çµã¿èŸŒã¿ãç¹ã«è¿œå ã®ãã¹ããå®è¡ããŸãã ãããæåãããšãå€æŽã¯GitHubãªããžããªã«ãšã¯ã¹ããŒããããŸãã
ãã«ãªã¯ãšã¹ãã®ã¢ã¯ãã£ããã£ã確èªãããšã
æ¯èŒã®ããã«ãå€ãã³ããããèŠããšãããã€ãã®ãã©ã³ãã«è¡šç€ºãããŠããããšãããããŸãã
æ¯æåãã«ãããã¹ã¿ãŒãã«åºã¥ããŠæ°ãããªãªãŒã¹åè£ãã©ã³ããäœæãããŸãã ãããã£ãŠãå€æŽã¯3æã®åãã«æ¬¡ã®ãªãªãŒã¹åè£ã«ãªãå¯èœæ§ããããŸãã React Nativeã®ãªãªãŒã¹ã¹ã±ãžã¥ãŒã«ã®è©³çŽ°ã«ã€ããŠã¯ããã®ããã°æçš¿ãã芧ãã ããã
ã¢ãã ã³ã¡ã©
Microsoft Corp.
誰ããææ°ã®RN54ã§ãã®åé¡ã確èªããŸãããïŒ ç§ã«ãšã£ãŠã¯ãiOSãšAndroidã§ã¯åžžã«ãtrueããè¿ãããŸãããå®å šã«æ£åžžã«æ©èœããŸãã ãã®åé¡ãèŠãŠãã人ã¯ä»ã«ããŸããïŒ
0.53åžžã«false .. @deepaksasken ..androidã®ã³ãŒãã®ã¿ãç¡å¹ã«ããå¿ èŠãããããã§ã..å€ãã®ãã°ã«å¯ŸããŠ0.54ã䜿çšã§ããŸããã
@ alien3d iOSã§ç¡å¹ã«ããAndroidã§ã®ã¿ä¿æãããšããæå³ã§ããïŒ Androidã§ã¯åäœããŸããïŒ
@afilpç§ã¯
if (Platform.OS === "ios") {
isConnected = await fetch("https://www.google.com");
if (isConnected) { }
} else {
NetInfo.isConnected.fetch().done(
(isConnected) => {
if (isConnected) { }
}
å®å®ããŠãããšèŠãªãåã«ããŸã å€ãã®ãã¹ããå¿ èŠã§ãã çŸåšã¯0.530ã䜿çšããŠããŸã
@ assafb81æ©å ã¢ãŒãã®åé¡ã®è§£æ±ºçãèŠã€ããŸãããïŒ 0.53ã§ããªãã®ãœãªã¥ãŒã·ã§ã³ã䜿çšããŠããŸãã
@aflipããŒã¿ãæå¹ã«ãªã£ãŠããããããã±ãŒãžããŸã ãªãå ŽåãisConnectedtrueãè¿ããŸãã ããªãã¯ããã解決ããããšããŸãããïŒ
removeEventListenerãããã®ã¯ãªãã§ããã ã¢ããªã¯åžžã«ãããã¯ãŒã¯ã®å€æŽããªãã¹ã³ããã¹ãã§ã¯ãããŸããã 誰ã§ãïŒ
äžèšã®ãŠãŒã¶ãŒãšåãåé¡ããããŸãã NetInfoã€ãã³ããªã¹ããŒã¯éåžžã«ä¿¡é Œæ§ãäœãããã§ãã äžèšã®åé¿çã®å€ããè©ŠããŸããããå®å®ããçµæã¯åŸãããŸããã§ããã ä»ã®ãšããããŠãŒã¶ãŒãã€ã³ã¿ãŒãããã«æ¥ç¶ããŠããããšã確èªããããã«ã httpsïŒ//google.comãŸãã¯èªåã®ãµãŒããŒäžã®ãã«ã¹ãšã³ããã€ã³ããååŸããããšã«äŸåããŸãã
@MichaelPintosããã¯ç§ã®ããã«åããŸããããããšãã
RN 0.54.2
OSïŒiOS
åãåé¡ãåžžã«äžæ
RNã0.55.3ã«ã¢ããã°ã¬ãŒããããš
ç§ã¯ãã®ã³ãŒãã䜿çšããŠããŸããæåã«äžæãè¿ããããããããã¯æ©èœããŸã
NetInfo.getConnectionInfo()
.then()
.done(() => {
switch (connectionInfo.type) {
case 'none':
Alert.alert('aa', 'none');
break;
case 'wifi':
Alert.alert('aa', 'wifi');
break;
case 'cellular':
if (connectionInfo.effectiveType !== 'unknown') {
Alert.alert('aa', `cellular ${connectionInfo.effectiveType}`);
} else {
Alert.alert('aa', 'cellular unknown');
}
break;
case 'unknown':
Alert.alert('aa', 'unknown');
break;
default:
Alert.alert('aa', 'default');
break;
}
});
});
ã§ã¯ãã¡ãã£ãšããããªãã¯ãããŸãããã
NetInfo.getConnectionInfo()
.then()
.done(() => {
NetInfo.getConnectionInfo().then(connectionInfo => {
switch (connectionInfo.type) {
case 'none':
Alert.alert('aa', 'none');
break;
case 'wifi':
Alert.alert('aa', 'wifi');
break;
case 'cellular':
if (connectionInfo.effectiveType !== 'unknown') {
Alert.alert('aa', `cellular ${connectionInfo.effectiveType}`);
} else {
Alert.alert('aa', 'cellular unknown');
}
break;
case 'unknown':
Alert.alert('aa', 'unknown');
break;
default:
Alert.alert('aa', 'default');
break;
}
});
});
ãããç§ã®è§£æ±ºçã§ãã å ¬åŒã®è§£æ±ºçãæåŸ ããŠãã ããã
ç¹ã«å€æŽãã°ããããä¿®æ£ããããšã«ãªã£ãŠãããšèšã£ãã®ã§55ã«ã¢ããã°ã¬ãŒãããŸãã-ãŸã å£ããŠããŸãïŒ0.55.3ïŒã
@ yuyao110120ãšåæ§ã®ãœãªã¥ãŒã·ã§ã³ã䜿çšããŠããããæ©èœãããããšãã§ã
NetInfo.isConnected.fetch().then(() => {
NetInfo.isConnected.fetch().then(isConnected =>
// isConnected is now the correct value
});
});
NetInfo
ä¿¡çšããªããªã£ãïŒreact-native 0.53.3ïŒ
ããã¯ç§ãã€ã³ã¿ãŒããããããããšã確èªããããã«è¡ãããšã§ãïŒ
async function handleConnectivityChange(status) {
const { type } = status;
let probablyHasInternet;
try {
const googleCall = await fetch(
'https://google.com', {
headers: {
'Cache-Control': 'no-cache, no-store, must-revalidate',
Pragma: 'no-cache',
Expires: 0,
},
});
probablyHasInternet = googleCall.status === 200;
} catch (e) {
probablyHasInternet = false;
}
console.log(`@@ isConnected: ${probablyHasInternet}`);
}
NetInfo.getConnectionInfo().then(handleConnectivityChange);
NetInfo.addEventListener('connectionChange', handleConnectivityChange);
@SudoPlzç§ã¯èªåã®ã¢ããªã§ããªãåãããšãããŸããããåé¡ãªãåäœããŸãã ãããã NetInfo
APIã¯ä¿®æ£ããå¿
èŠããããŸãã
@SudoPlz fetch
ãAndroidã§ãªã¯ãšã¹ãããã£ãã·ã¥ããŠããããšã«æ°ã¥ããŸããã ãããé²ãããã«ãããã€ãã®ããããŒãä»ããå¿
èŠããããŸãã
const googleRequest = await fetch('https://www.google.com', {
headers: {
'Cache-Control': 'no-cache, no-store, must-revalidate',
'Pragma': 'no-cache',
'Expires': 0
}
});
@AbdallaMohamedãç¥ãããŠãããŠ
@kylevdrãšåãããã«ã確å®ã«æ©èœããŸãããã2åç®ã®åŒã³åºãã®åã«å°ããªã¿ã€ã ã¢ãŠããè¿œå ãããšãããã¯ã解é€ããçŽåŸã«2åç®ã®åå²ã§åæãããã¡ãã€ãã«åœ¹ç«ã€ããã§ãã
ç·šéïŒfwiwããã¯55.3ã§æ©èœããŸããã55.4ã§ã¯æ©èœããŸãã
æåã®æ¥ç¶ã€ãã³ããªã¹ããŒãè¿œå ãããšãæåã®åŒã³åºãã§NetInfo.getConnectionInfo()
ãšNetInfo.isConnected.fetch()
ãæ£ããæ©èœããŸãã
const onInitialNetConnection = isConnected => {
console.log(`Is initially connected: ${isConnected}`);
NetInfo.isConnected.removeEventListener(
onInitialNetConnection
);
};
NetInfo.isConnected.addEventListener(
'connectionChange',
onInitialNetConnection
);
// both now work on the first call.
await NetInfo.getConnectionInfo();
await NetInfo.isConnected.fetch();
ããããšãïŒ8469
å¿ ããã®ãã¡ã€ã«ãã€ã³ããŒãããŠãã ãããã€ã³ããŒãããªããšå®è¡ãããŸããã
PS fetch
ã䜿çšããŠããå Žåã¯ã method: 'HEAD'
ã䜿çšããŠãéä¿¡ãããããŒã¿ã®éãæžãããŸãã
次ã®ã·ããªãªã§iPhone8ïŒReact Native 0.55.3ãiOS 11.3.1ïŒã§ãããã°ã¢ãŒãã§ã¢ããªãå®è¡ãããšãäžèšã®ãœãªã¥ãŒã·ã§ã³ã¯ããããæ©èœããŸããã§ãããã¢ããªãéããŠãã¢ãã€ã«ããŒã¿ãšWi-Fiããªãã«ããŠèµ·åããŸãã
äžèšã®ãã¹ãŠã®ãœãªã¥ãŒã·ã§ã³ã§ã¯ãåŸç¶ã®ã€ãã³ãã¯ãã¹ãŠå€±ãããŸãïŒ @SudoPlzã®åçãé€ãïŒã ããã€ã¹ã§ãªãªãŒã¹ã¢ãŒããŸãã¯ã·ãã¥ã¬ãŒã¿ãŒã§ãããã°ã¢ãŒãã§ã®ã¿ã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããšã NetInfo
ã€ãã³ããããªã¬ãŒãããŸããã
@nlindroosã§ã¯ããªãªãŒã¹ããŒãžã§ã³ãå®è¡ããããã€ã¹ã§NetInfo
æ£åžžã«æ©èœããããšãå®éã«ç¢ºèªããŸããïŒ
ç©çiOSããã€ã¹ã§ãªãã©ã€ã³ã¢ãŒãã§ã¢ããªã±ãŒã·ã§ã³ããèµ·åãããç¹å®ã®ã±ãŒã¹ã§ã¯ããªãªãŒã¹ã¢ãŒãã§å®è¡ããããšãã NetInfo
ã€ãã³ããããªã¬ãŒããããã®å¯äžã®æå¹ãªãœãªã¥ãŒã·ã§ã³NetInfo
åé¡ã®äžè¬çãªè§£æ±ºçãšããŠãããä¿èšŒããã®ã«ååãªãé¢é£ãããã¹ãŠã®ã·ããªãªããã¹ãããŠããŸããã
@woodpavãš@AbdallaMohamedãç§ã®ããã«åãããœãªã¥ãŒã·ã§ã³ã®çµã¿åãããšèšããŸã
RNããŒãžã§ã³0.55.4ã䜿çšããŠããŸã
ã€ã³ã¿ãŒãããæ¥ç¶ã確èªããããã«GoogleãµãŒããŒã«é »ç¹ã«pingãå®è¡ããå¿ èŠããããŸãð
ç§ã¯iPhone8-11.3ã·ãã¥ã¬ãŒã¿ãŒã䜿çšããŠãããRNããŒãžã§ã³0.55.4ã§ã¯NetInfo.isConnected.fetchïŒïŒãthenïŒisConnected => console.logïŒ 'isConnected'ãisConnectedïŒïŒ
åžžã«falseãè¿ããŸãã ããã¯é»è©±ã§ã®å¶äœã§ãåé¡ã§ãã ã¢ãã€ã«ããŒã¿ãšwifiã®ããªãšãŒã·ã§ã³ãè©ŠããŠã¿ãŸããã
RNããŒãžã§ã³0.55.3ã«æ»ããšãåã³æ©èœããŠããããã§ãã
@ octopitus ã@ martinentelect
ããã¯ç§ã®ã³ãŒãã§ããç§ã¯reactNativeããŒãžã§ã³0.55.4ã䜿çšããŠããã NetInfo
ãä¿®æ£ããããŸã§ã¯è³¢æã§åé¿çããããŸãã
ç§ã®api.jsãã¡ã€ã«ã«ã¯ãã®ã³ãŒãããããŸã
import { NetInfo } from 'react-native';
import { url } from '[AppName]/src/config';
export const onInitialNetConnection = () => {
NetInfo.isConnected.removeEventListener(onInitialNetConnection);
};
const getDataById = async (dataId) => {
// both now work on the first call.
await NetInfo.getConnectionInfo();
const isConnected = await NetInfo.isConnected.fetch();
if (!isConnected) {
throw new Error('networkError');
}
const response = await fetch(`${url}${dataId}`, {
headers: {
'Cache-Control': 'no-cache, no-store, must-revalidate',
Pragma: 'no-cache',
Expires: 0,
},
});
if (response.ok) {
return response.json();
}
throw new Error('invalidCode');
};
export default getDataById;
App.js
ãã¡ã€ã«ïŒã¢ããªã±ãŒã·ã§ã³ãžã®ãšã³ããªãã€ã³ãïŒã«ãã€ãã³ããªã¹ããŒãè¿œå ããŸãã
NetInfo.isConnected.addEventListener(
'connectionChange',
onInitialNetConnection,
);
@ assafb81ããããšãããããŸãïŒ ããã¯ç§ã®ãŠãŒã¹ã±ãŒã¹ã«åœ¹ç«ã¡ãŸããã
ç§ã®å Žåãã€ãã³ããªã¹ããŒã¯iOSã§å®å
šã«æ©èœããŸãããAndroidã§ã¯ãŸã£ããæ©èœããŸããïŒå°ãªããšããšãã¥ã¬ãŒã¿ãŒã§ã¯ïŒã
NetInfoã䜿çšããŠãããšãã«Androidã®ãªã¹ããŒã«åé¿çã¯ãããŸããïŒ
NetInfo.isConnected.addEventListener(
"connectionChange",
this.handleConnectionChange
);
䜿çšãã
this.count = 0
handleConnectivityChange(isConnected) {
//for iOS
this.count++
console.log(isConnected + "isConnected")
if(this.count > 1){
console.log(isConnected + "this is the right value")
}
@tannera ã
ãšãã¥ã¬ãŒã¿ã§ã¯ãªãå®éã®Androidããã€ã¹ã確èªããŠãã ãã
0.55.4
ããã¯ãŸã ãã°ã§ãããæ¬çªç°å¢ã§ãããããŸããð¢
0.56ã§ã¯ãŸã ä¿®æ£ãããŠããŸãã
@ SudoPlz0.57ãã£ã¹ã«ãã·ã§ã³ã¹ã¬ãããžã®ã³ã¡ã³ãããããã¯å€ãšããŠé衚瀺ã«ããŸããã ãåç¥ã®ããã«ããªããžããªã«ã¯äœçŸãã®æªè§£æ±ºã®åé¡ããããŸããããã®ã¹ã¬ããã¯0.57ãªãªãŒã¹ãåºãããšã«çŠç¹ãåœãŠãŠããŸãã
ã¯ããŒãºããããã®ã¹ã¬ããã¯ãã¡ã³ããã«ã¯ã»ãšãã©èŠããŸãããæœåšçãªä¿®æ£ãè¡ãããŠãã6ãæåŸã誰ãæ°ããåé¡ãéããŠããªãããšã«é©ããŠããŸãã ããããã¹ã¿ãŒã§ä¿®æ£ããŠã»ãããã®ã§ããå Žåã¯ã詳现ãèšèŒããæ°ããåé¡ãéããŠãã ãããçæ³çã«ã¯ãPRãéä¿¡ããŠãã ããã
ããã¯æå°éã®åçŸå¯èœãªäŸïŒiOSããã€ã¹ã§ãã¹ãæžã¿ïŒã§ãã @ woodpavã®ã³ãŒãããŸãïŒ
æãåèã«ãªãã³ã¡ã³ã
@ robertodias180ã®ææ¡ã«ãããšãç§ã¯isConnectedã®ã©ãããŒãæãã€ããã
ããŸãããããã§ããããã¹ãŠã®å Žåã«ããŸãããã®ã ããã