Mobil29 Eylül 20266 dk okuma

Mobil Uygulama Geliştirme: İlk Karardan Yayına Kadar

Platform seçimi: iOS, Android ya da her ikisi?

Bir mobil uygulama fikriniz var ama iOS mu Android mi diye takıldıysanız yalnız değilsiniz. İlk teknik karar çoğu projenin bütçesini baştan belirler.

iOS ile başlamak genellikle daha az cihaz çeşitliliği demektir: sınırlı sayıda ekran boyutu, işletim sistemi versiyonu ve donanım kombinasyonu. Kod test etmek ve hata yakalamak daha öngörülebilir. Android tarafında onlarca üretici, binlerce farklı ekran çözünürlüğü ve yüzlerce eski OS versiyonu var — bu da test ve optimizasyon süresini uzatır.

Her iki platformu birden hedeflemek isterseniz üç yol var: native geliştirme (iOS için Swift/SwiftUI, Android için Kotlin/Java — iki ayrı kod tabanı), cross-platform framework'ler (Flutter, React Native gibi — tek kod tabanı), ya da hibrit yaklaşım (web teknolojileri üzerine native wrapper). Native en performanslı ve esnek olanı; cross-platform daha hızlı başlangıç sunar ama karmaşık UI gereksinimlerinde ya da platform-spesifik özelliklerde (kamera, Bluetooth, NFC) limitler çıkabilir.

Karar verirken hedef kitlenizin hangi platformu kullandığına, bütçenizin ne kadarını geliştirmeye ne kadarını teste ayıracağınıza ve uygulamanın hangi donanım özelliklerine (GPS, push notification, ödeme entegrasyonu) ihtiyaç duyduğuna bakın.

Mimari kararlar: backend, API ve veri akışı

Mobil uygulama sadece kullanıcının elindeki ekran değil. Arkada bir backend sistemi, veritabanı, API katmanı ve muhtemelen üçüncü parti servislerle entegrasyon var.

RESTful API mi GraphQL mi kullanacağınız, veri güncellemelerini push notification ile mi WebSocket ile mi yapacağınız, offline modu destekleyip desteklemeyeceğiniz — bunlar ilk hafta karar almanız gereken teknik seçimler. Offline-first mimari seçerseniz (yani kullanıcı internetsiz de uygulamayı kullanabiliyor), veri senkronizasyonu, çakışma yönetimi ve lokal depolama stratejisi gerekir. Cihazda SQLite mi kullanacaksınız, Realm mi, yoksa key-value store mu? Her birinin performans, boyut ve karmaşıklık açısından farklı etkileri var.

API tasarımında en sık yapılan hata, backend'i web uygulaması mantığıyla kurup mobil ihtiyaçlarını göz ardı etmek. Mobilde internet bağlantısı kesilir, kullanıcı uygulamayı kapatır, arka plana alır — her adımda durum kaybolabilir. Bu yüzden state management kütüphaneleri (Redux, Bloc, Provider gibi) ve retry/queue mekanizmaları gerekir.

Kullanıcı arayüzü: tasarım sistemi ve platform kuralları

iOS ve Android'in kendine özgü tasarım dili var: Human Interface Guidelines (iOS) ve Material Design (Android). Platform kurallarına uymak kullanıcı deneyimini iyileştirir çünkü insanlar kendi işletim sistemlerinin davranışlarına alışık.

Örneğin iOS'te geri dönmek için üstteki back butonu ya da swipe hareketi kullanılır; Android'de sistem çubuğundaki back tuşu var. Navigation yapıları farklı: iOS'te tab bar altta, Android'te çoğunlukla bottom navigation ya da drawer menu. Bu farkları göz ardı edip tek bir tasarım her yere uygulamaya çalışırsanız her iki platformda da yabancı hissettiren bir uygulama çıkar.

Tasarım sistemi kurmak — renk paleti, tipografi, button stilleri, spacing kuralları — geliştirme hızını artırır. Figma ya da Sketch'te component library oluşturup geliştiriciye net spec vermek, sürekli ileri geri yazışmaları önler. Tasarım token'ları kullanarak renk kodlarını, font boyutlarını ve spacing değerlerini hem tasarım hem kod tarafında senkronize tutabilirsiniz.

Test stratejisi: unit, integration ve kullanıcı testi

Mobil uygulama test etmek, web'den daha zahmetli. Farklı ekran boyutları, OS versiyonları, internet hızları, pil durumu, memory kullanımı — hepsi sonucu etkiler.

Unit testler (her fonksiyonun bağımsız doğruluğu), integration testler (modüllerin birlikte çalışması) ve UI testleri (kullanıcı akışlarının simülasyonu) üç temel katman. XCTest (iOS), Espresso/JUnit (Android), ya da cross-platform araçlarla (Detox, Appium) otomatik testler yazabilirsiniz. Ama gerçek cihazlarda manuel test de şart — emülatör her zaman gerçeği yansıtmaz.

