12 Şubat 2009 Perşembe

iPhone Uygulamaları ve Veri Trafiği

Özellikle bir data paketi olmadan iPhone'daki EDGE bağlantısı üzerinden internete çıkan kullanıcıların en büyük şikayetlerinden biri de, iPhone'un durduk yere internet bağlantısı yapması. Aslında iPhone'da hiç bir zaman durduk yere bir internet erişimi olmaz. iPhone'daki her uygulamanın internete bağlanmasının bir nedeni vardır. Bu nedenleri de 3 ana grupta toplayabiliriz:

1) Doğası Gereği. Mail, Safari, vs. gibi bir çok iPhone uygulamasının çalışması için internet bağlantısı şart olduğu için bu uygulamaların internete bağlanması gayet doğaldır :) Mail gibi bazı uygulamalar da eğer manuel'e çekmemişsek, arka planda çalışarak bizim talebimiz olmadan belli sürelerde internete bağlanabilir.

2) Lokasyon Bilgisi. iPhone'un en önemli özelliklerden biri olan lokasyon bulma servisi, GPS kullanımında dahi internet bağlantısına ihtiyaç duyar. Lokasyon bilgisi için de illa Harita (Maps) uygulamasının çalışması gerekli değildir. Diğer uygulamalar da açılışlarında, kullanıcıdan onay alarak lokasyon bilgisini kullanmak isteyebilirler. Bir uygulamaya da birden fazla lokasyon için onay verdiğimizde artık bir daha sormadan internete de bağlanıp lokasyonumuzu hesaplayacaktır. Örneğin iPhone'un kendi orijinal uygulaması bile aşağıdaki gibi fotoğraf çekerken bu izni sorabilir.



3) Reklam ve İstatistik. Normalde çalışması için hiç internete ihtiyacı olmayan App Store uygulamaları dahi reklam gösterebilmek için ya da uygulamanın kullanım istatistiklerini toplayabilmek için internet bağlantısı yapabilirler. Bu bağlantı uygulamaların ilk açılışında veya ortasında da olabilir.

Kullanıcılar Wi-Fi'dan bağlı iken, çok ekonomik olması nedeniyle yukarıdaki internet bağlantılarını hiç dert etmezler. Lakin EDGE'den bağlanan fakat uygun bir data paketi/tarifesi olmayan kullanıcılar için yukarıdaki bağlantılar büyük sorun teşkil etmektedir. Özellikle "Ben internete bağlanmak istemedim ki" diyen kullanıcılar için.

Bu yüzden de iPhone kullanıcıları arasında giderek büyüyen "iPhone kendi kendine internete bağlanıyor" şeklindeki şehir efsanesini hep birlikte sonlandıralım. Bunun için de, geçen sene 1.1.x versiyonlu iPhone'lar için yazdığımız fakat halen geçerli olan "iPhone'da Wi-Fi ve Proxy Ayarları" başlıklı yazıdaki proxy kavramından yararlanacağız. Kabaca özetlersek; cihazımızdaki tüm internet trafiğini, bilgisayarımıza kuracağımız bir proxy uygulamasına yönlendirerek, iPhone'daki uygulamaların internetteki hangi sitelere bağlandığını raporlayacağız. Bu da birkaç farklı işlemden oluştuğu için tüm yapılması gerekenleri adım adım yazmaya çalıştım. Bu noktada hemen bir hatırlatma yapmakta fayda var, aşağıda anlatılanlar çoğu iPhone kullanıcısı için epey teknik kaçabilir, bu yüzden ilginizi çekmezse hiç uğraşmayın derim :)

Öncelikle bu işlem için bilgisayarımızın ve iPhone'umuzun aynı anda bağlanabildiği ortak bir Wi-Fi bağlantısına ihtiyaç oluyor. Bir de bilgisayarımıza kurmak için ücretsiz ve basit bir proxy uygulamasına. Ben bu yazıyı hazırlarken bu linkten indirilebilen CCProxy uygulamasını kullandım.

