- PureGym uygulamasının yavaş kullanımını ve karmaşık giriş sürecinin yarattığı rahatsızlığı çözmek için, bunu kişisel olarak Apple Wallet için optimize etti
- Mevcut QR kodu, her seferinde uygulamayı açıp bilgileri yüklemeyi gerektiren ve yaklaşık 47 saniye süren verimsiz bir giriş yöntemi
- Çeşitli reverse engineering çalışmaları, mitmproxy kullanımı ve PassKit framework’ü gibi teknik süreçler üzerinden otomatik yenilenebilen bir Wallet geçiş kartı hayata geçirildi
- Bu süreçte PIN kodundaki güvenlik açıkları, API kimlik doğrulama yapısı ve şube konum bilgileri gibi PureGym’in internette görülebilen iç işleyişi ortaya çıkarıldı
- Sonuçta 3 saniyede giriş sağlayan bir kullanıcı deneyimi oluşturuldu ve bunun yalnızca kişisel bir deney olduğu, resmî bir hizmet olmadığı açıkça belirtildi
47 saniye: rahatsızlığın başlangıcı
- Hafta içi saat 11:15’te, PureGym girişinde uygulamayı açmak 47 saniye sürdü
- Sinyal zayıftı; Wi‑Fi’a bağlanma, uygulamayı başlatma, çeşitli push bildirimlerini ve özel indirim tekliflerini geçme gibi adımlardan sonra QR kodu göründü
- QR kodunun gerçekten görünmesi uzun sürüyor ve insan diğer üyelerin bakışlarından rahatsız oluyor
- Haftada 6 kez tekrarlandığında, bu verimsiz deneyim her hafta 282 saniye kaybettiriyor
- Amazon Fresh gibi sürtünmesiz deneyimlerle kıyaslandığında, PureGym’in giriş UX’i oldukça geride kalıyor
8 yıllık PIN gizemi
- Yazar, 8 haneli PIN kodunu 8 yıldır hiç değiştirmeden kullanıyor
- Bu PIN ne süresi doluyor ne de değişiyor
- Buna karşılık, uygulama içindeki QR kodu her 1 dakikada bir yeni bir değerle değişiyor
- Gerçek güvenlik seviyesi ile fiilî uygulama arasında büyük bir çelişki var
- PIN yöntemi aşırı uzun süre korunurken yalnızca QR kodunun sıkı biçimde korunması bir tür "güvenlik gösterisi" etkisi yaratıyor
mitmproxy ile PureGym’i anlamak
- İlk başta QR kodunun ekran görüntüsünü Apple Wallet’a koyup kullanmayı denedi, ancak bu hemen işe yaramadı
- PureGym’in QR kodu dinamik olarak üretiliyor, yaklaşık 1 hafta içinde süresi doluyor ama uygulamada her 1 dakikada bir yenileniyor
- GitHub’da "PureGym" ile ilgili depolar aranarak API kimlik doğrulama yapısı bulundu
- Giriş için kullanılan 8 haneli PIN, API parolası olarak da aynı şekilde kullanılıyor
- Base64 ile kodlanmış temel kimlik doğrulama bilgileri de zayıf güvenlik sunuyor
- Uygulama trafiğini analiz etmek için mitmproxy gibi proxy araçlarıyla istekler yakalandı
- QR kodunun JSON yapısı part1 (sabit id), part2 (timestamp), part3 (yenileme için salt) bölümlerinden oluşuyor
- API, yenileme zamanlamasından sona erme koşullarına kadar her şeyi bildiriyor
PassKit: Apple Wallet’ın potansiyeli
- Apple Wallet pass’leri statik kartlar değil; kendi kendini yenileyebilen, push bildirimi alabilen ve konuma tepki verebilen mini uygulama yapıları
- PassKit uygulaması için JSON spesifikasyonu, görsel kaynaklar, sertifika imzası ve gerçek zamanlı yenileme için web servisleri gerekiyor
- Apple geliştirici portalından Pass Type ID ve WWDR sertifikası alınması şart
- Sertifika imzalama ve yönetimi zahmetli olsa da, başarıldığında gerçek cihazda akıcı bir deneyim sağlanabiliyor
Swift backend kurulumu
- Genelde Node.js kullanılsa da, yazar PassKit web servislerini doğrudan Swift tabanlı Vapor ile geliştirdi
- Pass güncellenmesi gerektiğinde, silent push ile otomatik güncelleme sağlanıyor
- Kullanıcının fark etmediği doğal bir pass yenileme deneyimi gerçekleştiriliyor
Ülke çapındaki PureGym konumlarını otomatikleştirme
- Apple Wallet pass’leri belirlenen konumlarda otomatik olarak gösterilebiliyor
- PureGym’in resmî sitesinde ayrıntılı koordinatlar yoktu, ancak API üzerinden ülke genelindeki şubelerin koordinat listesi alındı
- Tüm şube koordinatları parse edilerek her pass için en yakın şube atandı
- Dezavantajı şu: PureGym bir alışveriş merkezinin içindeyse, sadece alışverişe gidildiğinde bile pass’in görünmesi gibi küçük bir rahatsızlık oluşabiliyor
Apple Watch entegrasyonu
- Apple Wallet pass’leri ek bir işlem olmadan Apple Watch ile otomatik senkronize oluyor
- Bilekten iki kez tıklayıp taratmak ve içeri girmek artık sadece 3 saniye sürüyor
- Zamanın %93’ünden fazlası tasarruf edilmiş oldu
Rakamlarla değişim
- Eski PureGym uygulamasıyla giriş süresi: 47 saniye
- Apple Wallet pass’iyle giriş süresi: 3 saniye
- Haftalık ortalama kazanılan zaman: 4,4 dakika (yılda 3,8 saat)
- Yakındaki üyeler 23 kez "Böyle bir uygulama mı var?" diye sordu; hepsine bunun gayriresmî olduğu açıklandı
- Talep olsa da telif ve hizmet politikaları nedeniyle dağıtma planı yok
Bonus: Home Assistant entegrasyonu
- PureGym API’sindeki içerideki kişi sayısı endpoint’i üzerinden IoT panosunda spor salonunun anlık yoğunluğu gösteriliyor
- Veriye dayanarak daha sakin saatlerde yeniden gitmeye karar verilebiliyor; bu da egzersiz verimliliğini ve motivasyonu artırıyor
Mühendislik gerçeği ve etik
- Bu, tamamen kişisel bir rahatsızlığı çözme girişimiydi; ancak PureGym içinde yıllardır iyileştirilmeyen bir alana dokunuyordu
- Kurum dışından geliştirilen bir prototip bazen resmî yol haritasından daha hızlı biçimde sorun çözebiliyor
- Bunun resmî açıdan kullanım koşullarını ihlal etmesi mümkün ve PureGym bunu istediği zaman engelleyebilir
- Kesinlikle otomasyona veya paylaşıma açılmadı; yalnızca kişisel deney amacıyla kullanıldı ve kararlılık için cache gibi ilkelere uyuldu
Sonraki adımlar ve kapanış
- İleride "utandırma push bildirimi" gibi genişletme fikirleri önerilebilir
- Pratik faydası küçük olsa da, yılda 3,8 saatlik "gereksiz hareket"in optimize edilmesi tatmin edici bulundu
- PureGym bunu resmî olarak uygularsa çok daha fazla kullanıcı kolaylığı sağlayabilir
- "Gayriresmî ama etkili bir deneyim" üretmenin bir örneği olarak kayda geçti
Henüz yorum yok.