Tüm uygulamalar
Mysterious Treasure uygulama ikonu

Mysterious Treasure

Şehre gizlenmiş gerçek ödülleri ipuçlarıyla bulmaya çalıştığın konum tabanlı hazine avı.

  • iOS
  • Android
  • 2025
  • Kendi ürünüm
App Store · arşiv Google Play · arşiv

Ekran görüntüleri

Büyütmek için bir görsele tıklayın.

Uygulama hakkında

Mysterious Treasure bir oyun değil, gerçek ödüllü bir hazine avı yarışmasıydı. Harita üzerindeki bölgelere ödüller gizleniyordu — bir telefon, bir kulaklık, bir hediye çeki — ve katılımcılar yayınlanan ipuçlarını çözerek ödülü ilk bulan kişi olmaya çalışıyordu. Her yarışmanın bir süresi vardı; ekranda saniyesine kadar geri sayan bir sayaç dönüyordu.

Bu ürünün asıl teknik problemi konum bulmak değil, konumu doğrulamaktı. Hazinenin tam koordinatı hiçbir zaman telefona gönderilmiyordu; kullanıcıya yalnızca hazinenin saklandığı yaklaşık bölge gösteriliyordu. Aksi hâlde uygulamanın ağ trafiğine bakan biri tek bir ipucunu bile çözmeden ödülü alabilirdi. Bulma iddiası da cihazın söylediğine göre değil sunucuda değerlendiriliyor, sahte konum bildiren cihazlar eleniyordu.

“İlk bulan kazanır” kuralı basit görünür ama arka planda bir yarış koşulu problemidir. Aynı hazineyi neredeyse aynı anda iki kişi bulduğunda ödülün iki kez verilmemesi gerekiyor. Kazananı belirleyen adımı, işlem (transaction) içinde çalışan tek bir yazma hâline getirdim: ödül bir kez veriliyor, sonradan gelen istekler yarışmanın kapandığını görüyor. Geri sayım da aynı mantıkla cihaz saatine değil sunucu saatine bakıyordu — telefonun tarihini değiştirerek süre kazanmak mümkün değildi.

Katılım tarafında üç yol bıraktım: uygulama içi satın alınan token ile, premium üyelik ile ya da ödüllü reklam izleyerek. Para harcamak istemeyen kullanıcının da oynayabilmesi ürünün canlı kalması için şarttı; katılımcı sayısı düştüğü anda yarışmanın kendisi anlamını yitiriyor.

Uygulama bugün yayında değil. İki sebebi vardı: mağaza kuralları tarafında sorun çıktı ve konum tabanlı, ödüllü bir oyunu tek başıma yürütmeye vaktim yoktu. Fiziksel dünyada oynanan ve ödül dağıtan bir uygulama, hem kural hem de operasyon açısından yazdığım en talepkâr üründü. Konum doğrulama ve yarış koşulu tarafında öğrendiklerim duruyor; ama bir daha benzer bir şey tasarlarsam mağaza kurallarını ve günlük operasyon yükünü ilk günden hesaba katarım.

Öne çıkan özellikler

  • Harita üzerinde hazine keşfi: çevrendeki ve şehirdeki aktif yarışmaların harita üzerinde gösterimi
  • İpucu tabanlı arama: yarışmaya özel ipuçlarını çözerek hazinenin saklandığı noktayı bulma
  • Sunucu taraflı konum doğrulama: tam koordinat cihaza hiç gönderilmez, bulma iddiası sunucuda doğrulanır
  • Tek kazanan garantisi: eşzamanlı bulma isteklerinde ödülün bir kez verilmesini sağlayan işlem tabanlı kilit
  • Sunucu saatli geri sayım: gün, saat, dakika ve saniye — cihaz saatinden bağımsız
  • Üç katılım yolu: token, premium üyelik veya ödüllü reklam izleme
  • Keşfet bölümleri: konumuna yakın, popüler, yeni eklenen ve süresi dolmak üzere olan yarışmalar
  • Yarışma bülteni: sonuçlar, yakında eklenecek hazineler ve bildirimler
  • Katıldığın yarışmalar: devam eden ve tamamlanan katılımların takibi
  • Uygulama içi satın alma ve abonelik altyapısı

Kullanılan teknolojiler

105 teknoloji · 12 başlık

Diller ve Platform

  • Swift (iOS)
  • Java (Android)
  • Kotlin (Android)
  • Native iOS geliştirme
  • Native Android geliştirme

Arayüz ve Uygulama Katmanı

  • UIKit / SwiftUI
  • XML Layout / Jetpack Compose
  • Auto Layout & Constraints
  • UICollectionView / RecyclerView
  • Geri sayım zamanlayıcıları
  • İzin isteme akışları
  • Uygulama yaşam döngüsü

Arka Uç ve Veri

  • Firebase Firestore
  • Cloud Functions (callable)
  • Firestore güvenlik kuralları
  • İşlem (transaction) tabanlı kilit
  • Sunucu zaman damgası
  • Bileşik indeks ve sorgular
  • Firebase Storage
  • Kimlik doğrulama ve oturum
  • Firestore çevrimdışı önbelleği
  • Batch write
  • İmleç tabanlı sayfalama
  • Denormalizasyon
  • Sayaç alanları
  • Cloud Functions tetikleyicileri
  • Zamanlanmış görevler
  • Veri geçişi (migration)

