Konuma göre basit hatırlatmalar tetikleyen mobil bir uygulama oluşturma rehberi—MVP planlama, geofence’ler, izinler, test ve gizlilik.

Bir konuma duyarlı uyarı, bir kullanıcı gerçek bir yere girip çıktığında uygulamanızın gösterdiği bir mesajdır. Bunu zamana değil konuma bağlı bir hatırlatma olarak düşünün.
Özetle, bir konuma duyarlı uyarı üç parçadan oluşur:
Örnek: “Eczaneye varınca reçetemi almamı hatırlat.”
Konuma duyarlı uyarılar, bağlamdan fayda sağlayan günlük hatırlatmalar için iyidir:
Ana fikir: uyarı, kullanıcının harekete geçmesinin en kolay olduğu anda—doğru yerde gösterilir.
“Basit”, düşük kalite demek değildir—odaklanmış demektir:
Tam bir “if-this-then-that” sistemi kurmuyorsunuz. Güvenilir bir hatırlatıcı aracı inşa ediyorsunuz.
Bu kılavuz fikirden yayınlamaya kadar ilerler: MVP tanımı, mimari seçimi, izinlerin net yönetimi, konumun verimli tespiti, iyi UX ile uyarı teslimi ve gizlilikle yayınlama.
Gelişmiş rota hesaplama, adım adım navigasyon, sosyal konum paylaşımı veya yüksek frekanslı fitness takibi gibi konulara değinmez—bunlar karmaşıklığı, pil gereksinimlerini ve gizlilik beklentilerini önemli ölçüde değiştirir.
Konuma duyarlı uyarılar için bir MVP, “tam uygulamanın küçük bir sürümü” değildir. Açık bir vaadi olmalıdır: bir kişi bir yere ulaştığında uygulama ona yardım edecek şekilde güvenilir bir şekilde hatırlatır—pil tüketmeden veya spam gibi hissettirmeden.
Başlarken üç şeyi tanımlayın: tetikleyici türleri, uyarı formatları ve deneyimi makul tutacak kurallar.
İlk sürümü cümle halinde açıklayabileceğiniz tetikleyicilerle sınırlayın:
Emin değilseniz Enter + zaman penceresi ile başlayın. Çoğu hatırlatma senaryosunu kapsar ve kenar durumları azaltır.
Birincil teslim yöntemi ve bir yedek seçin. Daha fazlası sonraya kalabilir.
Pratik bir MVP kombinasyonu bildirim + uygulama içi karttır: bildirimler dikkat çeker; uygulama tetiklenen öğeyi ve nedenini gösterir.
Basit bir konuma dayalı hatırlatmalar uygulaması bile koruyuculara ihtiyaç duyar:
Bu limitler uygulamayı düşünceli hissettirir, gürültülü değil.
Özellik eklemeden önce “çalışıyor” ne demek olduğunu ölçülebilir olarak kararlaştırın. İlk sürüm için birkaç ölçülebilir sinyale odaklanın:
Bu metrikler iyileşirse, daha fazla tetikleyici, widget ve akıllı zamanlama gibi özellikler eklemeye hak kazanırsınız.
Teknik seçimleriniz şu soruya dayanmalı: uygulama bir yere ilişkin tetiklemeyi ne kadar güvenilir fark edebilir ve uyarıyı gösterebilir—pil tüketmeden ve kullanıcıları şaşırtmadan?
Native (iOS: Swift + Core Location, Android: Kotlin + Location API'ları) arka planda konum davranışı, sistem kısıtlamaları ve hata ayıklama için genelde daha öngörülebilirdir. Eğer ekibiniz platformları zaten biliyorsa MVP için en hızlı yol genellikle budur.
Çapraz platform (Flutter, React Native) UI geliştirmeyi hızlandırıp tek bir kod tabanı sağlayabilir, ancak konum özellikleri plugin'lere bağımlıdır. Basit bir uygulama için bu yeterli olabilir; ancak arka plan sınırları, üretici farklılıkları veya OS güncellemeleri gibi kenar durumlarda native yamalar gerekebilir.
Pratik kural: konum tetikleyicileri ana özellikse, ekibiniz seçtiğiniz çapraz platformda zaten konum ağırlıklı uygulamalar yayınlamıyorsa native tercih edin.
Hızlı prototip ya da ilk sürüm için Koder.ai gibi sohbet tabanlı bir spesifikasyondan çalışan bir uygulama üretebilen platformlar Flutter kullanarak hızlı başlangıç sağlayabilir—sonrasında isterseniz React için web ve senkron için Go + PostgreSQL backend ekleyebilirsiniz.
MVP için küçük ve net tutun:
Bu yaklaşım çevrimdışı kullanımını doğal olarak destekler: bağlantı olmasa bile uyarılar çalışır.
Çoklu cihaz senkronu, paylaşılan listeler (aile/ekip), analitik veya sunucu tarafından yönetilen deneyler gerektiğinde backend ekleyin. Aksi takdirde backend maliyet, gizlilik yüzeyi ve hata durumlarını artırır.
Backend eklemeye karar verirseniz sınırı temiz tutun: senkron için gereken nesneleri saklayın ve tetik değerlendirmesini mümkün olduğunca cihazda bırakın.
Temel nesneleri sade tutun:
Bu modelle daha sonra temelini yeniden yazmadan yineleyebilirsiniz.
Konum özellikleri, izin isteği anında en çok başarısız olur. İnsanlar “konum”u reddetmiyor; belirsizliği reddediyorlar. İşiniz, tam olarak ne olacağını ve ne zaman olacağını açıklamaktır.
OS diyaloguyla başlamayın. Önce basit, tek sayfalık bir açıklama gösterin:
Kısa, net ve anlaşılır tutun. İki cümlede açıklayamıyorsanız, özellik muhtemelen çok geniştir.
iOS’ta kullanıcıların çoğu Uygulama Kullanılırken (When In Use) veya Her Zaman (Always) arasında seçim yapar. Uygulamanız kapalıyken de uyarılar gerekiyorsa Her Zaman gerektiğini açıklayın—ve bu izni yalnızca kullanıcı en az bir konum uyarısı oluşturduktan sonra isteyin.
Android’te kullanıcılar genellikle önce ön plan (foreground) konum verir, sonra arka plan izni ayrı olarak istenir. Bunu iki adımlı bir güven akışı olarak ele alın: önce görünür değeri kanıtlayın, sonra arka plan erişimi isteyin.
Pek çok telefon kesin ya da yaklaşık konum seçeneği sunar. Kullanıcı yaklaşık seçtiyse deneyimi bozmayın:
Bir yedek sunun: zaman tabanlı hatırlatmalar, manuel “buradayım” kontrolü veya sadece uygulama açıkken tetikleyen bir adres seçici gibi.
Ayrıca izinleri yeniden etkinleştirme yolunu net gösterin (ör. ayarlar ekranı ve kısa bir açıklama).
Uygulamanızın “kullanıcının nerede olduğunu” nasıl bildiğini seçmek pil ömrü ve güvenilirlik için en büyük karardır. Basit konuma dayalı uyarılar için genelde hâlâ doğru hissettiren en hafif seçeneği tercih edin.
Geofencing, bir yer etrafında sanal bir sınır (yarıçaplı daire) tanımlamanıza izin verir. OS, “giriş” ve “çıkış” olaylarını izler ve gerektiğinde uygulamanızı uyandırır.
Bu, uyarılarınız yer tabanlı ve ikili (varış/ayrılış) ise idealdir. Kullanıcılara da kolayca açıklanır: “Bu konuma yaklaştığınızda sizi uyaracağız.”
Basit uygulamalar için önerilen varsayılanlar:
Yaklaşık konum güncellemeleri gerekiyorsa (ör. yakın kuralları yenilemek için), significant location change iyi bir orta yol sunar. Cihaz sadece anlamlı hareket algıladığında güncelleme bildirir, bu da sürekli GPS’den çok daha az pil tüketir.
Sürekli GPS takibi gerçek zamanlı ihtiyaçlar (fitness, navigasyon) dışında genelde gereksizdir. Pil çabuk biter ve gizlilik hassasiyeti artar.
Pratik yaklaşım: birincil kurallar için geofenceleri kullanın, ekstra güvenilirlik gerekiyorsa only significant-change güncellemelerini ekleyin.
Bir konum tetikleyici, uyarı doğru zamanda ve kolayca işlem yapılabilir şekilde gösterilmezse işe yaramaz. Teslimatı bir ürün özelliği gibi ele alın: zamanlama, ifade şekli ve “bir sonraki dokunuş” tespit kadar önemlidir.
Çoğu MVP için yerel bildirimler güvenilir uyarılara en hızlı yoldur. Cihaz üzerinde tetiklenir, sunucuya ihtiyaç duymaz ve mimarinizi basit tutar.
Push bildirimleri yalnızca gerçekten sunucu kontrollü davranış gerektiğinde (cihazlar arası senkron, uzaktan değiştirilen uyarılar, paylaşılmış takvimlerle bağlı uyarılar) kullanılmalı.
Yardımcı bir hatırlatma bile çok sık tekrar ederse rahatsızlık olur. Açık dille açıklanabilecek hafif kontroller ekleyin:
Bu kurallar uygulamanızın itibarını korur: daha az sinirli kullanıcı, daha az kaldırma.
İyi bir uyarı “sonraki ne yapmalıyım?” sorusunu cevaplar. Bildirimleri şu şekilde tasarlayın:
Kullanıcı bir uyarıdan uygulamayı açtığında, onları odaklanmış bir ekrana yönlendirin: hatırlatma metni, hızlı eylemler ve zarif bir “Tamamlandı” onayı. Yoğun bir gösterge paneline atmayın—kesintinin aciliyetine uygun tutun.
Konuma duyarlı bir uyarı, bir kişinin bunu düşünmeden kurabildiği anda en iyi performansı gösterir. Amaç, oluşturma akışının tanıdık, affedici ve hızlı hissetmesi—özellikle konum seçimi teknik olmayan kullanıcılar için kafa karıştırıcı olabilir.
Akışı üç karar üzerine odaklayın:
Pratik bir varsayılan, mesaj alanını kısa bir şablonla doldurmak (örn. “Unutma…”) ve kullanıcıların metre/fit anlamak zorunda kalmaması için makul bir yarıçap ön seçmektir.
Birden fazla seçim yolu sunun, ama hepsini aynı anda göstermeyin.
Önce arama çoğunlukla en hızlı seçenektir: yer tamamlama ile “Ev”, “Migros” veya belirli bir adres kolay bulunur.
İki destekleyici seçenek ekleyin:
Çoğu kullanıcı metreyle düşünmez. Bir kaydırıcı kullanın ve düz dil etiketleri verin (örn. “Çok yakın”, “Yakın”, “Birkaç blok ötede”) ama sayısal değeri de net tutun. Küçük bir önizleme satırı (“~200 m içindeki tetiklemeler”) sürprizleri azaltır.
Uyarılar oluşturulduktan sonra kullanıcılar hızlı kontrol istemelidir:
Listeyi okunaklı tutun: yer adı, tek satırlık mesaj önizlemesi ve ince bir durum gösterimi (“Etkin”, “Duraklatıldı”, “Arşivlendi”).
Konum UX genellikle küçük harita kontrollerine dayanır—bu yüzden erişilebilirlik kasıtlı olmalı:
Hızlı, net ve geri alınabilir bir kurulum deneyimi destek taleplerini azaltır ve kullanıcıların konuma dayalı hatırlatmaları kullanma olasılığını artırır.
Konuma duyarlı bir hatırlatmalar uygulaması, kullanıcı sinyallerinin zayıf olduğu, pilin azaldığı veya uygulamanın günlerce açılmadığı durumlarda bile çalışmalı. Bu kısıtları baştan tasarlamak basit uygulamanızın güvenilir kalmasını sağlar.
Cihazı tetiklemenin doğrulanmış kaynağı olarak görün. Hatırlatmaları yerel olarak saklayın (ör. ad, enlem/boylam, yarıçap, etkin durumu, son düzenleme zaman damgası).
Hesap veya senkron planlıyorsanız, değişiklikleri bir “outbox” tablosuna kuyruğa alın: oluşturma/güncelleme/silme eylemleri zaman damgasıyla. Ağ ulaştığında bu işlemleri gönderin ve sunucu onayı alındıktan sonra tamamlandı olarak işaretleyin.
Hem iOS hem Android uygulamaların arka planda neler yapabileceğini sınırlar, özellikle kullanıcı uygulamayı sık açmıyorsa.
Güvenilir yaklaşım OS tarafından yönetilen konum tetikleyicilerine (geofenceler / region monitoring) dayanmaktır—bunlar uygulamanızı gün boyu aktif tutmadan doğru anda uyandırmak için tasarlanmıştır.
Varsayımlara dikkat edin:
Sık GPS sorgulama pilin hızlı tükenmesine ve uygulamanın kaldırılmasına neden olur. Tercihler:
Hatırlatmalar birden fazla cihazda düzenlenebiliyorsa, basit bir çakışma politikası belirleyin. Pratik varsayılan “son yazan kazanır” (server timestamp kullanarak) ve silinmeler için tombstone kaydıdır, böylece eski bir cihaz senkronu silinmiş bir öğeyi geri getirmez.
Konuma dayalı hatırlatmalar kişisel hissedilir; kullanıcılar verilerinize nasıl davrandığını gözlemler. İyi gizlilik sadece politika metni değildir—ürün tasarımıdır.
Başlangıçta en küçük gerekli veri kümesiyle başlayın. Bir hatırlatıcı sadece bir yere varıldığında tetiklenecekse, genellikle kullanıcı yolunu saklamaya gerek yoktur.
Uygulama “tetik karşılandı, uyarı göster” kararını cihazda verebiliyorsa, bunu yapın. Cihaz üstü işlem veri maruziyetini azaltır ve uyumluluğu kolaylaştırır.
Gizliliği yasal metinlerin arkasına saklamayın. Açık, sade bir ekran ekleyin:
Kaydedilmiş konumları hassas veri gibi ele alın.
Basit bir kural: veri kullanımınızı iki cümlede açıklayamıyorsanız muhtemelen çok fazla veri topluyorsunuz.
Konum özellikleri genelde “telefonunuzda çalışır” ama gerçek kullanıcılar için başarısız olur çünkü koşullar karmaşıktır: zayıf sinyal, farklı cihazlar, pil kısıtlamaları ve öngörülemeyen hareket. İyi bir test planı bu hataları erken görünür kılar.
Uygulamayı normal bir yapı ile dış ortamda birkaç kez çalıştırın.
Beklenen tetikleme zamanı, gerçek tetikleme zamanı ve uygulamanın açık/background/force-closed olup olmadığını not edin.
Gerçek dünya testleri önemli ama yavaştır. Tekrarlanabilir testler ekleyin:
Mocking bir hatayı tam olarak yeniden üretmenizi ve düzeltmeyi doğrulamanızı sağlar.
Konum davranışı Android üreticilerine ve OS sürümlerine göre değişir. Kapsayın:
Kayıtları hata ayıklama aracı olarak kullanın, konum günlüğü olarak değil. Aşağıdaki gibi olayları kaydedin:
Ham koordinatlar veya uzun konum izleri depolamaktan kaçının. Hata ayıklama için konum gerekiyorsa, bunu isteğe bağlı, kısa ömürlü ve kullanıcı kontrollü tutun.
Konuma duyarlı bir uygulamayı onaylatmak, çoğunlukla açıklıkla ilgilidir: özellikle arka planda neden konuma eriştiğinizi gerekçelendirmeli ve kullanıcıya veri konusunda saygılı olduğunuzu göstermelisiniz.
iOS (App Store):
Apple, izin amaç metinlerinizi inceler. Konum amaç dizeleri kullanıcıya açıkça ne sunduğunuzu anlatmalıdır. “Her Zaman” konumu istiyorsanız, “Uygulama Kullanılırken” ile güvenilir çalışmayacağı konusunda gerekçe sunmaya hazır olun.
Android (Google Play):
Google arka plan konumuna karşı katıdır. Bunu talep ederseniz Play Console’da özelliği ve neden ön planın yeterli olmadığını açıklayan bir bildirim doldurmanız gerekebilir. Ayrıca Veri Güvenliği (Data Safety) ayrıntılarını doldurmanız istenir (ne topluyorsunuz, nasıl kullanılıyor, paylaşılıyor mu).
App Store/Play Store açıklamanızda kullanıcı faydasını bir cümlede önce verin:
“Markete varınca listenizi unutmayın diye hatırlatmalar alın.”
Ayrıca şunları belirtin:
Basit bir dağıtım sırayla kullanın:
Çökme oranları, izin opt-in oranları ve tetikleyicilerin güvenilirliği izleyin.
Konuma duyarlı uyarılar MVP’sini yayınlamak işin yarısıdır. Diğer yarısı gerçek kişiler için işe yaradığını kanıtlamak ve sonra ne yapılacağına kanıta dayanarak karar vermektir—tahmine değil.
İlk günden aşağıdaki olayları takip edin:
Bu üçü, kullanıcıların uyarı kurup kurmadığını, uygulamanın konumu algılayıp algılayamadığını ve temel özelliğin gerçekten çalışıp çalışmadığını gösterir.
Backend kullanıyorsanız analitik gizlilik odaklı olsun: mümkün olduğunca toplulaştırın, ham koordinatlardan kaçının ve kaydedilenleri belgelerle açıklayın.
Yüksek tetikleme sayıları yine kötü bir deneyim anlamına gelebilir. Kalite sinyalleri ekleyin:
MVP için pratik hedef, yanlış ve kaçırılan tetiklemeleri hafta hafta azaltmaktır.
İlk yapımın ötesinde sürekli çalışma planlayın:
Daha hızlı yayın hedefliyorsanız, boilerplate ve yinelemeyi azaltan araçları düşünün. Örneğin Koder.ai, snapshot ve geri alma ile birlikte kaynak kodu dışa aktarma desteği sağlayarak çok sayıda OS ve cihaz kombinasyonunu test ederken yardımcı olabilir.
Yeniden kullanım oranını artıracak özelliklere öncelik verin:
Location-aware prompt (konuma duyarlı uyarı), kullanıcının bulunduğu yere göre tetiklenen bir hatırlatmadır; yani zamana değil konuma bağlıdır.
Genellikle şunları içerir:
Güçlü bir MVP güvenilirlik ve açıklık üzerine kuruludur:
Önce Enter + zaman aralıkları ile başlayın.
Güvenilirlik ve kullanıcı deneyimini doğruladıktan sonra Exit veya Dwell ekleyin.
Doğruluk ve güvenilirlik arasında denge kuran varsayılanlar kullanın:
Ayrıca mantıksız yarıçaplara (örn. 10 m veya 50 km) izin vermeyin.
Sistem izin penceresini göstermeden önce faydayı kısaca açıklayın.
Pratik akış:
Reddedilirse, zaman tabanlı hatırlatmalar veya uygulama açıkken çalıştırma gibi yedekler sunun.
Deneyimi bozmadan adapte olun:
Uygulamanın daha az hassas ama yine de işlevsel olmasını sağlayın.
Basit varış/ayrılış hatırlatmaları için OS tarafından yönetilen geofencing/region monitoring tercih edin.
Önce geofencelere geçin, ekstra güvenilirlik gerekiyorsa significant-change güncellemelerini ekleyin.
Başlangıçta çevrimdışı-öncelikli olun:
Senkron eklerseniz, değişiklikleri bir “outbox” tablosuna kuyruğa alın ve basit bir çakışma politikası (ör. son yazan kazanır) kullanın; silinmeler için tombstone yaklaşımı düşünün.
Bildirimleri eyleme geçirilebilir ve öngörülebilir yapın:
Bu, kullanıcı yorgunluğunu azaltır ve hatırlatmalara güveni artırır.
Gerçek dünya koşullarında test edin:
Ayrıca simülatör ve mock lokasyonlarla tekrarlanabilir testler oluşturun (teleport, sınırda gezinme).
Bu, kurulumu basit tutar ve “bildirim kaosu”nu önler.