QR ile telefondan bilgisayara: Cinetomi'nin izleme aktarımı
Cinetomi'de kullanıcı telefonda film keşfediyor ama izlemeyi çoğu zaman büyük ekranda bitirmek istiyor. Klasik çözüm belli: bilgisayarda siteyi aç, giriş yap, filmi tekrar bul. Üç adım da sürtünme. Hedefimiz şuydu: telefonda "Bilgisayarda İzle" dedin, bilgisayardaki ekranda film kaldığı saniyeden devam etti.
Akış nasıl çalışıyor?
Tarayıcıda cinetomi.com bir QR kod gösterir ve bir oturum kanalı açar. Telefonda "Bilgisayarda İzle" QR'ı okutunca uygulama, o kanala tek kullanımlık bir aktarım token'ı gönderir. Tarayıcı token'ı doğrular, kullanıcının oturumunu ve filmin kaldığı konumu alır, oynatmaya başlar.
Kritik tasarım kararı: QR'ın içinde oturum bilgisi yok, yalnızca kısa ömürlü bir kanal kimliği var. Oturum bilgisi hiçbir zaman ekranda görünen bir şeye gömülmüyor.
Go tarafında token üretimi
Aktarım token'ları tek kullanımlık ve 60 saniye ömürlü:
func CreateHandoff(userID, filmID string, position int) (string, error) {
token := randomToken(32)
err := rdb.Set(ctx, "handoff:"+token, HandoffPayload{
UserID: userID,
FilmID: filmID,
Position: position,
}, 60*time.Second).Err()
return token, err
}
func ConsumeHandoff(token string) (*HandoffPayload, error) {
// GetDel: oku ve sil; token ikinci kez kullanılamaz
val, err := rdb.GetDel(ctx, "handoff:"+token).Result()
...
}GetDel sayesinde token okunduğu anda siliniyor; QR'ın fotoğrafını çeken biri ikinci kez kullanamıyor.
Cihaz geçişinde kullanıcının hissetmesi gereken tek şey süreklilik: film aynı saniyeden, ses aynı seviyeden devam eder.
Öğrendiklerimiz
- Süre agresif kısa olmalı. 60 saniye, QR okutma alışkanlığı için fazlasıyla yeterli; daha uzunu sadece risk.
- Konum bilgisini (kaçıncı saniye) token'a gömmek, "kaldığın yerden devam"ı bedavaya getiriyor.
- En çok emek isteyen kısım protokol değil, kenar durumlar: telefonun ekranı kapanırsa, tarayıcı sekmesi arka plana alınırsa, aynı anda iki tarayıcı açıksa ne olacak?
Sonuç, ölçmesi kolay bir başarı: özellik çıktıktan sonra masaüstü izleme oturumlarının başlangıç yolu ağırlıklı olarak QR üzerinden gelmeye başladı.
Product Manager & mobil geliştirici. Ürün, performans ve iyi arayüzler üzerine yazıyor.