рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ RN 0.28.0 рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ ...
NetInfo.isConnected.fetch().then(isConnected => {
// variable isConnected is always false
});
рдореИрдВ рдПрдХ PR рдХрд░реВрдБрдЧрд╛ рд▓реЗрдХрд┐рди IOS рдХреЗ рд▓рд┐рдП рдХреЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
рдореИрдВ рдЖрд░рдПрди 0.29.0 рдХреЗ рд╕рд╛рде рднреА рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВ рдкрд╣рд▓реЗ 0.26.2 рдкрд░ рдЪрд▓ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЗрд╕рдиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ред рд╕реНрд░реЛрдд рдФрд░ рдбрд┐рдмрдЧ рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред
+1
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рднреА рдЗрд╕реА рдореБрджреНрджреЗ рдХреА рд╕реВрдЪрдирд╛ рджреА рд╣реИ: https://github.com/facebook/react-native/issues/8469
рддреНрд╡рд░рд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдПрдХ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ NetInfo.isConnected.addEventListener('change', Function.prototype)
рдЬреЛрдбрд╝рдирд╛ рд╣реИ
+1 рдФрд░ NetInfo.fetch () рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджрд╛ред () - рд╣рдореЗрд╢рд╛ 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 рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ
рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдпрд╣рд╛рдВ рджреА рдереА: https://github.com/facebook/react-native/issues/8469 рдЬрд╣рд╛рдВ рдпрд╣ рдХрд╛рд░рдг рдХрд╛ рд╡рд┐рд╡рд░рдг рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдирдореВрдирд╛ рдХреЛрдб рд╕рдВрд▓рдЧреНрди рд╣реИред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдмрдВрдж рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рдЦреБрд▓реЗ рдЖрд░рдПрди рдореБрджреНрджреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рддрд┐рджрд┐рди рдмрдврд╝рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХрд░рдирд╛ рдФрд░ рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реЛ, рдЙрд╕реЗ рд╕рдореЗрдХрд┐рдд рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдореИрдВрдиреЗ рдЖрдЬ рд╡рд╣реА рдореБрджреНрджрд╛ рдиреЛрдЯ рдХрд┐рдпрд╛
рдореИрдВ 0.30.0 рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рднреА рдорд┐рд▓реАред
рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ, рдореИрдВ [email protected] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рднреНрд░реВрдг рд╣рдореЗрд╢рд╛ рдЕрдЬреНрдЮрд╛рдд рд▓реМрдЯрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕рдХреЗ рдмрдЬрд╛рдп addEventListener рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
NetInfo.addEventListener('change',
(networkType)=> {
this.setState({networkType})
}
)
рдХреЗ рдмрдЬрд╛рдп:
NetInfo.fetch().done(
(networkType)=> {
this.setState({networkType})
}
)
@ рдлреЗрд╕рдмреБрдХ-рдЬреАрдердм-рдмреЙрдЯ рдмрдЧ
рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ 0.31 рдкрд░ рд░рдЦ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
0.32 рддрдХ
@knowbody рдЖрдкрдХрд╛ рд╕реНрдирд┐рдкреЗрдЯ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдореБрдЭреЗ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдпрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдорд╛рд░реЛрд╣ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреАрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ рдЬрд┐рд╕рдиреЗ Can't find variable: setIsConnected
@florentsorel рддреЛ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдореИрдВ рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди рдФрд░ setIsConnected
рд▓рд┐рдП рд░рд┐рдбрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдореЗрд░рд╛ рдПрдХреНрд╢рди рдХреНрд░рд┐рдПрдЯрд░ рд╣реИ, рдЬреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
actions/network.js
export const setIsConnected = (isConnected) => ({
type: 'SET_IS_CONNECTED',
isConnected
});
рдФрд░ рдлрд┐рд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ network
reducer рд╣реИ:
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 рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
@ рдбрдирд▓реНрдб : @ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ v.036 рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрдк рдФрд░ 5 рдЕрдиреНрдп рдирд╣реАрдВ? рдХреНрдпрд╛ рдпрд╣ рдЕрдВрддрддрдГ рд╣рд▓ рдирд╣реАрдВ рд╣реИ? рдореБрдЭреЗ 0.33 рдХреЗ рд╕рд╛рде рднреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ, рдФрд░ рдореИрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рджред
рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреЛрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ "рдирд┐рд╢реНрдЪрд┐рдд" рд╣реИред
рдореИрдВрдиреЗ рдЙрджреНрдзрд░рдгреЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рдгрд╛ рдХреЗрд╡рд▓ рдореВрд▓ рдорд╢реАрдирд░реА рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИред
рдРрдкреНрд╕ рдПрдХ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреЛ рдкреБрди: рд╕рдХреНрд░рд┐рдпрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ ред
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдПрдХ рдкреНрд░рд▓реЗрдЦрди рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред NetInfo.isConnected
рдПрдХ рдмреВрд▓рд┐рдпрди рджреЗрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╡реНрдпрдХреНрдд рди рд╣реЛ рдХрд┐ рд░рд╛рдЬреНрдп рдЕрдЬреНрдЮрд╛рдд рд╣реИ рдФрд░ рдпрд╣ рддрдм рддрдХ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ рдЬрдм рддрдХ рдЖрдк рдПрдХ рдШрдЯрдирд╛ рд╢реНрд░реЛрддрд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ null
рдпрд╛ рдмреВрд▓рд┐рдпрди рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдореЗрд░реЗ рдРрдкреНрд╕ рдореЗрдВ рдХреЛрдб рд╣реИ рдЬреЛ @knowbody рдкреЛрд╕реНрдЯ рдХреЗ рд╕рдорд╛рди рд╣реИред рдореИрдВ NetInfo.isConnected.fetch()
рдмрд┐рд▓рдХреБрд▓ рднреА рдирд╣реАрдВ рдХрд╣рддрд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдмреЗрдХрд╛рд░ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рд╣реИ, рд╢реНрд░реЛрддрд╛ рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рддрдм рд░рд╛рдЬреНрдп рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рд░рд╛рдЬреНрдп рдЕрдм рдЕрдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИред
0.34.1 рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ
рдЖрд░рдПрди 0.37.0 рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджрд╛
@ xing-zheng рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ 'рдореЛрдмрд╛рдЗрд▓' рджреЗрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬрдм рдореИрдВ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╡рд╛рдИрдлрд╛рдИ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реВрдВ, рдЬреЛ рдореЗрд░реЗ рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдХреНрдпреЛрдВ?
componentDidMount() {
NetInfo.addEventListener('change',
(networkType)=> {
this.setState({connected: networkType})
}
)
}
рдЖрд░рдПрди 0.38.0 рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджрд╛
рд╡рд╣реА 0.39 рдореЗрдВ рднреА
рдЬрдм рдореИрдВ addEventListener рд╕рдорд╛рдзрд╛рди 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 рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдЖрд░рдПрди- 0.39+
рд╕рдорд╛рд░реЛрд╣ рд╕рдВрднрд╛рд▓
рдЕрдЧрд░ (sConnected) {
// рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддреЗ рд╣реИрдВ
}
NetInfo.isConnected.removeEventListener ('рдкрд░рд┐рд╡рд░реНрддрди', рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ)
}
рдЕрдЧрд░ (Platform.OS === 'ios') {
NetInfo.isConnected.addEventListener ('рдкрд░рд┐рд╡рд░реНрддрди', рд╣реИрдВрдбрдлрд╝рд░реНрд╕реНрдЯрдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдЪреЗрдВрдЬ);
} рдЕрдиреНрдп {
NetInfo.isConnected.fetch ()ред рдлрд┐рд░ (isConnected => {
рдЕрдЧрд░ (sConnected) {
// рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддреЗ рд╣реИрдВ
}
}
рдХреНрдпрд╛ рддреБрдо рдХреГрдкреНрдпрд╛ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реЛ?
@imbudhiraja рдпрд╣ рдХрд┐рд╕реА рднреА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдирд╣реАрдВ, рдпрд╣ рдХрд┐рд╕реА рднреА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛
рдзрдиреНрдпрд╡рд╛рдж
рдордиреАрд╖ рдмреБрдзрд┐рд░рдЬрд╛
3 рдЬрдирд╡рд░реА, 2017 8:12 рдмрдЬреЗ, "рд░реЙрдмрд░реНрдЯреЛ рдбрд╛рдпрд╕" рд╕реВрдЪрдирд╛рдПрдВ @github.com рдиреЗ рд▓рд┐рдЦрд╛:
@imbudhiraja https://github.com/imbudhiraja рдпрд╣ рдХрд┐рд╕реА рднреА рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ?-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/facebook/react-native/issues/8615#issuecomment-270128284 ,
рдпрд╛ рдзрд╛рдЧрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AVTjXHSe8OcVq8fQ5XVk8hh9XXHfHFVZks5rOl5ggaJpZM4JGaBc
ред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ:
isConnected.fetch
iOS рдкрд░ рдЯреВрдЯрдиреЗ рд▓рдЧрддрд╛ рд╣реИ - рдлрд┐рдХреНрд╕ рд╕реАрдзрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред @ Robertodias180 рджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЙрдард╛рддрд╛ рд╣реИредрдЖрд░рдПрди 0.38.1 рдФрд░ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдИрдУрдПрд╕ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ред
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);
рд╕рд╣реА рд░реВрдк рд╕реЗ рд╡рд░реНрддрдорд╛рди рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХрдиреЗрдХреНрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрд╛рдж рдХреЗ рдмрджрд▓рд╛рд╡ рдХреЛ рдЗрд╡реЗрдВрдЯрд▓рд┐рд╕реНрдЯ рджреНрд╡рд╛рд░рд╛ рдХреИрдкреНрдЪрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВ рдЕрдм рдХрдИ рдЖрд░рдПрди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд░рд╣рд╛ рд╣реИред
@ рд╡рд┐рдореБрдзрд┐рд░рд╛рдЬ рдиреЗ рдХреБрдЫ "рдХреНрд▓реАрдирд░" рдХреЗ рд▓рд┐рдП рдХреЛрдб рдмрджрд▓ рджрд┐рдпрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЙрдкрдпреЛрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╣реИред рдпрд╣ рджреЛрдиреЛрдВ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдЬрдм рдРрдк рдЦреБрд▓рддрд╛ рд╣реИ рддрдм рдореИрдВ initializeConnection
рд▓реЗрддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдЬрдм рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддреЛ isConnected
ред рдХреГрдкрдпрд╛ рдРрд╕рд╛ рди рдХрд░реЗрдВ рдХрд┐ рдРрдк рдХреЗ рдЦреБрд▓рдиреЗ рдкрд░ NetInfo
рдХреЛ рдХрдиреЗрдХреНрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдорд┐рд▓рдиреЗ рддрдХ рдХреБрдЫ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ (рд╡рд┐рд╢реЗрд╖рдХрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░)ред рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл 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;
}
рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рднрд╛рдЧрддрд╛ рд░рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЬрдм рдХрдиреЗрдХреНрд╢рди рд▓реМрдЯрддрд╛ рд╣реИ (рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░) рддреЛ рдЗрд╡реЗрдВрдЯрд▓рд┐рд╕реНрдЯ рдЙрд╕реЗ рдЗрд╕рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рддрд╛ред
рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд┐рдирд╛ рдкреБрдирдГ рд▓реЛрдб рдХрд░реЗрдВ рдРрдк => рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛
рдЗрдВрдЯрд░рдиреЗрдЯ рд╡рд╛рдкрд╕ рдЪрд╛рд▓реВ рдХрд░реЗрдВ => рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛
рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдкреБрдирдГ рд▓реЛрдб рдХрд░реЗрдВ рдРрдк => рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛
рдЗрдВрдЯрд░рдиреЗрдЯ рдмрдВрдж рдХрд░реЗрдВ => рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛
рдЗрдВрдЯрд░рдиреЗрдЯ рд╡рд╛рдкрд╕ рдЪрд╛рд▓реВ рдХрд░реЗрдВ => рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛
<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 рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВред рдЗрд╕рдиреЗ рдореБрдЭреЗ рдЙрд▓рдЭрд╛ рджрд┐рдпрд╛ред
RN 0.41.0 рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджрд╛
iOS рдореЗрдВ, рд╢реНрд░реЛрддрд╛ рдХреЛ рди рдЬреЛрдбрд╝реЗрдВ рдФрд░ SCNetworkReachabilitySetCallback рдХреЛ рдкрдВрдЬреАрдХреГрдд рди рдХрд░реЗрдВред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдбрд┐рдЬрд╛рдЗрди рдЙрджреНрджреЗрд╢реНрдп рдХреНрдпрд╛ рд╣реИ?
рд╡рд╣реА 0.41.2
@djohnkirby рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА XML рдХреЛ рдпрд╛рдж рдХрд░ рд░рд╣реА рд╣реИ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЗ - рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЖрдкрдХреЗ рд▓рд┐рдП AndroidManifest.xml рдЬреЛрдбрд╝рдиреЗ рдХреА рд▓рд╛рдЗрди рд╣реИ:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
0.39.2: рдПрдХ рд╣реА рдореБрджреНрджрд╛ред рди рдХреЗрд╡рд▓ рдиреЗрдЯрдЗрдВрдлреЛ fetch
рдкрд░рд┐рдгрд╛рдо рд╣рдореЗрд╢рд╛ false
, рд▓реЗрдХрд┐рди рдпрд╣ рдРрдк рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдПрдХ рдЬрд▓реНрджреА рд╕реНрдерд┐рддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рднреА рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ
0.42.0: рдПрдХ рд╣реА рдореБрджреНрджрд╛ред рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рднреА рд╡рд░реНрдгрди рдХрд┐рдпрд╛: https://stackoverflow.com/questions/42642034/check-for-internet-connection-returns-wrong-results
рдореИрдВ iOS рдФрд░ macOS Sierra рдкрд░ рдЯреЗрд╕реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдЕрджреНрдпрддрди : рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдХрд╛рд░рдг рдереА, рдПрдХ рдЕрд╕рд▓реА рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рд▓рд┐рдВрдХ рдореЗрдВ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдореЗрд░реЗ рд╕рд╛рде рднреА рд╡рд╣реА рджрд┐рдХреНрдХрдд рд╣реИ :(
NetInfo.isConnected.fetch().then((isConnected) => { console.log(isConnected); });
// always return false
рдпрджрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ рдРрдк рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ: http://stackoverflow.com/a/34732015/552669
рдпрд╣ рдмрдЧ рдирд╣реАрдВ рд╣реИред рджреЗрд╢реА рдореЙрдбреНрдпреВрд▓ RCTNetInfo
рдХрд╛ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рд╣реИ RCTEventEmitter
рддреЛ рд╣рдо рдХреЛ рдЧрддрд┐ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, startObserving
рд╡рд┐рдзрд┐ред
рдЕрдкрдиреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, NetInfo рдореЗрдВ рдПрдХ рдордирдорд╛рдиреА рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдЬреЛрдбрд╝реЗрдВ, рдлрд┐рд░ рдЖрдк fetch
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред (NetInfo.isConnected рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ)ред
@ Robertodias180 рдХреЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдореИрдВ
рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдпрд╣ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛
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 - рдореИрдВрдиреЗ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рджреЛрдиреЛрдВ рдкрд░ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХреЛ рдЖрдИрдУрдПрд╕ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ред @ рдирд╛рдЗрдЯ 704 рд╕реЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рд╡рд╣реА реж.рекреи.рей рдкрд░
рд╡рд╣реА 0.43.1 рдкрд░
рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП 0.40 рдкрд░
рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рднреАред рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рддреЛ рдЙрд╕рдиреЗ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред
@ рдирд╛рдЗрдЯ704 рдХреЗ рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдХрд╛рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдПрдХ рдмрд╛рд░ рдПрдХ рдореЛрдбрд▓ рдореЗрдВ рдирд╛рд╡рд┐рдХ рдХреА рджреВрд╕рд░реА рдкрд░рдд рдХреЗ рдЕрдВрджрд░ рд╕реЗ рдПрдХ рдмрд╛рд░ рдХреЙрд▓ рдХрд┐рдпрд╛, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ (рд╣реИрдВрдбрд▓рдлрд░реНрдиреНрд╕рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреАChangeIOS рдХреЛ рдХрднреА рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ), рднрд▓реЗ рд╣реА рдореИрдВ рдореЙрдбрд▓ рдмрдВрдж рдХрд░ рджреВрдВред рдмрд╣реБрдд рд╣реА рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░, рдХреЛрдИ рд╕реБрд░рд╛рдЧ рдирд╣реАрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдЕрдЧрд░ рдпрд╣ рдореЗрд░реЗ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдХреБрдЫ рдФрд░ рд╣реИ рдЬреЛ рдиреЗрдЯрдЗрдиреНрдлреЛ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдореИрдВ рдХреНрдпрд╛ рдЦреЛ рд░рд╣рд╛ рд╣реВрдБ?
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
рдЬрдм рдореИрдВ https://github.com/facebook/react-native/issues/8615#issuecomment -287977178 рдореЗрдВ @ рдирд╛рдЗрдЯ704 рд╕реЗ рдлрд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ change
рдЗрд╡реЗрдВрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЗрди рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд, NetInfo.fetch()
unknown
рд░рд╛рдЬреНрдп рд▓реМрдЯрд╛рдПрдЧрд╛ (рдпрд╣ false
NetInfo.isConnected.fetch()
рддрд╣рдд рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдореВрд▓ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╢реЛрдзрди рдХреЗ рд╕рд╛рде:
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');
});
}
unknown
рд╕реНрдерд┐рддрд┐ рдХреЗрд╡рд▓ iOS рдкрд░ рдЪрд╛рд▓реВ рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Android UNKNOWN
рд▓реМрдЯрддрд╛ рд╣реИред рдпрд╣ рднреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд▓реЛрдХрд╛рд░реНрдкрдг рдХрд╛ рдХрд╛рд░рдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХрдо рд╕реЗ рдХрдо NetInfo.isConnected.fetch
рдореМрдЬреВрджрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╡рд╣реА 0.44 рдореЗрдВ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдиреЗрдЯрдЗрдиреНрдлреЛ рдХреЗрд╡рд▓ рдПрдХ рдЪрдХреНрд░ (рдСрди - рдСрдл) рдХреЗ рдмрд╛рдж рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдерд┐рддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рдХреЗрд╡рд▓ рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдпрд╣ рдХрдИ рдХрдиреЗрдХреНрдЯ / рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдЪрдХреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдХреЙрд▓рдмреИрдХ рдХреЛ рдареАрдХ рд╕реЗ рдлрд╛рдпрд░ рдХрд░рддрд╛ рд╣реИред
рдирдореВрдирд╛ рдХреЛрдб
NetInfo.addEventListener( 'change', this._onConnectivityChange );
_onConnectivityChange(connType) {
// Do something with connType...
}
рдЗрд╕ рдореБрджреНрджреЗ рдиреЗ рдореБрдЭреЗ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд░реЛрдХ рджрд┐рдпрд╛ рдФрд░ рдореИрдВрдиреЗ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдЖрд░рдПрди рдСрдлрд╝рд▓рд╛рдЗрди / рдСрдирд▓рд╛рдЗрди рдбрд┐рдЯреЗрдХреНрд╢рди рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдПрдХ рдЫреЛрдЯреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреИрдЯрд░реНрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ Redux рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЪреНрдЫрд╛ рдПрдХреАрдХрд░рдг рд╣реИред
рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рджреЛрдиреЛрдВ рдкрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдпрд╣ рднреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХрднреА-рдХрднреА рд╢реНрд░реЛрддрд╛ рдЖрдИрдУрдПрд╕ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рд╕реНрдерд┐рддрд┐ рдЕрд╕рдВрдЧрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред рдореИрдВрдиреЗ рдЕрднреА рддрдХ @ knight704 рдФрд░ @Ignigena ( рдпрд╣рд╛рдВ рдФрд░ рдХреНрд░рдорд╢рдГ рдпрд╣рд╛рдВ ) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдХреБрдЫ рд╕рдордп рдорд┐рд▓рдиреЗ рдкрд░ рдореИрдВ рдЬрд▓реНрдж рд╣реА рдЙрдирдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ред
рдПрдХ рдкреАрдЖрд░ рднреА рдЕрдзрд┐рдХ рд▓реЛрдЧреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╣реБрдд рд╕реНрд╡рд╛рдЧрдд рд╣реИ рдХрд┐ рдкреБрд╖реНрдЯрд┐ рдЙрди рд╕рдорд╛рдзрд╛рди рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ!
рдХреГрдкрдпрд╛ рдареАрдХ рдХрд░реЗрдВред
рдпрджрд┐ рдпрд╣ рдЬрд▓реНрдж рд╣реА рдареАрдХ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреНрдпрд╛ рд╣рдо рдХрдо рд╕реЗ рдХрдо рдбреЙрдХреНрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЖрдИрдУрдПрд╕ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?
@ jpb12 рд╢рд╛рдпрдж рдпрд╣ рдкреАрдЖрд░ рдмрдирд╛рдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдФрд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдЗрд╕реЗ рдорд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВред рдордИ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рджреГрд╢реНрдпрдорд╛рди рдмрдирд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рднреБрд▓рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдореИрдВ Android рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЬрд╛рдиреЗ рдФрд░ рдЕрдЧреНрд░рднреВрдорд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдордЬрд╝рдмреВрддреА рд╕реЗ рдирд╣реАрдВ рджреЛрд╣рд░рд╛ рд╕рдХрддрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрдИ рдкреГрд╖реНрдарднреВрдорд┐ / рдЕрдЧреНрд░рднреВрдорд┐ рд╕рдВрдХреНрд░рдордгреЛрдВ рдХреЗ рдмрд╛рдж рд╣реЛрддрд╛ рд╣реИред рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЙрд╕ рд╕рдордп рдХрдиреЗрдХреНрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рджреА рдЧрдИ рд╣реЛ
рдЬрдм рдпрд╣ рд╣реЛрддрд╛ рд╣реИ
NetInfo.isConnected.fetch().then(isConnected => {...})
рд╣рдореЗрд╢рд╛ false
NetInfo.fetch().then((reach) => {...})
рд╣рдореЗрд╢рд╛ NONE
рд▓реМрдЯрддреЗ рд╣реИрдВ
рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ / рд╣рдЯрд╛рдиреЗ рд╕реЗ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓рддреА
рдореИрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛
рдореИрдВ рдПрдХ рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рдИрдлрд╛рдИ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ рдХрдиреЗрдХреНрдЯреЗрдб рд░рд┐рдЯрд░реНрди рд╕рд╣реА рд╣реИ (рдЕрдм рддрдХ рдареАрдХ рд╣реИ) рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореЙрдбреЗрдо рдЗрдВрдЯрд░рдиреЗрдЯ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рддреЛ рдЕрднреА рднреА рд╕рд╣реА рд╣реИред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХреИрд╕реЗ рдЬрд╛рдВрдЪреЗрдВ, рди рдХрд┐ рдХреЗрд╡рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рдиред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░? рдзрдиреНрдпрд╡рд╛рдж
@kodatech рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрддреНрдпрдзрд┐рдХ рдЗрд╕рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ https://github.com/rauliyohmc/react-native-offline
рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж @craigcoles
@ рдирд╛рдЗрдЯ 704 рдзрдиреНрдпрд╡рд╛рдж рднрд╛рдИред
@ craigcoles рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдХрд╛рд░реНрдп рдХреЛрдб рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
@nmfzone рдореИрдВ рдХреБрдЫ рднреА рд╣реИ рдХрд┐ рдореИрдВ рдЖрдкрдХреЛ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдБ рдореЗрдВ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИ рд░реАрдбрдореА ЁЯШГ
рдореИрдВ рдиреЗрдЯрд┐рдирдлреЛ рд╢реНрд░реЛрддрд╛ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рджреЛрдиреЛрдВ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ": "0.43.4",
componentDidMount(){
NetInfo.isConnected.addEventListener('change', this._handleConnectivityChange);
}
componentWillUnmount(){
NetInfo.isConnected.removeEventListener('change', this._handleConnectivityChange);
}
_handleConnectivityChange = (isConnected) => {
console.warn(isConnected);
}
@ sumesh1993 рдореЗрд░реЗ рдЕрдиреБрднрд╡ рд╕реЗ рдЕрдЧрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдРрдк рдХреЛ рдХрдо рд╕реЗ рдХрдо (рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ) рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ 'change'
рдЗрд╡реЗрдВрдЯ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдЧреИрд▓реЗрдХреНрд╕реА рдиреЛрдЯ 5, рдПрдВрдбреНрд░реЙрдЗрдб 7.0 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛
рдореЙрдбреНрдпреВрд▓ https://github.com/rauliyohmc/react-native-offline рдЬреЛ рдХреЗрд╡рд▓ https://google.com
рд▓рдЧрд╛рддрд╛рд░ рдкрд┐рдВрдЧ рдХрд░рдиреЗ рд╕реЗ рдКрдкрд░ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдерд╛ред рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛
рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдРрдкреНрд╕ рдирд┐рд▓рдВрдмрд┐рдд рд╣реИрдВред рдИрд╡реЗрдВрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдРрд╕реА рд╕реЗрд╡рд╛ рдмрдирд╛рдиреА рд╣реЛрдЧреА рдЬреЛ рдРрдк рдХреЗ рдирд┐рд▓рдВрдмрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рднреА рдЪрд▓рддреА рд░рд╣реЗрдЧреАред
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдРрдк рдкрд░ рдПрдХ onResume рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдСрдлрд╝рд▓рд╛рдЗрди рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рд╕реЗрд╡рд╛ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рд╕рд░рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореЗрд░реЗ рд▓рд┐рдП @ alsh76 рдЬрдм рдРрдк рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╣реИ рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдРрдк рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдореЗрдиреВ рд╕реЗ рдорд╛рд░реЗ рдЬрд╛рдиреЗ рдкрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдирд┐рд╢реНрдЪрдп рдХрд┐рдпрд╛ рдХрд┐ рдЬрдм рднреА рдореЗрд░реЗ рд╣реЛрдо рд╕реНрдХреНрд░реАрди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдП, рддрдм рдирд┐рдореНрди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗред
if(Platform.OS === 'android'){
NetInfo.isConnected.fetch().then(isConnected => {
if(!isConnected)
return;
//Do something
});
}
Android рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдмрд╛рдд рдХреБрдЫ рджрд┐рди рдкрд╣рд▓реЗ рдареАрдХ рдереА рдФрд░ рдЕрднреА рднреА рдЖрдИрдУрдПрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдРрд╕рд╛ рдХрд░ рд░рд╣реА рд╣реИред рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рдФрд░ рд╕рд╣реА рддрд░реАрдХрд╛ рдорд┐рд▓рд╛?
рдзрдиреНрдпрд╡рд╛рдж @ sumesh1993 рдЬрд┐рд╕рдиреЗ рдЖрдИрдУрдПрд╕ рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдЪрд╛рд▓
@igorarkhipenko рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЙрдирдХреЗ рд╕реБрдЭрд╛рд╡ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА?
рдирдорд╕реНрддреЗ рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗ рджреА рд╣реИ Android рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
рджреНрд╡рд╛рд░рд╛ @ Knight704 рдФрд░ @Ignigena NetInfo.fetch рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдкрд░ рд╕рд┐рд░реНрдл рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрджреНрдпрддрди рдЕрдм рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИред рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЪрд╛рд▓ рдЪрд▓реА:
`` `
const isNetworkConnected = () => {
рд╡рд╛рдкрд╕реА NetInfo.getConnectionInfo ()ред рдлрд┐рд░ (рдкреБрдирдГрдЪреБрдиреНрдпрддрд╛ => {
рдЕрдЧрд░ (reachability.type === 'рдЕрдЬреНрдЮрд╛рдд') {
рдирдпрд╛ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рдПрдБ (рд╕рдВрдХрд▓реНрдк => {
const handleFirstConnectivityChangeIOS = isConnected => {
NetInfo.isConnected.removeEventListener ('connectionChange', handleFirstConnectivityChangeIOS);
рд╕рдВрдХрд▓реНрдк (isConnected);
};
NetInfo.isConnected.addEventListener ('connectionChange', handleFirstConnectivityChangeIOS);
});
}
рд╡рд╛рдкрд╕реА (reachability.type!! == 'none' && reachability.type! == 'рдЕрдЬреНрдЮрд╛рдд')
});
}
Imho NetInfo.isConnected.fetch()
рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ asap рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП!
@javache @sahrens @davidaurelio @janicduplessis @hramos @shergin @rigdern рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдордпрд░реЗрдЦрд╛ рд╣реИ?
рдзрдиреНрдпрд╡рд╛рдж!
@pensierinmusica рдпрд╣ рд╕рдореБрджрд╛рдп рд╕рдВрдЪрд╛рд▓рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдЪреНрдЫреЗ рдкреАрдЖрд░ рдХреЛ
@ рд╢реЗрд╣рд░рд┐рди рдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдлреЗрд╕рдмреБрдХ рджреНрд╡рд╛рд░рд╛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛, рдмрдирд╛рдП рд░рдЦрд╛ рдФрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдмреАрдПрд╕рдбреА 3-рдХреНрд▓реЙрдЬ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдлреЗрд╕рдмреБрдХ рдХрд░реНрдордЪрд╛рд░реА рдмрдЧ рдХреЛ рдареАрдХ рдХрд░ рджреЗрдВрдЧреЗ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдгред рд╡реИрд╕реЗ рднреА, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдкреАрдЖрд░рдПрд╕ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!
cc @rigdern
RN рдХреЛрд░ рдХреЛрдб рдкрд░ рдмрд╣реБрдд рдХреБрдЫ рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдФрд░ рдмрдирд╛рдП рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рдФрд░ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдПрдВ рдлреЗрд╕рдмреБрдХ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдирд╛ рдФрд░ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдкреАрдЖрд░ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЬрд╣рд╛рдВ рд▓реЗрдЦрдХ рдЕрдкрдиреЗ рдмрдЧ / usecase рдХреЗ рд▓рд┐рдП рдлрд┐рдХреНрд╕ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВ рднреА 0.47.0 рдЖрдИрдУрдПрд╕ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореБрджреНрджрд╛ рд░рд╣рд╛ рд╣реВрдБред
@pensierinmusica рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдмрд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред .IsConnected () рд╕реЗ рдмреВрд▓рд┐рдпрди рд╡рд╛рдкрд╕реА рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
рдареАрдХ рд╣реИ рдпрд╣рд╛рдБ рдПрдХ рдмреЙрдХреНрд╕ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ рдЬрд┐рд╕реЗ рдЯреНрд░рд┐рдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рд╡реИрд╕реЗ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ)ред рдореИрдВ рдПрдХ рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ http рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реВрдВ рдЬреЛ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕рдХреНрд░рд┐рдп рд╣реЛрдЧрд╛ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдЧрд╛ред
рдореИрдВрдиреЗ рдПрдХ рд░реЗрдкреЛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред https://github.com/JamesDorrian/NetInfoCheckConnection/tree/master
рдиреЛрдЯ: httpAddress рдЪрд░ рдХреЛ https://www.galwaydaily.com рд╕реЗ рдХреБрдЫ рдФрд░ (рд╢рд╛рдпрдж google.com) рдореЗрдВ рдмрджрд▓рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рдХрд┐ рд╣рдореЗрд╢рд╛ рдЬреАрд╡рд┐рдд рд░рд╣реЗрдЧрд╛ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдиреЗрдЯрдЗрдиреНрдлреЛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░рд╛рд╢ рдХрд┐рд╕реА рдХреЛ рднреА рдорджрдж рдХрд░рддрд╛ рд╣реИ!
@pensierinmusica @anujsinghwd
@JamesDorrian рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ "google.com" рдХреЛ рдкрд┐рдВрдЧ рдХрд░рддреЗ рд╣реБрдП рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ред
рдпрд╣рд╛рдБ рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ:
// /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
asap рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП!
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:
рдкрд╣рд▓рд╛ рдЕрдиреБрд░реЛрдзред рдЕрдЧрд░ рд╕рд░реНрд╡рд░ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдлреЛрди рдореЗрдВ рд╡рд╛рдИрдлрд╛рдИ рд╣реИред
NetInfo.isConnected.fetch ()ред рддрдм ((isConnected) => {alway false}
0.49.3ред
@kddc рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ solution
рдмрд╕ Apple рд╕реЗ рдЕрдкрдиреЗ XCode рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд░реАрдЪрдмреЗрд▓рд┐рдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рдпрд╣рд╛рдБ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛
@fuatsengul рдореИрдВрдиреЗ рдЕрдкрдиреЗ Xcode рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ
рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ рдлрд╝рд┐рд╢ рдПрдкреА рдХреЗ рд╕рд╛рде рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ .. рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдкрд░ iOS
рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ .. рд╣рд╛рд▓рд╛рдБрдХрд┐, addEventListener рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдлрд╝рд┐рд╢ рдПрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ :)
рдпрд╣рд╛рдБ рдпрд╣ рджреЛрдиреЛрдВ рджреБрдирд┐рдпрд╛рдУрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ:
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 рдореЗрдВ рдСрдлрд╝рд▓рд╛рдЗрди рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ
рдЖрд░рдПрди - 0.50
NetInfo.isConnected.fetch().then(isConnected => {
console.log('First, is ' + (isConnected ? 'online' : 'offline'));
});
@kddc рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдореИрдВ рдЕрдкрдиреЗ iOS рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдкрд░рд┐рджреГрд╢реНрдп рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
рдкреВрд░реЗ рд╕рдордп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╣рд╡рд╛рдИ рдЬрд╣рд╛рдЬ рдореЛрдб рдмрджрд▓рддреЗ рд╕рдордпред
рдХреЗрд╡рд▓ рдирдП рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди "рдХреИрдЪ" рдРрдк рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ред
+1
+1
рдлрд┐рдХреНрд╕ @ alburdette619 рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
рддреЛ, рдпрд╣ рддрдп рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 0.54 рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛?
@ assafb81 рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рд╡реЗ рдЗрд╕реЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрддрд╛рд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдк?
рдЬрдм рдЖрдкрдХрд╛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╡рд┐рд▓реАрди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдлреЗрд╕рдмреБрдХ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЖрдВрддрд░рд┐рдХ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдиреЗрдЯрд┐рд╡ рд░реЗрдкреЛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рдмреАрдЪ рдЗрд╕ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реИред рдЬрдм рдпрд╣ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╛рдкрд╕ GitHub рд░реЗрдкреЛ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдкрдиреЗ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рджреЗрдЦрдХрд░, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреА рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдЕрдм GitHub рдореЗрдВ рд╡рд┐рд▓рдп рд╣реЛ рдЧрдИ рд╣реИ ред рдкреНрд░рддрд┐рдмрджреНрдз рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рджреЗрдЦрдХрд░, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ "рдорд╛рд╕реНрдЯрд░" рд╢рд╛рдЦрд╛ рдореЗрдВ рд╣реИ:
рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдПрдХ рдкреБрд░рд╛рдиреЗ рдХрдорд┐рдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрдИ рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ:
рд╣рд░ рдорд╣реАрдиреЗ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, "рдорд╛рд╕реНрдЯрд░" рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирдИ рд░рд┐рд▓реАрдЬрд╝ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╢рд╛рдЦрд╛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рддреЛ рдЖрдкрдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╕рдВрднрд╡рддрдГ рдорд╛рд░реНрдЪ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЕрдЧрд▓реЗ рд░рд┐рд▓реАрдЬрд╝ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЙрдореНрдореАрджрд╡рд╛рд░ рдореЗрдВ рд╣реЛрдЧрд╛ред рдЖрдк рдЗрд╕ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдореЗрдВ React Native рдХреА рд░рд┐рд▓реАрдЬрд╝ рд╢реЗрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдбрдо рдХреЛрдореЗрд▓рд╛
Microsoft рдХреЙрд░реНрдк
рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдирд╡реАрдирддрдо рдЖрд░рдПрди 54 рдХреЗ рд╕рд╛рде рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛? рдореЗрд░реЗ рд▓рд┐рдП iOS рдкрд░ рдФрд░ Android рдкрд░ рдЕрдм рдпрд╣ рд╣рдореЗрд╢рд╛ 'рд╕рд╣реА' рд▓реМрдЯ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦрдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рдФрд░?
0.53 рд╣рдореЗрд╢рд╛ рдЧрд▓рдд .. @deepaksasken .. рд▓рдЧрддрд╛ рд╣реИ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ .. рдХрдИ рдмрдЧреЛрдВ рдореЗрдВ 0.54 рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
@ Alien3d рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ iOS рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╖рдо рдХрд░
@afilp i рд╕рд┐рд░реНрдл ios рдХреЗ рд▓рд┐рдП рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ
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 рдЬрдм рдбреЗрдЯрд╛ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреЛрдИ рдкреИрдХреЗрдЬ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рддрдм рднреА рдпрд╣ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рд╣реА рд╣реИред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ?
рдХреНрдпреЛрдВ рдПрдХ рд╣рдЯрд╛рдиреЗрд╡рд╛рд▓рд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╣рд░ рд╕рдордп рдиреЗрдЯрд╡рд░реНрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╕реБрдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрд┐рд╕реА рдХреЛ?
рд╕рд╛рде рд╣реА рдКрдкрд░ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдиреЗрдЯрдЗрдиреНрдлреЛ рдЗрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рдмрд╣реБрдд рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд▓рдЧрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЙрдкрд░реНрдпреБрдХреНрдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рдХрдИ рд╕реНрдерд┐рд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред рдЕрднреА рдХреЗ рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП https://google.com рдпрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрд╡рд╛рд╕реНрдереНрдп рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░реВрдВрдЧрд╛ред
@MichaelPintos рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рджред
рдЖрд░рдПрди 0.54.2
OS: iOS
рдПрдХ рд╣реА рдореБрджреНрджрд╛, рд╣рдореЗрд╢рд╛ рдЕрдЬреНрдЮрд╛рдд
рдЬрдм рдореИрдВрдиреЗ рдЖрд░рдПрди рдХреЛ 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
(рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ 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'
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдирд┐рдореНрди рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдРрдк рдХреЛ рдбреАрдмрдЧ рдореЛрдб рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА 0.55.3, iOS 11.3.1): рдЗрд╕ рдРрдк рдХреЛ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдореЛрдмрд╛рдЗрд▓ рдбреЗрдЯрд╛ рдФрд░ рд╡рд╛рдИрдлрд╛рдИ рд╕реЗ рдЪрд╛рд▓реВ рдХрд░реЗрдВред
рдХрд┐рд╕реА рднреА рдмрд╛рдж рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЙрдкрд░реЛрдХреНрдд рд╡рд░реНрдгрд┐рдд рд╕рднреА рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЦреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ( @SudoPlz рдХреЗ рдЙрддреНрддрд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред рдХреЗрд╡рд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд░рд┐рд▓реАрдЬрд╝ рдореЛрдб рдореЗрдВ рдпрд╛ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдиреЗ рд╕реЗ рдХрд┐рд╕реА рднреА NetInfo
рдШрдЯрдирд╛рдУрдВ рдХреА рд╢реБрд░реБрдЖрдд рд╣реБрдИред
@nlindroos рддреЛ рдХреНрдпрд╛ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ NetInfo
рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
_Starting_ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдореЗрдВ, рднреМрддрд┐рдХ iOS рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдСрдлрд╝рд▓рд╛рдЗрди рдореЛрдб рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рд░рд┐рд▓реАрдЬрд╝ рдореЛрдб рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ NetInfo
рдЗрд╡реЗрдВрдЯреНрд╕ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдерд╛ред рдореИрдВрдиреЗ рд╕рднреА рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕рднреА NetInfo
рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рд╣реИред
рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдБ рдХрд┐ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд┐ @woodpav рдФрд░ @AbdallaMohamed рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛
рдореИрдВ рдЖрд░рдПрди рд╕рдВрд╕реНрдХрд░рдг 0.55.4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдореБрдЭреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╕рд░ Google рд╕рд░реНрд╡рд░ рдХреЛ рдкрд┐рдВрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП server
рдореИрдВ iPhone 8 - 11.3 рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдФрд░ RN рд╕рдВрд╕реНрдХрд░рдг рдкрд░ 0.55.4 NetInfo.isConnected.fetch () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдлрд┐рд░ (isConnected => рдХрдВрд╕реЛрд▓.log ('Connected ', isConnected))
рд╣рдореЗрд╢рд╛ рдЭреВрдард╛ рд▓реМрдЯрддрд╛ рд╣реИред рдпрд╣ рдлреЛрди рдкрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рднреА рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдореЛрдмрд╛рдЗрд▓ рдбреЗрдЯрд╛ рдФрд░ рд╡рд╛рдИрдлрд╛рдИ рдХреЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред
рдЬрдм RN рд╕рдВрд╕реНрдХрд░рдг 0.55.3 рдкрд░ рд╡рд╛рдкрд╕ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред
@octopitus , @martinentelect
рдпрд╣ рдореЗрд░рд╛ рдХреЛрдб рд╣реИ, рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╕рдВрд╕реНрдХрд░рдг 0.55.4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ NetInfo
рддрдп рд╣реЛрдиреЗ рддрдХ рдЗрд╕рдХрд╛ рдПрдХ рд╕рдордЭрджрд╛рд░ рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред
рдореЗрд░реА рдПрдкреА рдлрд╛рдЗрд▓ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдХреЛрдб рд╣реИ
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 рдзрдиреНрдпрд╡рд╛рдж! рдЗрд╕рд╕реЗ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реАред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрдИрдУрдПрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ (рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдХрдо рд╕реЗ рдХрдо) рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВред
рдХреНрдпрд╛ рдиреЗрдЯрдЗрдиреНрдлреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рднреА рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИрдВ?
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")
}
@ рддрдиреНрдирд╛рд░ ,
рдЕрд╕рд▓реА Android рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЪреЗрдХ рдХрд░реЗрдВ рдФрд░ рдПрдореБрд▓реЗрдЯрд░ рдирд╣реАрдВ
0.55.4
рдпрд╣ рдЕрднреА рднреА рдПрдХ рдмрдЧ рд╣реИ, рдФрд░ рдореИрдВ рд╕рд┐рд░реНрдл рдкреНрд░реЛрдбрдХреНрд╢рди рдкрд░ рд╣рд┐рдЯ рд╣реЛ рд░рд╣рд╛ рд╣реВрдВ $
рдЕрднреА рднреА 0.56 рдкрд░ рддрдп рдирд╣реАрдВ рд╣реИ
@SudoPlz рдореИрдВрдиреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЛ 0.57 рдЪрд░реНрдЪрд╛ рд╕реВрддреНрд░ рдкрд░ рдСрдл-рдЯреЙрдкрд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЫрд┐рдкрд╛рдпрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд░реЗрдкреЛ рдореЗрдВ рд╕реИрдХрдбрд╝реЛрдВ рдЦреБрд▓реЗ рдореБрджреНрджреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдзрд╛рдЧрд╛ 0.57 рд░рд┐рд▓реАрдЬ рд╣реЛрдиреЗ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред
рдПрдХ рдмрдВрдж рдкрд░ рдпрд╣ рдзрд╛рдЧрд╛ рдЕрдиреБрдЪрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрджреГрд╢реНрдп рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рд╕рдВрднрд╛рд╡рд┐рдд рдлрд┐рдХреНрд╕ рдХреЗ рдЫрд╣ рдорд╣реАрдиреЗ рдмрд╛рдж, рдХрд┐рд╕реА рдиреЗ рднреА рдирдпрд╛ рдореБрджреНрджрд╛ рдирд╣реАрдВ рдЦреЛрд▓рд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВ, рдФрд░ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдПрдХ рдкреАрдЖрд░ рднреЗрдЬреЗрдВред
рдпрд╣рд╛рдБ рдПрдХ рдиреНрдпреВрдирддрдо рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЙрджрд╛рд╣рд░рдг (iOS рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛) рд╣реИ, рдЬрд┐рд╕рдореЗрдВ @woodpav рдХреЗ рдХреБрдЫ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдКрдкрд░ https://snack.expo.io/@notbrent/netinfo -reproред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@ Robertodias180 рдХреЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдореИрдВ
рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдпрд╣ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