บล็อก/one-qr-code-ios-app-store-case-study

กรณีศึกษา: Baifo ใช้ QR เดียวพา iOS ไป App Store และอุปกรณ์อื่นไปเว็บ

อัปเดตเมื่อ · Aug 24, 2026

Baifo เป็นแอปสวดมนต์ / ขอพรออนไลน์ — และเป็นลูกค้าของ DYQR พวกเขาเพิ่งเปิดสองจุดแชร์: โปสเตอร์ «แนะนำให้เพื่อน» และโปสเตอร์บันทึกการไหว้ ทั้งคู่มี QR กฎเดียวชัดๆ: ถ้าอุปกรณ์ที่สแกนเป็น iPhone ให้พาไป App Store ดาวน์โหลดแอป ถ้าเป็นอุปกรณ์อื่น (ยังไม่มีแอป) ให้พาไปเว็บ

ทีมที่โปรโมทแอปมือถือเกือบทุกทีมเจอแบบนี้ ด้านล่างคือเรื่องการเชื่อมของพวกเขา และเป็นบทเรียนที่คุณอาจต้องใช้เอง

ทำไมไม่เขียนแยก User-Agent เอง

ตอนแรกพวกเขาตั้งใจจะทำ route /get บน baifo.life: อ่าน User-Agent ตรวจ iOS ด้วย regex แล้ว 302 ไปปลายทางที่ถูก QR จะชี้ URL นั้นตลอด

ทำได้ — แต่แปลว่าต้องสร้างโครงสร้างทั้งก้อน:

  • กฎแยกทาง — ภายหลังลิงก์สโตร์ Android ปลายทางต่างตามภูมิภาค ทุกครั้งที่เปลี่ยน = แก้โค้ด ทดสอบ deploy ใหม่
  • สถิติ QR — นอกจากมีคนสแกน ยังต้องมีสถิติคลิก แยกตามอุปกรณ์ ฯลฯ
  • ช่องทางโตขึ้น — แคมเปญมากขึ้น = QR มากขึ้น การสร้างระบบ short link ทั้งก้อนเองดูแลหนักเกินไป

ทีม Baifo จึงย้ายงานชั้นนี้ไปไว้บนแพลตฟอร์ม QR / short link — นั่นคือเรา

บทเรียน: แยกทางตาม OS ด้วย DYQR

ขั้นตอนตามตัวช่วย New link ห้าขั้นในแดชบอร์ด (ภาพจาก app.dyqr.me จริง) Smart Routing (รวมกฎ OS) เป็นฟีเจอร์เสียเงิน — บัญชีฟรีจะเห็น «Upgrade required» ในขั้น 2 ชอบเทอร์มินัล? มี CLI / API ท้ายบท

1. สร้าง short link โดยค่าเริ่มต้นชี้เว็บ

แดชบอร์ด → New link ตั้งปลายทางเริ่มต้น (สแกนที่ไม่เข้ากฎใดๆ จะมาที่นี่):

  • Title: เช่น «ดาวน์โหลดแอป Baifo»
  • Default destination: https://baifo.life/

สร้างลิงก์: ปลายทางเริ่มต้น = เว็บ

เลือกค่าเริ่มต้นสำหรับ «คนส่วนใหญ่» — ของ Baifo คือเว็บ iOS จะถูกทับด้วยกฎในขั้นถัดไป

2. เพิ่ม Smart Routing: OS = iOS → App Store

ขั้น Smart Routing เพิ่มกฎหนึ่งข้อ:

  • When: Operating system
  • Matches: iOS
  • Then go to: https://apps.apple.com/cn/app/id6782394476 (ใส่ URL App Store ของคุณ)

Smart Routing: เงื่อนไข OS = iOS ไป App Store

ข้อควรรู้:

  • ใช้ Operating system ไม่ใช่ Device — Device มีแค่ mobile / desktop แยก iPhone กับ Android มือถือไม่ได้
  • เปิดกฎแล้ว iPhone (รวมเบราว์เซอร์ใน WeChat) จะ 302 ไป App Store ที่เหลือไปเว็บค่าเริ่มต้น
  • ภายหลังเพิ่มสโตร์ Android หรือสโตร์ตามประเทศ = แก้กฎอย่างเดียว ไม่ต้องทำ QR ใหม่ ไม่ต้องปล่อยแอป