1) iPhone'umuzu yönlendireceğimiz için öncelikle bilgisayarımızın yerel IP adresine ihtiyacımız olacak. Bu IP adresini Windows'ta bulmanın en kolay yolu Başlat'a (Start) tıkladığımızda açılan menüdeki alttan üçüncü seçenek olan Çalıştır'a (Run) aşağıdaki ekran görüntüsünde olduğu gibi cmd /K ipconfig komutunuz yazıp "Enter" tuşuna basmak.


Büyütmek için lütfen resmin üzerine tıklayınız.

Ardından açılan siyah renkli komut satırındaki IP Address değerini not alıyoruz. Daha sonra iPhone'umuzda bir IP'yi kullanacağız.


Büyütmek için lütfen resmin üzerine tıklayınız.

Benim bilgisayarımda bu IP değeri 192.168.2.4 olarak çıktı. Bu lokal IP adresleri genelde 192.* veya 10.* ile başlar ve bilgisayarımızı kapatıp açtığımızda değişebilir.

2) Bilgisayarımızın IP adresini tespit ettikten sonra daha evvel indirip kurduğumuz CCProxy uygulamasını çalıştırıyoruz. Uygulama açıldığı gibi "Start" modunda olduğu için ayrıca başlatmamıza gerek kalmıyor.



Uygulamayı çalıştırdıktan sonra tek yapmamız gereken üst menüdeki "Monitor" seçeneğine tıklayıp raporlama ekranını açmak. iPhone'umuzu da bu uygulamaya yönlendirdikten sonra bu monitör ekranında bağlandığımız siteler listelenmeye başlayacak.

3) Bilgisiyarımızdaki ayarları yaptıktan sonra da iPhone'da "Ayarlar (Settings) -> Wi-Fi" menüsüne girip, bağlı olduğumuz Wi-Fi ağının en sağındaki ">" tuşuna tıklıyoruz.



Ardından karşımıza DHCP başlıklı bir ekran çıkıyor. Normalde bu ekranın en altında proxy ayarımızı yapacağız. Fakat bu ayara geçmeden yukarıda sağdaki ekran görüntüsünde olduğu gibi iPhone'umun aldığu IP adresinin (192.168.2.2), bilgisayarımdan not aldığımla (192.168.2.4) benzer olduğundan emin oluyorum. IP adreslerinin ilk üç basamağının (192.168.2.*) aynı olması doğru IP adreslerini aldığımı ve iPhone'umun bilgisayarımı görebileceği anlamına geliyor.

Proxy ayarlarını yapmak için de aşağıdaki ekran görüntüsündeki gibi "Http Proxy" seçeneğini Kapalı (Off) konumundan, Elle (Manual) durumuna getirip Sunucu (Server) alanınan bilgisayarımızın IP adresini, Kapı (Port) alanına da proxy uygulamamızın portunu giriyoruz. (CCProxy uygulamasının portu: 808)



ÖNEMLİ NOT: Testlerimizi yapıp işimiz bitince bu proxy ayarını tekrar "Kapalı" konumuna getirmemiz gerekiyor. Eğer unutursak bilgisayarımızdaki proxy uygulaması kapandığı anda iPhone'umuzdan internete çıkamayız.

4) Tüm ayarları yaptığımız için artık iPhone'umuzdaki tüm internete bağlantı istekleri bilgisayarımızdaki proxy uygulamasından geçecek ve biz de aşağıdaki gibi Monitor ekranından bu istekleri izleyebileceğiz. (Bilgisiyarınızda firewall uygulaması var ise iPhone'un bağlanmasına izin vermeyebilir.)

Ben test için sırasıyla Kamera, Hava Durumu, Borsa, Harita ve en sonunda da daha evvel tanıttığımız ve oyunun çalışması için normalde internet bağlantısına ihtiyaç duymayan ama reklam, vs. için internete bağlanan TapDefense uygulamasına girdim. Tüm bağlantı raporları aşağıda :)


