İ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.