← Tüm yazılar

QR ile telefondan bilgisayara: Cinetomi'nin izleme aktarımı

22 Oca 20261 dk okumaGoFlutter

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ü:

handoff.go
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

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ı.

Murat Özdemir

Product Manager & mobil geliştirici. Ürün, performans ve iyi arayüzler üzerine yazıyor.