iOS İnternet Bağlantısı Kontrolü (Reachability)

Merhaba arkadaşlar,

Mobil uygulama geliştirme konusunda dersler anlattığımız/paylaştığımız mobilhanem.com platformu üzerinden bugünde İos da İnternet Bağlantısı Kontrolü nasıl yapılır onu anlatacağız.Hepimizin mağlumudur ki bugün uygulamaların bir çoğu internet bağlantısı kullanmaktadır.Bizler uygulama geliştirirken internet bağlantısı olup olmadığını kontrol etmeliyiz ki uygulamımız internete bağlanmaya çalışırken cihaz internete bağlı değilse uygulalmız crash olmasın yani patlamasın.

Bu konuda ios kendisi bizlere yardımcı olmuş ve Reachability sınıfını yazmış.Tony Million adlı arkadaşımızda bu sınıfları kullanarak biraz daha özelleştirmiş.Bu sınıf kendisi internet koptuğu yada bağlandığı zaman bizlere haber veriyor. Reachability sınıfı ağı dinliyor ve internet durumunda bir değişim olduğu zaman haber veriyor. Androiddeki Broadcast Receiver gibi bir çalışma mantığı var.

[wpdm_file id=26]

Arkadaşlar konuyu daha fazla uzatmadan hemen kod kısmına geçiyorum .Ben her zamanki gibi ufak bir uygulama ile anlatmaya çalıştım.Öncelikle bu adresteki örnek uygulamayı indiriyoruz.İsterseniz burdaki örnek uygulamayıda kontrol edebilirsiniz. Bize lazım olan ise o dosyanın içindeki Reachability.h ile Reachability.m dosyaları.

Şimdi projemizi oluşturalım.Xcode->New->Project->Single View Application seçiyoruz. Açılan sayfada gerekli alanları doldurduktan sonra Create diyor ve projemizi kaydedeceğimiz yeri seçip projeyi oluşturuyoruz.

İndirdiğimiz klasördeki Reachability.h ile Reachability.m dosyalarını alıyor ve direk sürükleyip oluşan projemizin içine atıyoruz.Bundan sonra projemizin Build Phases altındaki Link Binary with Libraries kısmından SystemConfiguration.framework frameworkünü ekliyoruz.

 

Screen Shot 2014-09-09 at 23.08.26

 

Buraya kadar sorunsuz bir şekilde yaptıysak artık gerisini direk kod üzerinden devam edelim.Ben yine ufak bir proje hazırladım.Projenin kaynak dosyalarını ekleyeceğim. Onun üzerinde gerekli açıklamaları yaptım.

 

ViewController.m

//
//  ViewController.m
//  InternetKontol
//
//  Created by taha on 09/09/14.
//  Copyright (c) 2014 Mobilhanem. All rights reserved.
//

#import "ViewController.h"
#import "Reachability.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChanged:)
name:kReachabilityChangedNotification
object:nil];

Reachability * reach = [Reachability reachabilityWithHostname:@"www.google.com"];//kontrol ederken google a bağlanıp bağlanmadığını kontrol ediyor.

[reach startNotifier];//Notifier başlatıyoruz. Ağda bir değişiklik olduğu zaman bizi reachabilityChanged methodumuz çağırılacak.
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)reachabilityChanged:(NSNotification*)note
{
Reachability * reach = [note object];

if([reach isReachable])//internet varsa
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"İNTERNET BAĞLI"
message:@"İnternet Bağlantısı Var."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
else//internet yoksa
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"İnternet Yok"
message:@"İnternet Bağlantınızı Kontrol Ediniz"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];

}
}

@end

 

Biz burda internet koptuğu zaman Alert bastırıyoruz ve kullanıcıyı bilgilendiriyoruz. Ama kullanıcı hala uygulamayı kullanmaya devam edecek ve internet bağlantısı gerektiren bir işlem yaptığında uygulama patlayacak.Bunu önlemek için şunu yapabilirsiniz. Static bir boolean değer belirleyip bu değer için static  get methodu yazarsınız.İnternet koptuğunda bu değeri false yaparsınız.Kullanıcının her etkileşiminde bu get methodunu çağırıp değerimiz false ise işlem yaptırmazsınız.Tabi bu algoritmayı siz farklıda kurabilirsiniz.

Bu dersimde anlatacaklarım bu kadar bir dahaki İOS dersimde AdMob eklemeyi anlatmayı düşünüyorum. O zamana kadar kendinize iyi bakın ve destek için sayfamızı facebook.com/mobilhanem beğenmeyi unutmayın.

[wpdm_file id=26]

 

0

Taha Kırca

iOS & Android & Apple Watch Developer, Mobilhanem.com yazarı, Karadeniz Uşağu, Ordu Sevdalısı

7 Yorum

  • Hocam paylaşımlarınız için teşekkür ederim çok faydalı bilgiler paylaşıyorsunuz ALLAH Razı Olsun. İos internet bağlantı kontrolünün webview ile entegreli hali mevcutmudur. paylaşmanız mümkün olurmu acaba. şimdiden çok teşekkür ederim.

  • Merhaba

    bu paylaşımınızda bir konuda takıldım. internet bağlantısı varkende uyarı penceresi çıkıyor internet yokkende çıkıyor. yani internet bağlantısı varken çıkmasa sadece internet yokken çıksa internet bağlantısı olmadığını belirtse bunu nasıl yapabiliriz.

  • Hocam Bende Bu Hatayı Veriyor. Yardımcı Olabilirmisiniz. ‘UIAlertView’ is deprecated: first deprecated in iOS 9.0 – UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead

  • Hocam; Benim 2 Tanesi UIwebview ile Alakalı Hepsini Burdan Sorayım İstedim 3 Sorum Olacak:
    1- İnternet bağlantı kontrolünde internet varken uyarı vermiyor. bunu sağlayabildik. fakat internet yokken internet yok uyarısı 2 defa arka arkaya geliyor. bunu 1 defa göstersek ikinci kontrolde internet varsa bağlansa, internet yoksa uygulamadan çıksa. bunu nasıl yapabiliriz.
    2 – UIwebview de telefon ile aratma detection kısmında phone numbers seçeneği işaretli olursa yeterli midir. Yoksa Bunun İçin Kod Eklemek Gerekir mi?
    3 – UIWebview ile simülatörde mobil siteyi çalıştırdığımızda mobil site ekrana sığmıyor. Mobil Siteyi sağa sola kaydırmamız gerekiyor. Ama mobil siteyi normal telefondan açtığımızda böyle bir sıkıntı ile karşılaşmıyoruz. Bunun için ayrı bir işlem mi Yapmamız Gerekiyor.

  • Merhaba, ilk önce bu yararlı paylaşımlar için teşekkürler. Ancak bir sorum olacak eğer bağlantı yoksa geri gelmesini nasıl yapabiliriz uygulamayı açtı hata verdi ancak tekrar menüye gelmesini yapmak istiyorum return yes veya return true ile yapılmaya çalışmış ama birde senin fikrini almak isterim

      • evet sadece örnek return komutu ile bir önceki yere dönmesini istiyorum yani uygulamayı açtı internet yok tamam dedi yere uygulamalar sayfasına gitsin yani bir önceki yere genel araştırmalarda hep return kullanmışlar bu çalışmada olmuyor saygılar

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?