İnternet Kontrolü

React native ile geliştirdiğimiz uygulamalarda internetin olup olmaması durumu uygulamadaki bazı fonksiyonları etkileyebilir, hata çıkmasına ya da uygulamanın kapanmasına yol açabilir. Bu sebeple internet bağlantısı gereken alanlarda internet kontrolünün yapılması önem arz etmektedir.

React Native kütüphanelerinde NetInfo internet kontrolünü gerçekleştirmek için kullanılabilmektedir.

Kurulum

NetInfo kütüphanesini kurmak için aşağıdaki komutları giriyoruz.

npm install --save @react-native-community/netinfo
react-native link @react-native-community/netinfo

Bazı durumlarda bağlama (link) işlemi başarısız olabiliyor. Bu gibi durumlarda elle (manuel) bağlama işlemini yapmamız gerekebilir. Elle bağlama işlemi altta anlatılmış ya da link verilmiştir.

IOS

Eğer pod kullanıldı ise projede, projede yer alan ios klasörüne girerek alttaki komutu girmemiz yeterli olacaktır.

pod install

pod kullanılmadı ise şu link üzerinden yapılabilir.

Android

android/settings.gradle

include ':react-native-community-netinfo'
project(':react-native-community-netinfo').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/netinfo/android')

android/app/build.gradle

dependencies {
   ...
   implementation project(':react-native-community-netinfo')
}

android/app/src/main/…/MainApplication.java

import com.reactnativecommunity.netinfo.NetInfoPackage;

@Override
protected List<ReactPackage> getPackages() {
    return Arrays.asList(
            new MainReactPackage(),
            ...
            new NetInfoPackage()
    );
}

Kullanım

İnternet bağlantısını kontrol etmek istediğimiz alana aşağıdaki kodu koyarak işlemlerimizi gerçekleştirebiliriz.

Örnek olarak uygulama içerisinde reklam çıkarmak istiyoruz. Bu durumda öncelikle internet kontrolü yapabiliriz. Eğer internet varsa o alanda reklam çıkartma fonksiyonumuzu çağırabiliriz. Eğer internet yoksa da kullanıcıya interneti açması gerektiği uyarısını verebiliriz.

import NetInfo from "@react-native-community/netinfo"


NetInfo.fetch().then(state => {
if (state.isConnected) {
  // internet bağlantısı var
} else {
  // internet bağlantısı yok
}
})

Teşekkürler.