Uzmanlık · Mobil uygulamalar
Telefon için uygulamalar, mantığın telefonsuz doğrulanabilmesi için böyle inşa edilir.
Swift ile, sensörler ve HealthKit içeren yerel iOS uygulamaları ve proje sensör gerektirmediğinde iOS, Android ve web için tek kodlu uygulamalar kuruyoruz. Mantık çekirdeği ekrandan ayrı test edilir.
Zaten kurduklarımızÜç kendi uygulamamız var, bir değil. `project.yml` içinde tanımlı beş uygulama hedefi olan bir depo var (dördü iOS, biri macOS), mantık testlerini bugün çalıştırdım: 160 üzerinden 160 geçiyor. İkinci bir iOS uygulaması, başka bir projede, 40 Swift dosyası ve HealthKit ile. Ve üçüncü bir yön, iOS, Android ve web için tek kodla çalışan; web varyantı bugün yanıt veriyor. Her alıcının her şeyden önce sorduğu sorunun yanıtını değiştiren rezerv: uygulamalarımızın hiçbiri App Store veya Google Play’de yayınlanmış değil. Nedeni tek ve adı var — proje yapılandırmasında `DEVELOPMENT_TEAM` boş, yani Apple Developer Program’daki ekip kimliği eksik. Makinenin geçerli bir imzalama kimliği var, kendi cihazına kurulum için yeterli, mağaza dağıtımı için yetersiz. Bu kodla değil hesapla ilgili bir sorun, ama yine de bir sorun ve burada, dipnotta değil, yazıyoruz.
Bir mobil uygulamanın farklı şekilde bozulan iki parçası vardır. Sensörleri okuyan ve bir açı, bir skor, bir durum gibi bir şey hesaplayan parça ile ekranları çizen parça. Onları ayrı tutuyoruz ve bu estetik nedenlerle değil: ana iOS depomuzda çekirdek dosyalar arayüzü içe aktarmaz, bu yüzden doğrudan Mac üzerinde `swiftc` ile derlenebilir ve sıradan bir program gibi, simülatör olmadan ve telefon olmadan çalıştırılabilir. Paket 16 aşamada gruplandırılmış 160 doğrulamadan oluşur; bugün çalıştırdık ve eksiksiz geçiyor. Bu, bir algoritmanın tam olarak ne yaptığını söyleyebilmemizin, “iyi çalışıyor” demek yerine bunu söyleyebilmemizin nedenidir.
iOS’ta Swift 6 ile, asgari hedef olarak iOS 17 kullanıyoruz. Aynı depo, beş uygulamayı ayrı hedefler olarak tanımlar: dördü iPhone için ve biri macOS için; macOS sürümü, iOS çekirdeğinin on beş dosyasını kopyalamadan yeniden kullanır. Sensörler kaynağında okunur: kulaklıklardaki sensörler için Apple arayüzü baş yönelimini sunar ve uygulama mevcut açıyı, kullanıcının oturumun başında kalibre ettiği bir konumla karşılaştırır. Eşikler “iç ayarlar” değildir: 7° altında düz, 7° ile 13° arasında kayma, 13° üstünde üç saniye tutulursa alarmı tetikler ve yumuşatma, 0,15 katsayılı üstel ortalama kullanır. Dört değerin tümü art arda dört kod satırında yer alır ve gösterilebilir.
Proje sensörlere ihtiyaç duymadığında, yerel çözümü önermiyoruz. Portföydeki üçüncü yön, iPhone, Android ve tarayıcı için derlenen tek bir koddur — React Native with Expo — ve web sürümü de yayınlanmış ve bugün yanıt veriyor. Müşteri için pratik fark şudur: bir anket, bir hesaplayıcı veya bir kontrol paneli iki ekibi ve iki depoyu haklı çıkarmaz; saniyede yirmi örnekle bir sensörü dinleyen bir uygulama ise, evet.
Henüz yapamadıklarımız. Uygulamalarımızın hiçbiri App Store veya Google Play’de değil. Bunun nedeni derlenmemeleri değil — derleniyorlar, simulator’a kuruluyorlar ve testleri geçiyorlar — ama proje yapılandırmasında Apple ekip kimliği boş; yani bu build’lere bağlı bir Apple Developer Program kaydı yok. Mac’te geçerli, geliştirme türünde bir imza kimliği vardır; bu, kendi cihazına kurulum için yeterlidir, mağaza için yetmez. Bir müşteri projesinde geliştirici hesabı müşteri şirketi adına açılır ve onun olarak kalır — başta konuşulması gereken konu budur, sonda değil.