Nhà phát triển
Vì sao iPad của tôi nhận trang máy tính thay vì App Store?
Từ iPadOS 13, Safari trên iPad tự xưng là Mac. Đây là lý do một chuyển hướng theo thiết bị bỏ sót nó, và cách nhận ra nó.
Câu trả lời ngắn
Từ iPadOS 13, Safari trên iPad yêu cầu website phiên bản máy tính và gửi user agent của Mac (“Macintosh; Intel Mac OS X 10_15_7”), nên một chuyển hướng kiểm tra chữ “iPad” coi nó là máy tính. Máy chủ không phân biệt được hai thiết bị; trong trình duyệt, user agent Mac có navigator.maxTouchPoints lớn hơn 1 là iPad. OneStoreLink (onestore.link) đưa iPad như vậy đến trang dành cho máy tính, nơi nút App Store chỉ cách cửa hàng một chạm.
Cập nhật lần cuối 2026-11-03
Bạn đã tạo một liên kết đưa iPhone đến App Store và điện thoại Android đến Google Play, nó chạy tốt trên mọi điện thoại bạn thử, rồi một người dùng iPad lại rơi vào trang máy tính của bạn. Mã của bạn không sai: iPad đã cố tình khai sai về chính nó, vì Apple muốn iPad nhận được website đầy đủ như trên máy tính. Hướng dẫn này giải thích iPad gửi gì, vì sao máy chủ không nhìn xuyên qua được, cách nhận ra nó trong trình duyệt, và một chuyển hướng đến cửa hàng nên xử lý nó thế nào.
Vấn đề
- Từ iPadOS 13, Safari trên iPad mặc định yêu cầu website phiên bản máy tính và gửi cùng user agent với Safari trên Mac.
- Một phép kiểm tra như /iPad|iPhone/ trên user agent không bao giờ khớp, nên iPad bị coi là máy tính.
- Trên máy chủ không còn gì khác để dựa vào: yêu cầu của một iPad ở chế độ máy tính trông giống hệt yêu cầu của một chiếc Mac.
- Nếu nhánh máy tính chỉ hiện một trang web không có nút cửa hàng, người dùng iPad bị kẹt cách một ứng dụng họ có thể cài đúng một bước.
Với onestore.link
- Trong trình duyệt, hãy coi một user agent “Macintosh” có nhiều hơn một điểm chạm là iPad: navigator.maxTouchPoints bằng 0 trên Mac.
- Trên máy chủ, hãy làm cho nhánh máy tính vô hại: một trang có cả hai nút cửa hàng, không bao giờ là một trang thiếu chúng.
- onestore.link quyết định trên máy chủ: trong trình duyệt thông thường, user agent iPhone và iPad đi thẳng đến App Store, Android đến Google Play, và mọi thứ khác, kể cả iPad ở chế độ máy tính, nhận một trang có cả hai nút cửa hàng và mã QR.
- Trên trang đó, nút App Store mở App Store ngay trên iPad, nên khách chỉ cách việc cài đặt một chạm.
Cách thực hiện
Không SDK, không build lại. Chỉ là một URL.
- 1
Nhận ra iPad trong trình duyệt
Nếu chuyển hướng của bạn chạy bằng JavaScript, hãy thêm một phép kiểm tra cảm ứng vào phép kiểm tra user agent. Mac không bao giờ báo nhiều hơn một điểm chạm, còn iPad thì có.
// iPadOS 13+: Safari trên iPad báo user agent của Mac const ua = navigator.userAgent; const isIOS = /iPad|iPhone|iPod/.test(ua) || (/Macintosh/.test(ua) && navigator.maxTouchPoints > 1); const isAndroid = /Android/i.test(ua); - 2
Đặt cả hai nút cửa hàng ở nhánh máy tính
Một chuyển hướng phía máy chủ không chạy được phép kiểm tra đó, nên trang nó phục vụ cho “máy tính” sẽ được một số iPad nhìn thấy. Hãy đặt trên đó một nút App Store và một nút Google Play, thêm mã QR cho máy tính thật.
- 3
Hoặc để onestore.link lo việc định tuyến
Tạo một onestore.link với hai URL cửa hàng của bạn. Điện thoại được chuyển hướng trên máy chủ, và mọi khách khác, kể cả iPad ở chế độ máy tính, nhận một trang có cả hai nút và mã QR. Không có mã nào phải bảo trì.
Câu hỏi thường gặp
Vì sao iPad gửi user agent của Mac?
Từ iPadOS 13, Safari trên iPad mặc định yêu cầu phiên bản máy tính của các website, và để nhận được nó, nó tự giới thiệu là Safari trên macOS. Người dùng có thể chuyển một website về phiên bản di động, nhưng phần lớn không bao giờ làm vậy.
Máy chủ có phát hiện được iPad đang yêu cầu website phiên bản máy tính không?
Không đáng tin cậy. User agent giống hệt của Mac và không có header nào của yêu cầu để lộ màn hình cảm ứng. Việc phát hiện cần JavaScript trong trang, thứ mà một chuyển hướng 302 đơn thuần không chạy.
Chỉ riêng navigator.maxTouchPoints có đủ không?
Hãy dùng nó cùng với user agent: một user agent “Macintosh” có navigator.maxTouchPoints lớn hơn 1 là iPad. Nếu dùng riêng, nó cũng sẽ khớp với laptop Windows có màn hình cảm ứng.
Người dùng iPad thấy gì với onestore.link?
Ở chế độ máy tính mặc định của Safari là trang dành cho máy tính: tên và biểu tượng ứng dụng, một nút App Store, một nút Google Play và mã QR. Chạm vào App Store sẽ mở App Store trên iPad. Một iPad có trình duyệt gửi user agent iPad thì được chuyển thẳng đến App Store.
Sẵn sàng dùng thử?
Miễn phí mãi mãi, không mật khẩu. Liên kết của bạn sẵn sàng trong khoảng một phút.
Tạo liên kết miễn phí của bạnĐang so sánh các công cụ? onestore.link vs onelink to →