6 poin oleh GN⁺ 2025-08-16 | Belum ada komentar. | Bagikan ke WhatsApp
  • 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.

Belum ada komentar.