Konum ve Harita

  • MapKit (iOS)
  • Google Maps SDK (Android)
  • Core Location (iOS)
  • FusedLocationProvider (Android)
  • Konum izinleri (iOS/Android)
  • Coğrafi yakınlık sorgusu
  • Sunucu taraflı konum doğrulama

Gerçek Zamanlı ve Bildirim

  • Firestore anlık dinleyiciler
  • Firebase Cloud Messaging
  • APNs (iOS)
  • Android bildirim kanalları
  • Bildirim izni akışı

Ödeme ve Gelir

  • StoreKit (iOS)
  • Google Play Billing (Android)
  • Abonelik yönetimi
  • Sunucu taraflı makbuz doğrulama
  • Tüketilebilir ürün (token)
  • Ödüllü reklam entegrasyonu

Mimari ve Örüntüler

  • MVVM / MVC
  • Kotlin Coroutines
  • async/await & GCD (iOS)
  • Repository katmanı
  • Yarış durumu (race condition) yönetimi
  • İstemci-sunucu güven sınırı
  • Sayfalama ve önbellek

Ağ ve Veri Aktarımı

  • URLSession (iOS)
  • HTTP istemcisi (Android)
  • JSON çözümleme (Codable)
  • Yeniden deneme ve zaman aşımı
  • Çevrimdışı durum yönetimi
  • Görsel önbellekleme
  • İndirme ve yükleme kuyruğu
  • Çok parçalı dosya yükleme
  • Bant genişliğine göre kalite

Güvenlik ve Gizlilik

  • Keychain (iOS)
  • EncryptedSharedPreferences (Android)
  • HTTPS ve ATS
  • Kimlik doğrulama token yönetimi
  • Oturum yenileme
  • İzin gerekçe metinleri
  • Hesap silme akışı
  • Sunucu taraflı yetki kontrolü
  • Hassas veri maskeleme

Arayüz Durumları ve Erişilebilirlik

  • Koyu tema desteği
  • Dinamik yazı tipi
  • Güvenli alan (SafeArea)
  • Boş / yükleniyor / hata durumları
  • İskelet (skeleton) yükleme
  • Çekerek yenileme
  • Klavye ve odak yönetimi
  • Derin bağlantı (Universal Links)
  • VoiceOver / TalkBack etiketleri

Test, Hata Ayıklama ve Ölçüm

  • Xcode Instruments
  • Android Profiler
  • LLDB
  • Logcat
  • Bellek sızıntısı takibi
  • Ağ trafiği inceleme
  • Çökme raporu okuma
  • Gerçek cihazda test
  • Farklı ekran boyutu testi

Araçlar ve Yayın Süreci

  • Xcode
  • Android Studio
  • CocoaPods
  • Gradle
  • Git
  • App Store Connect
  • Google Play Console
  • Açık kaynak kütüphaneler (GitHub)
  • TestFlight
  • Play Console iç test
  • Sürüm ve build numaralama
  • İmzalama ve provizyon profilleri
  • App Store inceleme süreci
  • App Privacy / Data Safety formu
  • Mağaza görselleri ve ASO metinleri
  • Uygulama boyutu optimizasyonu
Tek kişilik iş

Fikir, tasarım, arayüz, kod, mağaza yayını ve yayın sonrası bakım — sürecin tamamını baştan sona tek başıma yürüttüm. Ekip, ajans ya da dış kaynak yok.

Geliştirme notları

  • Diller ve yaklaşımiOS tarafı Swift, Android tarafı Java ve Kotlin ile yazıldı. Çapraz platform bir çatı kullanılmadı; her iki uygulama da kendi platformunun yerel araçlarıyla geliştirildi. 2020'den beri mobil geliştiriyorum.
  • Yapay zekâ desteği yokKodun tamamı elle yazıldı. Bu proje, Claude Code ve Codex gibi yapay zekâ kodlama araçları yaygınlaşmadan önce geliştirildi — o dönemde böyle bir araç yoktu.
  • BağımlılıklarÇok sayıda açık kaynak GitHub kütüphanesi ve CocoaPods paketi kullanıldı. Bağımlılık yönetimi iOS tarafında CocoaPods, Android tarafında Gradle ile yürütüldü.
  • Güven sınırıHazinenin tam koordinatı istemciye hiç gönderilmedi; bulma iddiası, sahte konum ihtimaline karşı sunucuda değerlendirildi.
  • Test ve hata ayıklamaGerçek cihazlarda, farklı ekran boyutlarında ve zayıf ağ koşullarında test edildi. Yayın sonrası çökme raporları okunup düzeltmeler sürüm sürüm gönderildi.
  • Yayın süreciHer iki mağazanın inceleme sürecini de tek başıma yürüttüm: App Store Connect ve Google Play Console kurulumu, gizlilik bildirimi (App Privacy / Data Safety), sürüm notları, mağaza görselleri ve red gerekçelerine göre düzeltmeler.
  • Ürün sahipliğiFikir, tasarım, geliştirme, arka uç, mağaza yayını ve yayın sonrası bakım — sürecin tamamını tek başıma yürüttüm.

Mysterious Treasure hakkında konuşalım

Teknik detayları, karşılaştığım sorunları ve nasıl çözdüğümü memnuniyetle anlatırım.