← Nesim Apps

İki Mağaza İçin Tek QR Kodu: Küçük Bir Yönlendirme Sayfası

Nesim Razon, bağımsız Android geliştiricisi · 2026-11-16

#Geliştirici notları#Araçlar ve hesaplayıcılar

Web sitemde bilgisayardan gelen ziyaretçiler için bir "QR ile yükle" düğmesi var. Eskiden basitti, çünkü her uygulama yalnızca Android içindi. Sonra uygulamalar iPhone'a da geldi ve bu düğmenin ne göstereceğine karar vermem gerekti. Sonunda iki mağaza için de çalışan tek bir QR koduna vardım. Nasıl çalıştığı ve neye mal olduğu burada.

Soru: düğme artık ne gösterecek?

Yakın zamana kadar QR kodu uygulamanın Google Play adresini içeriyordu; Play Console'un kaç yüklemenin QR'dan geldiğini söyleyebilmesi için bir referrer parametresi de vardı. App Store sürümü gelince tek kod yetmez gibi göründü.

Dört seçenek düşündüm: iki ayrı QR kodu, iki kodu yan yana gösteren tek bir görsel, Play ve App Store kodu arasında geçen sekmeler ya da tek bir evrensel kod. İlk üçü ziyaretçinin önüne bir seçim koyuyor ve ziyaretçi, telefonu elinden alana kadar hangisinin doğru olduğunu bilmiyor.

Neden tek kod yeterli

Düğme yalnızca masaüstünde görünüyor. Stil dosyasında fare benzeri bir cihaz (hover ve ince imleç) ve en az 900 piksel genişlikte bir pencere gerekiyor; yani telefonlar ve tabletler onu hiç görmüyor. Demek ki kodu okutan kişi, uygulamayı yükleyecek telefonu tam elinde tutuyor ve o telefon hangi mağazaya ait olduğunu zaten biliyor.

Bu yüzden kodun seçimi taşıması gerekmiyor. Yalnızca telefon onu açtıktan sonra seçimi yapan bir adres taşıması yeterli.

Yönlendirme sayfası

QR kodu, sitemde /go/<uygulama>/ biçimindeki kısa bir adrese işaret ediyor. Küçük bir üretici betik, App Store'da bulunan her uygulama için bu sayfayı yazıyor. Sayfa üç şey yapıyor.

Birincisi, kullanıcı aracısını (user agent) okuyor. İçinde iPhone, iPad ya da iPod geçiyorsa ziyaretçi iOS'ta. Bir püf noktası var: iPadOS 13'ten beri iPad Mac gibi bir kullanıcı aracısı bildiriyor; bu yüzden Mac kullanıcı aracısı ve birden fazla dokunma noktası birlikte olunca da iOS sayılıyor. Gerçek bir Mac'in dokunmatik ekranı yok, o yüzden yanlışlıkla yakalanmıyor.

İkincisi, telefonu location.replace ile doğru mağazaya gönderiyor. location.href atamak yerine replace seçtim, çünkü yönlendirme sayfasını geçmişte bırakmıyor. Aksi halde Geri düğmesi sayfama dönerdi, sayfa hemen yeniden yönlendirirdi ve ziyaretçi bir döngüde kalırdı.

Üçüncüsü, Android'de eskiden olduğu gibi aynı Google Play adresini, ziyareti QR'dan gelmiş diye işaretleyen referrer ile açıyor. Bu, Play Console'daki yükleme kaynağı kırılımının çalışmaya devam etmesini sağlıyor; yani kaç yüklemenin QR'dan geldiğini hâlâ görebiliyorum.

Masaüstü ve JavaScript'siz yedek

Sayfa bir bilgisayarda açılırsa ya da tarayıcıda JavaScript yoksa hiçbir yönlendirme yapılmıyor. Sayfa o zaman iki resmî mağaza rozetini gösteriyor: biri Google Play, biri App Store için; ayrıca sitemdeki uygulama sayfasına bir bağlantı var. Kimse boş bir sayfayla karşılaşmıyor ve kısa bağlantıyı yanlışlıkla paylaşan biri bile işe yarar bir şey buluyor.

Sayfa noindex olarak işaretli. Aramalar için değil, tarayanlar için var ve arama sonuçlarında birbirine çok benzeyen sayfalar yığını istemiyorum.

Bonus: daha küçük bir kod

QR kodu artık referrer'lı uzun Play adresi yerine kısa bir adres içeriyor. Daha az karakter, daha seyrek bir desen ve daha büyük kareler demek; bu da telefon kamerasının onu bir ekrandan, özellikle açılı duran bir dizüstü ekranından okumasını kolaylaştırıyor. Üretici, segno kütüphanesini M hata düzeltme düzeyiyle kullanıyor.

Yalnızca iPhone uygulaması olan yerlerde

Her uygulamanın iPhone sürümü yok. Küçük bir JSON dosyası App Store'da bulunan uygulamaları listeliyor ve yalnızca onlar bir /go/ sayfası ve evrensel kodu alıyor. Yalnızca Android olan uygulamalar doğrudan Google Play QR'ını koruyor; aralarında hiçbir ara sayfa yok.

Site derlemesinde bir tuzak

Web sitemin derlemesi her sayfayı dil klasörlerine bölüyor ve site haritası satırları yazıyor. Yeni /go/ klasörünü ekleyince derleme onu normal bir site sayfası saydı ve onun için çevrilmiş kopyalar ve site haritası satırları üretmeye başladı. Çözüm tek bir sözcüktü: klasörü, dil derlemesinin atladığı klasörler listesine eklemek (QR görselleri ve rozetler gibi klasörlerin yanına). Bir yönlendirme yardımcısı site haritasında hiç olmamalı.

Nasıl denedim ve dezavantajlar

Kısa adresi bir Android telefonda açtım ve Play sayfasını açtı. iPhone kamerasıyla okutma da doğrulandı; yani iki telefon da elle bir kez denendi. Küçük bir test, bir cihaz laboratuvarı değil.

Dezavantajlar dürüst olanlar. Otomatik seçim JavaScript gerektiriyor; o olmadan ziyaretçinin bir rozete dokunması gerekiyor. Ve ara sayfa bir sıçrama daha demek: mağaza açılmadan önce sayfamın kısa bir görünüşü ve bozulabilecek bir şey daha; gerçi bu tek bir statik dosya.

Sık sorulan sorular

Neden mağaza başına bir tane olmak üzere iki QR kodu göstermiyorsun?

Çünkü QR düğmesi yalnızca masaüstünde görünüyor; onu okutan telefon, uygulamayı yükleyecek telefon. Tek kod ve mağazayı seçen bir sayfa ziyaretçiyi bir seçimden kurtarıyor.

Sayfa telefonun iPhone olduğunu nasıl anlıyor?

Kullanıcı aracısında iPhone, iPad ya da iPod arıyor. Yeni iPad'ler Mac gibi bir kullanıcı aracısı bildirdiği için, birden fazla dokunma noktası olan bir Mac kullanıcı aracısı da iOS sayılıyor.

QR'dan gelen yüklemeleri Google Play Console'da hâlâ görüyor muyum?

Evet. Android hedefi Play adresini QR referrer'ıyla koruyor, bu yüzden yükleme kaynağı kırılımı onları saymaya devam ediyor.

JavaScript yokken ya da bilgisayarda ne oluyor?

Yönlendirme yapılmıyor. Sayfa iki resmî mağaza rozetini gösteriyor, ziyaretçi seçiyor.

Diğer yazılar