Büyütmek için lütfen resmin üzerine tıklayınız.

Görüldüğü gibi test için kullandığım tüm uygulamalar internete bağlanıyor. Apple'ın kendi geliştirdiği, iPhone ile hazır gelen uygulamalar hep http://iphone-wu.apple.com/... başlayan adreslere bağlanıyorlar. Lokasyon bilgisi için de bağlanılan adres iphone-maps.apple.com. Listenin en altındakiler de TapDefense'e ait :)

Benzer yöntemi siz de kullanarak cihazınızdaki hangi uygulamaların internete bağlandığını kontrol edebilirsiniz. Hatta cihazınızda hiç bir uygulamayı çalıştırmadan bir süre bekletin bakalım internet bağlantısı gerçekleşecek mi? Unutmayın uygulamalar internete bağlanmak için Wi-Fi, EDGE ayrımı yapmaz :) Eğer bir uygulama Wi-Fi'dayken internete bağlanıyorsa, EDGE'de iken de bağlanacaktır.

Tekrar hatırlatmakta fayda var :) Denemelerinizi yaptıktan sonra iPhone'unuzun Wi-Fi ayarındaki Proxy'i kapatmayı unutmayın :)

4 comments:

OctupuSSS dedi ki...

Tüm diğerleri gibi bu da son derece güzel sade ve faydalı bir inceleme olmuş, emeğinize sağlık Mustafa Bey.
Teşekkürler.

Emre SÜMENGEN dedi ki...

Selamlar,
Detaylı ve ilginç bir inceleme olmuş, ancak eklemek istediğim bazı istisnalar var:

1) Bir uygulama internet bağlantısı gerektiriyorsa, Wifi/Edge ayrımı yapmaz demek bazı istisnaları unutmak anlamına geliyor. TruPhone ve Skype bunlardan ikisi...

2) JailBreak yapılmış bir iPhone kullanılıyorsa BossPrefs yazılımı ile, yoksa da GPRS ayarlarının değiştirilmesi ile EDGE/GPRS bağlantısı disable edilebilir. Bunu yaptıktan sonra görülecektir ki, konumlama servisleri (yazıda bahsi geçen GPS ve CELLULAR TRIANGULATION yöntemleri), aslında internet bağlantısı istemezler. Sadece, veritabanının en güncel haline ulaşabilmek adına bağlanmak isterler. Yani, tüm internet erişim imkanları kapalı iken (örneğin uçuş modu) dahi konum servislerinin çalışabildiği görülecektir.

Asıl sorun, konumu tespit ettikten sonra, bunu kullanıcıya anlamlı bir şekilde gösterememek, yani harita halinde sunamamak. Sebebi ise, tüm haritalarını cihaz üzerinde taşıyan bir konumlama yazılımının henüz piyasada olmayışı, TomTom iPhone sürümünü çıkardığında bu sorun da ortadan kalkacaktır diye inanıyorum.

Bunlar haricinde, ellerinize sağlık.

Mustafa Tan dedi ki...

Selamlar Emre Bey,

1) Wi-Fi/EDGE ayrımı konusunda haklısınız. Burada genelleme yapmışım. Bağlantı tipine göre farklı çalışan uygulamalar mevcut.

2) Bu noktada da kısmen haklısınız ama daha evvel cache'lenmemiş bir konumda iken aGPS için internet bağlantısına mutlaka ihtiyaç olacaktır.

Değerli yorumlarınız için çok teşekkürler. Yazıyı yorumlarınıza göre tekrar düzenleyeceğim.

Adsız dedi ki...

iyi çalışmalar ben şunu merak ediyorum resim çekerken bir defaya mahsus konum bilgisi isteniyor izin wer diyorum fakat bunu yaptıktan sonra resimin nerde çekildiği hakkında bir bilgi olmuyor bu ne işe yarar aslında benim resimlerimin nerde çekilğini göstermicekse böle bişiyi neden yapıyo anlamadım yardımcı olursanız sewinirim iyi çalışmalar..

t