React-native: iOS: NetInfo.isConnected рд░рд┐рдЯрд░реНрди рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдЬреБрд▓ре░ 2016  ┬╖  139рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/react-native

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ RN 0.28.0 рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ ...

NetInfo.isConnected.fetch().then(isConnected => {
      // variable isConnected is always false
    });

рдореИрдВ рдПрдХ PR рдХрд░реВрдБрдЧрд╛ рд▓реЗрдХрд┐рди IOS рдХреЗ рд▓рд┐рдП рдХреЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

Help Wanted iOS Locked

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@ 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();
}

рд╕рднреА 139 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рдЖрд░рдПрди 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
ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ:

  1. isConnected.fetch iOS рдкрд░ рдЯреВрдЯрдиреЗ рд▓рдЧрддрд╛ рд╣реИ - рдлрд┐рдХреНрд╕ рд╕реАрдзрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред @ Robertodias180 рджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЙрдард╛рддрд╛ рд╣реИред
  2. Netinfo flakyness @Aristekrat рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рддред рдпрд╣ рдЕрдзрд┐рдХ рдЪрд┐рдВрддрд╛рдЬрдирдХ рд╣реИ- рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддреГрдд рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдлрд┐рд░ рдореБрдЭреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрд░рдПрди 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. ios -> рд╣рд╡рд╛рдИ рдЬрд╣рд╛рдЬ рдореЛрдб рдЪрд╛рд▓реВ рд╣реИ
  2. рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛ -> 'рдиреЗрдЯрд╡рд░реНрдХ рдПрд░рд░' рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, isConnected рдЭреВрдард╛ рд╣реИ рдФрд░ рд░реАрдЪреИрдмрд┐рд▓рд┐рдЯреА рд╣реИред рдХреЛрдИ рднреА рдирд╣реАрдВ рд╣реИ
  3. ios -> рд╣рд╡рд╛рдИ рдЬрд╣рд╛рдЬ рдореЛрдб рдмрдВрдж рд╣реИ
  4. рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛ -> 'рдиреЗрдЯрд╡рд░реНрдХ рдПрд░рд░' рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, isConnected рдЭреВрдард╛ рд╣реИ рдФрд░ рд░реАрдЪреИрдмрд┐рд▓рд┐рдЯреА рд╣реИред рдХреЛрдИ рднреА рдирд╣реАрдВ рд╣реИ

рдкреВрд░реЗ рд╕рдордп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╣рд╡рд╛рдИ рдЬрд╣рд╛рдЬ рдореЛрдб рдмрджрд▓рддреЗ рд╕рдордпред
рдХреЗрд╡рд▓ рдирдП рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди "рдХреИрдЪ" рдРрдк рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ред

+1

+1

рдлрд┐рдХреНрд╕ @ alburdette619 рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
рддреЛ, рдпрд╣ рддрдп рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 0.54 рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛?

@ assafb81 рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рд╡реЗ рдЗрд╕реЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрддрд╛рд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдк?

рдЬрдм рдЖрдкрдХрд╛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╡рд┐рд▓реАрди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдлреЗрд╕рдмреБрдХ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдЖрдВрддрд░рд┐рдХ рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдиреЗрдЯрд┐рд╡ рд░реЗрдкреЛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рдмреАрдЪ рдЗрд╕ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реИред рдЬрдм рдпрд╣ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╛рдкрд╕ GitHub рд░реЗрдкреЛ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдкрдиреЗ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рджреЗрдЦрдХрд░, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреА рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдЕрдм GitHub рдореЗрдВ рд╡рд┐рд▓рдп рд╣реЛ рдЧрдИ рд╣реИ ред рдкреНрд░рддрд┐рдмрджреНрдз рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рджреЗрдЦрдХрд░, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ "рдорд╛рд╕реНрдЯрд░" рд╢рд╛рдЦрд╛ рдореЗрдВ рд╣реИ:

image

рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдПрдХ рдкреБрд░рд╛рдиреЗ рдХрдорд┐рдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрдИ рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ:

image

рд╣рд░ рдорд╣реАрдиреЗ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, "рдорд╛рд╕реНрдЯрд░" рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирдИ рд░рд┐рд▓реАрдЬрд╝ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╢рд╛рдЦрд╛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рддреЛ рдЖрдкрдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╕рдВрднрд╡рддрдГ рдорд╛рд░реНрдЪ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЕрдЧрд▓реЗ рд░рд┐рд▓реАрдЬрд╝ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЙрдореНрдореАрджрд╡рд╛рд░ рдореЗрдВ рд╣реЛрдЧрд╛ред рдЖрдк рдЗрд╕ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдореЗрдВ 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ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

arunabha picture arunabha  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

WG-Com picture WG-Com  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

oney picture oney  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jlongster picture jlongster  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

axelg12 picture axelg12  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