- Untuk mengatasi lambatnya penggunaan dan rumitnya proses masuk di aplikasi PureGym, penulis secara pribadi mengoptimalkannya dengan Apple Wallet
- Kode QR yang ada sebelumnya mengharuskan aplikasi dibuka setiap kali dan memuat informasi terlebih dahulu, sehingga menjadi metode masuk yang tidak efisien dan memakan waktu sekitar 47 detik
- Melalui berbagai proses teknis seperti reverse engineering, penggunaan mitmproxy, dan framework PassKit, penulis mengimplementasikan pass Wallet yang dapat diperbarui otomatis
- Dalam proses ini, ia juga mengonfirmasi cara kerja internal PureGym yang terekspos di web, seperti celah keamanan pada kode PIN, struktur autentikasi API, dan informasi lokasi cabang
- Pada akhirnya, ia menciptakan pengalaman masuk hanya dalam 3 detik, dan menegaskan bahwa ini hanyalah eksperimen pribadi serta bukan layanan resmi
47 Detik: Awal dari Ketidaknyamanan
- Pada hari kerja pukul 11:15 pagi, dibutuhkan 47 detik hanya untuk membuka aplikasi di pintu masuk PureGym
- Sinyal lemah, harus terhubung ke Wi-Fi, menjalankan aplikasi, lalu melewati berbagai notifikasi push dan penawaran diskon khusus sebelum kode QR muncul
- Butuh waktu lama hingga kode QR benar-benar tampil, dan ini membuat canggung di hadapan anggota lain
- Jika diulang 6 kali seminggu, pengalaman tidak efisien ini menghabiskan 282 detik setiap minggu
- Dibandingkan dengan pengalaman tanpa hambatan seperti Amazon Fresh, UX masuk PureGym terasa sangat tertinggal
Misteri PIN 8 Tahun
- Penulis telah menggunakan kode PIN 8 digit yang sama selama 8 tahun
- PIN ini tidak pernah kedaluwarsa maupun berubah
- Sebaliknya, kode QR di aplikasi diganti dengan nilai baru setiap 1 menit
- Ada kontradiksi besar antara tingkat keamanan yang nyata dan implementasi sebenarnya
- Metode PIN dipertahankan terlalu lama, sementara hanya kode QR yang dijaga ketat—sebuah fenomena "pertunjukan keamanan"
Memahami PureGym dengan mitmproxy
- Awalnya penulis mencoba memakai screenshot kode QR di Apple Wallet, tetapi langsung terbukti tidak berfungsi
- Kode QR PureGym dibuat secara dinamis, kedaluwarsa sekitar 1 minggu, tetapi diperbarui tiap 1 menit di aplikasi
- Dengan mencari repo terkait "PureGym" di GitHub, penulis menemukan struktur autentikasi API
- PIN 8 digit untuk login dipakai apa adanya sebagai kata sandi API
- Informasi autentikasi dasar yang dikodekan dengan Base64 juga memiliki keamanan yang lemah
- Untuk menganalisis traffic aplikasi, ia mencegat request dengan alat proxy seperti mitmproxy
- Struktur JSON dari kode QR terdiri dari part1 (id tetap), part2 (timestamp), dan part3 (salt untuk pembaruan)
- API bahkan memberi tahu waktu pembaruan dan syarat kedaluwarsa
PassKit: Potensi Apple Wallet
- Pass Apple Wallet bukan sekadar kartu statis, melainkan struktur mini-app yang mendukung pembaruan mandiri, notifikasi push, dan respons berbasis lokasi
- Implementasi PassKit memerlukan spesifikasi JSON, resource gambar, penandatanganan sertifikat, dan web service untuk pembaruan real-time
- Dari portal pengembang Apple, perlu menerbitkan Pass Type ID dan sertifikat WWDR
- Penandatanganan serta pengelolaan sertifikat cukup rumit, tetapi jika berhasil, pengalaman di perangkat nyata menjadi sangat mulus
Membangun Backend Swift
- Meski biasanya menggunakan Node.js, penulis membangun sendiri web service PassKit berbasis Swift dengan Vapor
- Saat pass perlu diperbarui, sistem menyediakan update otomatis melalui silent push
- Hasilnya adalah pembaruan pass yang alami tanpa disadari pengguna
Otomatisasi Lokasi PureGym di Seluruh Negeri
- Pass Apple Wallet dapat ditampilkan otomatis di lokasi yang ditentukan
- Situs resmi PureGym tidak menyediakan koordinat detail, tetapi API memberikan daftar koordinat semua cabang di seluruh negeri
- Dengan mem-parsing seluruh koordinat cabang, tiap pass diatur untuk cabang terdekat
- Kekurangannya: jika PureGym berada di dalam pusat perbelanjaan, pass bisa muncul bahkan saat hanya datang untuk belanja
Integrasi Apple Watch
- Pass Apple Wallet otomatis tersinkron ke Apple Watch tanpa pekerjaan tambahan
- Cukup klik dua kali di pergelangan tangan lalu scan, total waktu hingga masuk dipangkas menjadi 3 detik
- Penghematan waktu lebih dari 93% pun tercapai
Perubahan dalam Angka
- Waktu masuk dengan aplikasi PureGym lama: 47 detik
- Waktu masuk dengan pass Apple Wallet: 3 detik
- Rata-rata waktu yang dihemat per minggu: 4,4 menit (3,8 jam per tahun)
- Anggota di sekitar bertanya 23 kali apakah ada aplikasi seperti ini, dan semuanya dijelaskan bahwa ini tidak resmi
- Meski ada permintaan, tidak ada rencana distribusi karena masalah hak cipta/kebijakan layanan
Bonus: Integrasi Home Assistant
- Melalui endpoint jumlah orang di dalam ruangan pada API PureGym, penulis menampilkan tingkat kepadatan gym saat ini di dashboard IoT
- Berdasarkan data, ia bisa memutuskan untuk datang lagi pada jam yang lebih sepi, sehingga efisiensi dan motivasi olahraga meningkat
Realitas dan Etika Rekayasa
- Ini berawal dari upaya murni menyelesaikan ketidaknyamanan pribadi, tetapi di internal PureGym area ini tidak diperbaiki selama bertahun-tahun
- Prototipe yang dibuat di luar organisasi terkadang menyelesaikan masalah lebih cepat daripada roadmap resmi
- Secara resmi ini bisa melanggar syarat layanan, dan PureGym dapat memblokirnya kapan saja
- Penulis sama sekali tidak mengotomatiskan atau membagikannya, hanya untuk eksperimen pribadi, serta tetap mematuhi prinsip seperti penggunaan cache demi stabilitas
Langkah Berikutnya dan Penutup
- Ke depan, ide pengembangan seperti "notifikasi push rasa malu" juga bisa diusulkan
- Manfaat nyatanya memang kecil, tetapi ada kepuasan dalam mengoptimalkan 3,8 jam per tahun dari "gerakan yang tidak perlu"
- Jika PureGym membuat implementasi resmi, lebih banyak pengguna akan mendapatkan kenyamanan
- Ini menjadi contoh terciptanya "pengalaman tidak resmi tetapi efektif"
Belum ada komentar.