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ızSunt trei implementări proprii, nu una. Un depozit cu cinci ținte de aplicație (patru iOS și una macOS) definite în `project.yml`, ale cărui teste de logică le-am rulat azi: 160 din 160 trec. O a doua aplicație iOS, în alt proiect, cu 40 de fișiere Swift și HealthKit. Și o a treia direcție, cu un singur cod pentru iOS, Android și web, a cărei variantă web răspunde astăzi. Rezerva care schimbă răspunsul la întrebarea pe care o pune orice cumpărător înainte de toate: niciuna dintre aplicațiile noastre nu este publicată în App Store sau Google Play. Motivul e unul singur și are nume — `DEVELOPMENT_TEAM` este gol în configurația de proiect, adică lipsește identificatorul de echipă din Apple Developer Program. Mașina are o identitate de semnare validă, suficientă pentru instalare pe dispozitiv propriu, insuficientă pentru distribuție în magazin. E o problemă de cont, nu de cod, dar rămâne o problemă și o scriem aici, nu la subsol.
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.