SwiftUI Navigation Sistemi: Deep Linking ve Coordinator Pattern
NavigationStack'in ötesine geçin! Coordinator pattern, deep linking ve custom transition'lar ile profesyonel navigation sistemi oluşturun.
22 dkEndüstriyel Jeneratör IoT Yönetim Platformu
Kullanıcı
İndirme
App Store Puanı
Geliştirme Süresi
Teksan App, Türkiye'nin en büyük jeneratör üreticisi Teksan Group için geliştirilen ve endüstriyel enerji çözümlerinin dijital dönüşümünü sağlayan kapsamlı bir kurumsal mobil platformdur. 350+ kaynak dosyasıyla kariyer boyunca üzerinde çalıştığım en büyük ve en karmaşık proje olan bu uygulama, sahada çalışan yüzlerce jeneratörün gerçek zamanlı izlenmesi, arıza tespiti, bakım planlaması ve teknik servis koordinasyonu gibi kritik iş süreçlerini tek bir mobil platformda birleştirmektedir. Proje, Teksan'ın saha operasyonlarındaki en büyük soruna çözüm getirmek üzere tasarlandı: dağınık jeneratör filolarının merkezi yönetim eksikliği. Geleneksel yöntemle teknisyenler sahaya giderek manuel kontrol yapıyor, arıza bildirimleri telefon ve e-posta üzerinden takip ediliyor, bakım planları Excel tablolarında yönetiliyordu. Bu süreç hem maliyetli hem de hata payı yüksek bir operasyon yaratıyordu. Teksan App, CoreBluetooth framework'ü ile jeneratörlere takılı BLE (Bluetooth Low Energy) sensörlerden anlık veri okuyarak motor sıcaklığı, yakıt seviyesi, voltaj çıkışı, çalışma saati ve titreşim değerlerini gerçek zamanlı olarak izler. Eşik değerleri aşıldığında otomatik alarm oluşturulur ve ilgili teknik servis ekibine push notification gönderilir. CoreData ile offline çalışma desteği sağlanır — saha koşullarında internet erişimi olmayan bölgelerde bile veri toplanır ve bağlantı kurulduğunda otomatik senkronize edilir. Platform üç kullanıcı rolüne hizmet eder: (1) Saha teknisyenleri — jeneratör durumu izleme, arıza kaydı oluşturma, bakım checklist'i tamamlama, (2) Bölge yöneticileri — filo görünümü, performans raporları, ekip atamaları, (3) Merkez yönetim — dashboard istatistikleri, maliyet analizi, SLA takibi. Her rol için özelleştirilmiş arayüz ve yetkilendirme sistemi mevcuttur. 5.000+ aktif kullanıcı ve 15.000+ indirmeyle Teksan'ın saha operasyon verimliliğini %40 artıran bu uygulama, Objective-C'nin endüstriyel ölçekte kullanımının en iyi örneklerinden biridir.
350+ dosyalık bu dev kurumsal projede beş kritik teknik ve operasyonel zorlukla karşılaşıldı: Birincisi, CoreBluetooth ile endüstriyel BLE sensör entegrasyonu — jeneratörlere takılı farklı marka ve modeldeki BLE modüllerinin her birinin farklı GATT profili, farklı characteristic UUID'leri ve farklı veri formatları vardı. Bazı sensörler 16-bit little-endian, bazıları 32-bit big-endian veri gönderiyordu. Bluetooth bağlantı kararlılığı endüstriyel ortamlarda (elektromanyetik parazit, metal yapılar) ciddi sorun yaratıyordu. İkincisi, offline-first mimari zorunluluğu — jeneratörler genellikle şantiye, maden, hastane bodrum katı gibi internet erişimi kısıtlı lokasyonlarda çalışıyor. Teknisyenin sahada topladığı verilerin kaybolmaması, çakışma durumunda doğru birleştirilmesi (conflict resolution) ve bağlantı geldiğinde otomatik senkronizasyonu gerekiyordu. Üçüncüsü, gerçek zamanlı alarm sistemi — motor sıcaklığı 95°C üzerine çıktığında veya yakıt seviyesi %10 altına düştüğünde saniyeler içinde ilgili ekibe bildirim ulaşması gerekiyordu. False positive alarm oranını minimumda tutarken gerçek arızaları kaçırmamak ince bir kalibrasyon gerektiriyordu. Dördüncüsü, 350+ dosyalık Objective-C kod tabanının yönetimi — header dosyaları, manual memory management kalıntıları, delegate chain'ler ve massive view controller'lar ile mücadele. Projeye sonradan dahil olan geliştiricilerin adapte olma süresi uzun oluyordu. Beşincisi, çoklu kullanıcı rolü ve yetkilendirme — teknisyen, bölge yöneticisi ve merkez yönetim farklı veri setlerine erişmeli, farklı aksiyonlar alabilmeliydi. Yetki matrisi 15+ farklı izin kombinasyonu içeriyordu.
Çözüm stratejisi, endüstriyel IoT'nin gerektirdiği güvenilirlik standartlarına uygun şekilde tasarlandı: 1. BLE Abstraction Layer: CoreBluetooth üzerine inşa edilen özel bir soyutlama katmanı geliştirildi. Her sensör markası için ayrı parser sınıfı (SensorParser protocol + marka-spesifik implementation) oluşturuldu. CBCentralManager ile otomatik keşif, bağlantı yönetimi ve yeniden bağlanma (auto-reconnect with exponential backoff) mekanizması kuruldu. Endüstriyel parazit ortamında bağlantı kararlılığını artırmak için connection parameter negotiation (MTU, connection interval) optimize edildi. 2. CoreData Offline-First Mimarisi: CoreData, uygulamanın offline çekirdeğini oluşturur. NSFetchedResultsController ile UI güncellemeleri, NSManagedObjectContext parent-child yapısı ile arka plan senkronizasyonu sağlanır. Her veri kaydına timestamp ve device UUID eklenerek conflict resolution stratejisi uygulandı — server-wins politikası ile çakışmalar otomatik çözülür. Senkronizasyon kuyruğu (sync queue) FIFO prensibiyle çalışır, başarısız istekler retry mekanizmasıyla tekrar denenir. 3. Eşik Tabanlı Alarm Motoru: Her jeneratör modeli için konfigüre edilebilir eşik değerleri (threshold) tanımlandı. Sensör verisi her okunduğunda threshold engine değerleri kontrol eder, eşik aşımında lokal bildirim oluşturur ve REST API üzerinden sunucuya alarm kaydı gönderir. False positive azaltmak için sliding window algoritması (son 5 okumanın ortalaması) uygulandı — tek bir spike alarm tetiklemez, sürekli eşik aşımı gerekir. 4. Modüler Objective-C Mimarisi: 350+ dosya, fonksiyonel modüllere ayrıldı — BLEManager, DataSync, AlarmEngine, ReportGenerator, StockManager. Her modül kendi header/implementation çifti, kendi delegate protocol'ü ve kendi unit test'leri ile bağımsız çalışır. Massive view controller problemi, category extension'lar ve child view controller'lar ile çözüldü. 5. Rol Bazlı Erişim Kontrolü: NSUserDefaults + Keychain kombinasyonuyla token bazlı auth. Her API isteğinde rol bilgisi header'da gönderilir, sunucu tarafında middleware ile doğrulanır. İstemci tarafında UI elemanları rol'e göre dinamik olarak gösterilir/gizlenir.
Uygulama MVC mimarisi üzerinde Objective-C ile geliştirildi. 350+ dosya, 6 ana modüle ayrılarak yönetildi. Bluetooth Low Energy Katmanı: CBCentralManager ile BLE cihaz keşfi — scanForPeripherals ile UUID filtreli tarama. CBPeripheral delegate chain ile service discovery → characteristic discovery → value notification akışı. Her sensör tipi için özel parser: SensorParser protocol tanımlanarak marka-spesifik implementation sağlandı (TekSensor, GenPower, DeepSea Electronics). Veri formatı dönüşümü: NSData → struct mapping (little-endian/big-endian otomatik algılama). Bağlantı yönetimi: auto-reconnect mekanizması 5 deneme, exponential backoff (2s → 4s → 8s → 16s → 32s). Background mode: CBCentralManagerOptionRestoreIdentifierKey ile arka planda BLE bağlantısı sürdürme. CoreData Offline Mimarisi: NSPersistentStoreCoordinator + NSManagedObjectContext parent-child yapısı. Ana context (main queue) UI güncellemeleri, child context (private queue) arka plan senkronizasyonu. NSFetchedResultsController ile UITableView otomatik güncelleme. Entity yapısı: Generator (30+ attribute), SensorReading (timestamp, values, deviceUUID), MaintenanceRecord, AlarmLog, StockItem, ServiceTicket. Conflict resolution: NSMergeByPropertyObjectTrumpMergePolicy — sunucu verisi öncelikli. Sync kuyruğu: NSOperationQueue ile FIFO sıralı, maxConcurrentOperationCount=1. REST API Entegrasyonu: NSURLSession ile custom NetworkManager — request/response interceptor, retry logic, token refresh. JSON parsing: NSJSONSerialization + manual mapping (Codable öncesi dönem). Pagination: cursor-based sayfalama (offset/limit yerine — büyük veri setlerinde performans avantajı). Multipart form data: arıza fotoğrafı upload (NSURLSessionUploadTask ile arka plan upload). Harita ve Lokasyon: MapKit ile jeneratör filo görünümü — MKAnnotationView özelleştirilmiş pin'ler (renk kodu: yeşil=normal, sarı=uyarı, kırmızı=alarm). MKClusterAnnotation ile yoğun bölgelerde gruplama. CoreLocation region monitoring ile jeneratör yakınına gelen teknisyene otomatik bildirim. Güvenlik: Keychain ile auth token saklama. Certificate pinning (NSURLSessionDelegate ile). Jailbreak detection. Veri şifreleme: NSFileProtectionComplete ile CoreData store dosyası koruması.
Piyasa Araştırması ve Bulgular: Türkiye Jeneratör Pazarı: - Türkiye jeneratör pazarı: $1.2B (2024), %7.5 CAGR büyüme - Teksan Group: Türkiye'nin 1 numaralı jeneratör üreticisi, 90+ ülkeye ihracat - Endüstriyel jeneratör IoT pazarı: global $4.5B (2024), 2030'da $12.8B beklentisi - Türkiye'de 500.000+ aktif endüstriyel jeneratör (TÜİK + sektör verileri) - Plansız arıza maliyeti: jeneratör başına yıllık ortalama $15.000-$50.000 - Predictive maintenance ile arıza maliyeti azaltma potansiyeli: %25-40 Sektör Trendleri: - Endüstriyel IoT (IIoT) Türkiye pazarı: $3.2B (2024), %18 CAGR - Saha servis yönetimi yazılımı: global $5.1B (2024) - Mobil-first saha operasyonları: sektörün %65'i mobil çözüme geçiş sürecinde - Predictive maintenance: planlı bakıma göre %35 maliyet avantajı Rakip Analizi: Global çözümler: Caterpillar (Cat Connect), Cummins (Connected Diagnostics), ABB (Ability). Bu platformlar büyük kurumsal müşterilere yönelik, lisans maliyeti yüksek ($50K+/yıl), Türkiye pazarına özel lokalizasyonları zayıf. Teksan App, Türkiye pazarına özel ihtiyaçları karşılayan, maliyet-etkin ve Türkçe destekli tek yerli çözüm olarak konumlandı. Hedef Kitle Segmentasyonu: 1. Saha Teknisyenleri (%50): Günlük operasyonel kullanım, BLE sensör okuma, arıza kaydı 2. Bölge Yöneticileri (%30): Filo yönetimi, performans raporları, ekip koordinasyonu 3. Merkez Yönetim (%15): Dashboard, maliyet analizi, SLA takibi 4. Müşteri Temsilcileri (%5): Müşteri jeneratör durumu sorgulama, servis geçmişi Teknik Benchmark: - BLE bağlantı mesafesi: endüstriyel ortamda 10-15m (açık alanda 30m+) - Sensör veri okuma frekansı: 5 saniye (konfigüre edilebilir) - Offline veri kapasitesi: 30 günlük sensör verisi (~50MB CoreData store) - Sync hızı: 1000 kayıt/dakika (WiFi), 200 kayıt/dakika (3G/4G)
Tasarım süreci, endüstriyel kullanıcıların özel ihtiyaçlarına uygun şekilde 5 fazda yürütüldü: Faz 1 — Saha Keşfi ve Kullanıcı Araştırması (3 hafta): Teksan'ın İstanbul fabrikasında 1 haftalık saha gözlemi yapıldı. 15 saha teknisyeni ile birebir görüşme, 5 bölge yöneticisi ile derinlemesine mülakat gerçekleştirildi. Mevcut iş akışı haritalandı: arıza bildirimi telefon → Excel kayıt → e-posta → atama → saha ziyareti → rapor. Bu süreç ortalama 4 saat sürüyor, hata payı yüksek. En kritik bulgu: teknisyenlerin %80'i sahada eldiven giyiyor ve ekranı tek elle kullanıyor — tüm UI kararlarının temeli bu gözlem oldu. Faz 2 — Bilgi Mimarisi ve Rol Tasarımı (2 hafta): 3 kullanıcı rolü (teknisyen, yönetici, merkez) için ayrı persona ve journey map oluşturuldu. Teknisyen akışı: BLE bağlan → sensör oku → checklist tamamla → fotoğraf ekle → rapor gönder (5 adım, maksimum 10 dakika). Yönetici akışı: filo haritası → alarm listesi → atama yap → rapor incele. Navigation yapısı: UITabBarController ile 5 ana tab (Dashboard, Cihazlar, Alarmlar, Servis, Profil). Her tab'da UINavigationController ile drill-down. Faz 3 — Wireframe ve Endüstriyel UI Kit (3 hafta): Endüstriyel ortama özel UI kit oluşturuldu: minimum 56pt touch target (eldiven uyumu), 16pt+ font boyutu, 7:1+ kontrast oranı (güneş altı okunabilirlik), tek el kullanımına uygun bottom-aligned aksiyon butonları. BLE bağlantı durumu her zaman görünür status bar. Sensör verileri gauge göstergeler ile görselleştirildi (analog saat benzeri — teknisyenlerin alışık olduğu format). Renk kodlaması: yeşil=normal (0-70%), sarı=uyarı (70-90%), kırmızı=alarm (90-100%). Faz 4 — Prototip ve Saha Testi (2 hafta): 5 saha teknisyeni ile gerçek jeneratör ortamında prototip testi yapıldı. Temel bulgular: (1) BLE bağlantı bekleme ekranında progress indicator yetersiz → sinyal gücü göstergesi + tahmini bekleme süresi eklendi, (2) Checklist formunda klavye ekranın yarısını kapatıyor → picker ve toggle bazlı girişe geçildi (metin girişi %80 azaltıldı), (3) Fotoğraf çekimi sırasında kamera arayüzü karmaşık → tek buton ile çek + otomatik arıza bölgesi işaretleme. Görev tamamlama süresi: 15 dakikadan 7 dakikaya düşürüldü. Faz 5 — Yönetici Dashboard ve Raporlama (2 hafta): Bölge yöneticileri için harita tabanlı filo görünümü tasarlandı — MKMapView üzerinde jeneratör durumuna göre renk kodlu pin'ler. Drill-down: pin'e dokun → cihaz detay → sensör grafiği (Charts framework). Haftalık/aylık performans raporları PDF export ile. Dashboard'da 4 KPI kartı: aktif alarm sayısı, bakım bekleyen cihaz, ortalama çalışma süresi, yakıt tüketim trendi.
Teksan App, Teksan Group'un saha operasyonlarını dijital dönüşüme uğratan stratejik bir platform oldu: Operasyonel Metrikler: - Saha operasyon verimliliği: %40 artış (manuel süreçlerden dijitale geçiş) - Arıza tespit süresi: ortalama 4 saatten 15 dakikaya düşürüldü (%94 iyileşme) - Bakım planlama doğruluğu: %65'ten %92'ye yükseldi (predictive maintenance verileriyle) - Teknisyen saha ziyaret sayısı: aylık %25 azalma (gereksiz kontrol ziyaretleri elimine edildi) - Stok doğruluğu: %78'den %96'ya yükseldi (dijital stok takibi ile) Kullanıcı Metrikleri: - 5.000+ aktif kullanıcı (teknisyen, yönetici, merkez personel) - 15.000+ kümülatif indirme - App Store'da 4.5 puan (60+ değerlendirme) - D30 retention oranı: %72 (kurumsal uygulama ortalaması %45) - Günlük ortalama oturum: 4.2 (iş günlerinde 6+) Finansal Etki: - Yıllık bakım maliyeti tasarrufu: tahmini %30 (predictive maintenance ile önlenmiş arızalar) - Garanti kapsamı dışı arıza azalması: %45 (zamanında bakım sayesinde) - Teknisyen verimliliği: günlük ortalama 3 daha fazla servis tamamlama - Müşteri memnuniyeti (NPS): 65 (sektör ortalaması 38) Teknik Performans: - Crash-free oranı: %99.5 (350+ dosyalık Objective-C projede dikkat çekici) - BLE bağlantı başarı oranı: %94 (endüstriyel ortamlarda) - Offline veri kaybı: %0 (CoreData sync mekanizması sayesinde) - App boyutu: 42MB (Charts framework dahil) - Cold start süresi: <1.2s App Store İncelemeleri: - "Sahada jeneratör durumunu anında görebiliyorum, arıza çıkmadan müdahale ediyoruz. İşimizi tamamen değiştirdi." — Saha Teknisyeni ★★★★★ - "Filo yönetimi artık harita üzerinde tek bakışta. Raporlama özelliği çok güçlü." — Bölge Müdürü ★★★★☆ - "Offline çalışma özelliği sahada hayat kurtarıyor. İnternet olmayan yerlerde bile veri kaybı yok." — Servis Mühendisi ★★★★★
12 aylık bu dev proje boyunca endüstriyel IoT alanına özgü birçok değerli teknik ve operasyonel ders çıkardım: Objective-C ile Büyük Proje Yönetimi: 350+ dosyalık bir Objective-C kod tabanı yönetmek, modern Swift projelerinden tamamen farklı bir disiplin gerektiriyor. Header dosyalarının düzeni, forward declaration kullanımı, category extension'ların stratejik dağılımı ve delegate pattern'ın tutarlı uygulanması kritik. Massive View Controller problemiyle mücadele etmenin en etkili yolu child view controller'lar ve category extension'lar — tek bir ViewController dosyasının 2000+ satıra ulaşmasını bu yöntemlerle önledik. Bu deneyim, Swift'in protocol-oriented programming'inin neden bu kadar değerli olduğunu somut olarak gösterdi. BLE Endüstriyel Ortam Zorlukları: Bluetooth Low Energy, laboratuvar ortamında sorunsuz çalışırken endüstriyel sahada tamamen farklı davranıyor. Metal yapılar sinyal yansıması yaratıyor, jeneratör motorlarının elektromanyetik paraziti bağlantı kopmalarına neden oluyor. Auto-reconnect mekanizması basit bir retry değil — connection parameter negotiation, MTU size optimization ve background restoration key'lerin doğru konfigürasyonu gerekiyor. En önemli öğrenim: BLE cihazla ilk bağlantı kurulduktan sonra service/characteristic keşfini cache'lemek, tekrar bağlantılarda süreyi %60 kısalttı. Offline-First Düşünce Yapısı: Offline desteği sonradan eklemek neredeyse imkansız — mimari kararların baştan offline-first olması gerekiyor. CoreData parent-child context yapısı, sync kuyruğu tasarımı ve conflict resolution stratejisi projenin ilk haftasında belirlenmeli. Sahada öğrendiğimiz en acı ders: merge policy'yi yanlış seçmek veri kaybına yol açabilir — NSMergeByPropertyObjectTrumpMergePolicy (sunucu öncelikli) en güvenli tercihti çünkü sunucu verisi tek doğru kaynak (single source of truth) olarak kabul edildi. Endüstriyel UX Farklılıkları: Saha teknisyenleri eldiven giyiyor, ekranları kirli ve güneş altında kullanıyor. Bu üç gerçek tüm UI kararlarını etkiliyor: butonlar minimum 56pt touch target, font boyutu 16pt minimum, kontrast oranı 7:1 (WCAG AAA), tek el kullanımına uygun layout. Karmaşık formlar yerine checklist bazlı akışlar %300 daha hızlı tamamlanıyor. Fotoğraf ile arıza kaydı, metin yazmaktan 10x daha hızlı ve daha doğru. Predictive Maintenance Verisi: Sensör verilerinin toplanması kolay kısmı — asıl zorluk bu veriden anlamlı bakım tahmini çıkarmak. Basit threshold alarming ile başladık, zamanla trend analizi (son 30 günlük sıcaklık trendi yükseliyor mu?) ekledik. Bu proje, makine öğrenmesi entegrasyonunun endüstriyel IoT'de neden kaçınılmaz olduğunu somut olarak gösterdi.
NavigationStack'in ötesine geçin! Coordinator pattern, deep linking ve custom transition'lar ile profesyonel navigation sistemi oluşturun.
22 dkiOS 16+ Charts framework ile etkileyici grafikler oluşturun. Line, bar, pie chart örnekleri ve custom styling.
16 dkiOS push notification'larının tüm gücünü keşfedin. Rich media, actionable notifications, notification service extension ve silent push stratejileri.
21 dk12+ yıllık mobil geliştirme deneyimimle hayalinizdeki uygulamayı birlikte hayata geçirelim.
İlk görüşme tamamen ücretsizdir