Beta test için TestFlight (iOS) ve Google Play Console (Android) internal test kanalları var. Küçük bir kullanıcı grubuna erken erişim verip crash report, kullanım istatistikleri ve geri bildirim toplamak, App Store'a göndermeden önce kritik hataları yakalamayı sağlar.

Performans testi de unutulmamalı: uygulama açılış süresi, ekran geçişleri, API yanıt süreleri, memory leak kontrolü. Profiler araçları (Xcode Instruments, Android Profiler) bu metrikleri ölçmenize yardımcı olur.

App Store ve Google Play: yayın süreci

Uygulamanız hazır, ama mağazalara göndermeden önce birkaç adım daha var.

iOS tarafında Apple Developer hesabı açmanız, sertifika ve provisioning profile oluşturmanız gerekir. App Store'a gönderdiğinizde Apple insan reviewerlar uygulamanızı test eder — UI tutarlılığından içerik politikalarına, güvenlik standartlarından kullanıcı verisi kullanımına kadar her şeye bakarlar. Reddetme gerekçeleri çok katı olabilir: eksik privacy policy, belirsiz permission açıklamaları ya da yararsız bulunan bir özellik bile red sebebi.

Google Play daha esnek ama yine de kural ve politika kontrolleri var. APK/AAB dosyanız, store listing (başlık, açıklama, ekran görüntüleri, video), privacy policy URL'i ve içerik rating gerekli. İnceleme birkaç saatten birkaç güne kadar sürebilir. Ayrıca 2023'ten sonra açılan kişisel geliştirici hesaplarında, yayına çıkmadan önce en az 12 test kullanıcısıyla 14 gün kesintisiz kapalı test yapmak zorunludur; bu süreyi takvime baştan ekleyin.

Her iki platformda da güncelleme stratejisi önemli: major sürüm (büyük değişiklikler), minor update (hata düzeltmeleri), hotfix (kritik sorunlar için hızlı patch). Kullanıcıların uygulamayı güncellemesini sağlamak, eski sürümleri desteklemeyi ne kadar sürdüreceğinize karar vermek de planlama gerektirir.

Analytics, monitoring ve sürekli geliştirme

Yayına aldıktan sonra iş bitmez. Kullanıcılar uygulamayı nasıl kullanıyor, hangi ekranda takılıyor, nerede çıkıyor — bunları izlemek için analytics kurulumu şart.

Firebase Analytics, Mixpanel, Amplitude gibi araçlar event tracking ve kullanıcı segmentasyonu sağlar. Crash reporting (Crashlytics, Sentry) ile hangi hatalarda uygulama çöküyor, hangi satırda sorun var öğrenebilirsiniz. Remote config ile backend'den uygulama ayarlarını değiştirebilir, A/B testleri yapabilirsiniz — kullanıcıya uygulama güncellemesi yükletmeden.

Dijital Ürün Geliştirme: Fikirden Lansmana 7 Adımlık Yol Haritası yazımızda anlattığımız gibi, yayın sadece bir kilometre taşı; asıl iterasyon ve öğrenme döngüsü orada başlar. Kullanıcı geri bildirimleri, kullanım verileri ve pazar değişiklikleri ışığında ürünü sürekli geliştirmek, başarılı mobil uygulamaların ortak özelliği.

Sık yapılan hatalar

  • Her şeyi ilk versiyona sığdırmaya çalışmak: Özellik listesi uzadıkça proje süresi ve maliyeti katlanır. MVP nedir ve neden fikrinizi önce küçük başlatmalısınız? yazımızda anlattığımız gibi, çekirdek değeri test edip sonra genişletmek daha mantıklı.
  • Performansı son aşamaya bırakmak: Ağır animasyonlar, optimize edilmemiş görseller, gereksiz API çağrıları — bunlar baştan kurgulanmazsa sonradan düzeltmek çok zor. Her sprint'te performance benchmark yapın.
  • Platform farklılıklarını görmezden gelmek: Aynı tasarımı her yere uygula mantığı kullanıcı deneyimini zayıflatır. iOS ve Android'in kendine özgü beklentileri var; tasarım ve etkileşimde bunları göz önünde bulundurun.
  • Güvenlik ve veri koruma politikalarını atlamak: GDPR, yerel gizlilik düzenlemeleri ve diğer yasal gereksinimler mobil uygulamalara da uygulanır. Kullanıcı verilerini nasıl topladığınız, sakladığınız ve işlediğiniz açık olmalı — hem hukuki sorun yaşamamak hem de store onayı almak için.
  • Test etmeden yayınlamak: Benim telefonumda çalışıyor yetmez. Farklı cihazlar, OS versiyonları, internet koşulları — hepsinde test edilmeli.

Mobil uygulama geliştirme, doğru planlama ve teknik kararlarla yönetilebilir bir süreç. Platform seçiminden backend mimarisine, tasarım kurallarından test stratejisine kadar her adımda bilinçli kararlar almak, hem geliştirme süresini kısaltır hem de kullanıcı memnuniyetini artırır. Projeniz için teknik mimari, platform seçimi veya geliştirme süreci konusunda sorularınız varsa, ücretsiz bir ön değerlendirme görüşmesi yapabiliriz.