IfConfig - IPWidget

IP adresinizi, ISS’nizi ve yaklaşık konumunuzu ana ekrandan tek bakışta gösteren küçük ve gizlilik odaklı bir Android uygulaması.


Bu Uygulamayı Neden Yaptım?

Geliştiriciler ve power user’lar olarak sürekli ağ değiştiriyoruz: ev Wi‑Fi’ı, ofis, kafe, VPN, mobil veri… Her seferinde aynı soru geliyor:

“Şu an genel IP adresim ne ve dışarıdan bakınca neredeymişim gibi görünüyorum?”

Masaüstünde ifconfig veya ipinfo.io gibi araçlar ve siteler bunu kolaylaştırıyor ama Android tarafında süreç genelde şöyle:

  • Tarayıcı aç
  • “what is my IP” diye ara
  • Reklamlar ve takipçiler yüklensin
  • En son IP adresini gör

Ben şöyle bir şey istedim:

  • Ana ekranda bir widget olarak yaşasın
  • Arka planda otomatik güncellensin
  • IP, şehir, ülke, ISS, saat dilimi gibi temel bilgileri tek bakışta görebileyim
  • Daha iyi erişilebilirlik için birden fazla IP lokasyon servisini kullanabilsin
  • Gizliliğe saygılı olsun, ihtiyacı olandan fazlasını toplamasın

Bu uygulama böyle ortaya çıktı.


Uygulama Ne Yapıyor?

Temelde uygulama üç şey yapıyor:

1. Genel IP Adresinizi ve Konumunuzu Çekiyor

Uygulama, Ktor HTTP istemcisini kullanarak ipapi, ipinfo, ipwhois vb. gibi genel IP lokasyon servisleriyle konuşuyor. Gelen JSON cevaplar, IpLocation isimli tek bir veri modeline dönüştürülüyor. Bu model şunları içeriyor:

  • IP adresi
  • Ülke, bölge, şehir
  • Posta kodu
  • Enlem ve boylam
  • Saat dilimi
  • ISS / organizasyon
  • Kaynak (hangi servisin cevap verdiği)
  • Zaman damgası

2. Bu Veriyi Android Widget’ında Gösteriyor

Uygulama, Jetpack Glance kullanarak farklı widget yerleşimleri sunuyor (örneğin kutu tipi ve satır tipi). Ana ekrandan şunları görebiliyorsunuz:

  • Genel IP adresiniz
  • Yaklaşık şehir ve ülke
  • ISS’niz
  • Açık / koyu tema ve şeffaflığa saygı gösteren sade bir tasarım

Teknik Altyapı

Teknik detaylarla ilgileniyorsanız uygulama şu teknolojileri kullanıyor:

Dil ve Arayüz

  • Kotlin
  • Uygulama içi arayüz için Jetpack Compose
  • Ana ekran widget’ları için Jetpack Glance

Ağ Katmanı

  • Ktor Client (CIO motoru)
  • IP API’lerinden gelen JSON’ları tek tip IpLocation modeline çevirmek için Kotlinx Serialization (@Serializable data class’lar)

Arka Plan ve Depolama

  • Periyodik arka plan güncellemeleri için WorkManager
  • Şu verileri saklamak için MMKV:
    • Son IP lokasyonu (IpLocation JSON olarak)
    • Widget konfigürasyonları (WidgetSettings)

Derleme ve Optimizasyon

  • R8 / ProGuard, özel kurallarla birlikte:

    • Glance widget sınıfları ve serializer’lar korunuyor
    • Diğer bölümler küçültülüp optimize edilerek APK boyutu düşürülüyor

Bu sayede hem küçük boyutlu hem de bakımı kolay, debug edilir bir uygulama ortaya çıkıyor.


Widget Özelleştirme

Her widget örneğinin kendi ayarları var ve bunlar WidgetSettings isimli bir data class ile temsil ediliyor. Bir widget şunları kontrol edebiliyor:

  • Opaklık (opacity): Duvar kâğıdınıza göre şeffaflığı ayarlayabilirsiniz
  • Tema / Karanlık mod: Sistemi takip et, her zaman koyu, vs. gibi seçenekler
  • Kaynaklar: Hangi IP veri servislerini kullanacağını seçme / önceliklendirme

Bu ayarların hepsi widget ID’sine göre MMKV’de saklanıyor ve widget güncellendiğinde geri yükleniyor.


Tasarımda Gizlilik

IP ve konumla uğraştığımız için gizlilik ilk günden itibaren tasarımın parçası:

  • Hesap yok, giriş yok, profil yok
  • Kodda reklam SDK’sı veya analytics SDK’sı yok
  • IP / konum verisi:
    • Zaten internete çıktığınızda görülebilen genel IP’nize göre, üçüncü taraf IP API’lerinden çekiliyor
    • Cihazınızda JSON olarak yerel depoda tutuluyor
    • Yalnızca widget’ı ve varsa bildirimleri güncellemek için kullanılıyor

Uygulama, IP geçmişinizi veya konum geçmişinizi geliştiricinin kontrol ettiği bir sunucuya göndermeye çalışmıyor.

Detaylı bilgi için gizlilik politikasına bakmanız iyi olur ama pratikte, siz özellikle paylaşmadığınız sürece (örneğin ekran görüntüsü almak, metni kopyalamak gibi) her şey telefonunuzda kalıyor.


Kimler İçin Faydalı?

  • Geliştiriciler:

    • Sık VPN değiştirenler
    • Coğrafi kısıtlı içeriği test edenler
    • Cihazın hangi çıkış IP’sini kullandığını doğrulamak isteyenler
  • Power user’lar:

    • Ağa / IP durumuna sürekli göz atmak isteyenler
    • “Dışarıdan bakınca ben şu an neredeymişim gibi görünüyorum?” sorusuna hızlı cevap isteyenler
  • Güvenlik odaklı kullanıcılar:

    • VPN kullandığında gerçekten aktif mi, hangi IP’den çıkıyor kontrol etmek isteyenler
    • Farklı ağlar arasında gezerken ISS ve IP değişimini takip etmek isteyenler