3. ส่งออก QR แล้วใส่ในโปสเตอร์

ขั้นสุดท้ายของตัวช่วย: พรีวิวแล้วส่งออก QR โปสเตอร์ฝังแค่รูปนี้ (encode short link ไม่ใช่ URL ปลายทางสุดท้าย):

ส่งออก QR: short link คงที่ กฎ routing เปลี่ยนได้

แอปและ ops ไม่ต้องดูแล logic แยกทางอีก ภาพที่เห็น = สิ่งที่คนสแกนได้

4. หลังสร้าง

บันทึกแล้วลิงก์จะโผล่ใน Links & QR codes พร้อมภาพ QR ย่อ ชื่อ URL สั้น และปลายทางเริ่มต้นเห็นได้ชัด

รายการลิงก์หลังสร้าง

เมื่อสแกน:

  • iPhone (รวม WeChat in-app) → App Store (ตามกฎ)
  • Android / เบราว์เซอร์เดสก์ท็อป → เว็บ baifo.life (ค่าเริ่มต้น)
  • Analytics → บันทึกทุกสแกนอัตโนมัติ

ทางเลือก: CLI / API

ถ้าทีมชอบเทอร์มินัลหรือ automation:

npx @dyqr/cli login
dyqr link create "https://baifo.life/" --title "Baifo App download"
dyqr qr <alias> --format svg -o poster-qr.svg

ผูกกฎ OS (Bearer token: แดชบอร์ด → Account → Connected apps):

curl -X PATCH https://app.dyqr.me/api/links/<alias> \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "targetUrl": "https://baifo.life/",
    "routingRules": [{
      "id": "ios_app_store",
      "enabled": true,
      "targetUrl": "https://apps.apple.com/cn/app/id6782394476",
      "conditions": [{ "type": "os", "os": ["ios"] }]
    }]
  }'

สิ่งที่การเชื่อมลูกค้าจริงสอนผลิตภัณฑ์

ความต้องการลูกค้าจริงมักโดนจุดอ่อนเราได้ตรงเป้า การเชื่อมนี้บังคับให้เราปิดช่องว่างหลายจุดอย่างรวดเร็ว — และยืนยันทั้งเส้นทางอีกครั้ง:

  • เงื่อนไข os ใหม่: { type: 'os', os: ['ios'|'android'|'windows'|'macos'|'linux'] } ตลอดเส้น — ชนิดร่วม resolver เกตเวย์+แอดมิน สิทธิ์แผน UI กฎ schema ผู้ช่วย AI ลำดับ UA สำคัญ: UA ของ iOS มี like Mac OS X (จับ iOS ก่อน macOS) UA ของ Android มี Linux (จับ Android ก่อน Linux)
  • npx @dyqr/cli ติดตั้งไม่ได้: dependency ที่เผยแพร่ชี้เวอร์ชัน workspace ที่ยังไม่ publish → 404 ตั้งแต่ login แรก
  • เอกสารกับ MCP ไม่ตรงกัน: skill ของ agent บอกว่า routing «ตั้งได้แค่ในแดชบอร์ด» ทั้งที่ API รองรับแล้ว — MCP แค่ยังไม่เปิดฟิลด์

ทั้งสามปัญหาโผล่ในเส้นทางลูกค้าจริง แก้แล้ว แล้วตรวจซ้ำบนเส้นทางเดิม

เหมาะกับใคร

ถ้าคุณก็ต้องการ QR «สแกนครั้งเดียว แยกทางอัจฉริยะ» — ดาวน์โหลดแอป แลนดิ้งตามช่องทาง เนื้อหาตามภูมิภาคหรืออุปกรณ์ — ไม่ต้องสร้างสแตก UA / GEO ใน backend เอง มอบชั้นนั้นให้ short link ของ DYQR + Smart Routing: เปลี่ยนกฎในแดชบอร์ดหรือผ่าน API / CLI / MCP ได้ตลอด QR ที่พิมพ์แล้วไม่ต้องเปลี่ยน