2015-09-16 25 views
6

Tôi muốn biết liệu người dùng của tôi đang duyệt một trang trong ứng dụng ray của tôi vớiKiểm tra qua user_agent (đường ray)

  • một viên thuốc hoặc
  • một thiết bị di động hoặc
  • một máy tính để bàn

Tôi đã đào qua nhiều giải pháp khác nhau. Dưới đây là yêu thích của tôi:

  1. Các ua-phân tích cú pháp đá quý: https://github.com/ua-parser/uap-ruby mà có vẻ là rất sạch sẽ nhưng tiếc là nó luôn luôn âm mưu Other khi tôi sử dụng parsed_string.device - Tôi có thể phát hiện các hệ điều hành và trình duyệt với nó rất tốt.
  2. Viết nó từ đầu

Viết từ đầu đã kết thúc trong sth như thế này:

if request.user_agent.downcase.match(/mobile|android|iphone|blackberry|iemobile|kindle/) 
    @os = "mobile" 
elsif request.user_agent.downcase.match(/ipad/) 
    @os = "tablet" 
elsif request.user_agent.downcase.match(/mac OS|windows/) 
    @os = "desktop" 
end 

Tuy nhiên, những gì tôi nhớ là một tài liệu đầy đủ của 'thiết bị' định nghĩa tác nhân người dùng.

Ví dụ: Tôi cần xem mẫu nào nếu người dùng của tôi đang duyệt trên máy tính bảng/thiết bị di động hoặc máy tính để bàn? Tôi không thể đoán và kiểm tra ví dụ regex ua-parser cũng không giúp tôi (rất phức tạp): https://github.com/tobie/ua-parser/blob/master/regexes.yaml

Có giải pháp đơn giản nào để giải quyết vấn đề của tôi không? Google analytics làm như thế nào? Tôi đã cố gắng nghiên cứu nhưng không thể tìm thấy nó. Họ cũng đang hiển thị thiết bị (máy tính để bàn/máy tính bảng/thiết bị di động).

+0

hãy thử [trình duyệt] (https://github.com/fnando/browser). Nó tốt hơn 'ua-parser' theo nhiều cách – usmanali

+0

có vẻ đầy hứa hẹn, cảm ơn bạn – DonMB

Trả lời

0

Các browser gemsuggestion để làm điều này, nhưng cho đến khi đó là thêm bạn vẫn có thể sử dụng đá quý để con nó ra bằng cách sử dụng browser.device?

0

Tôi đang tìm cách để làm tùy chọn thứ 2, vì tôi cần nó như nạc có nghĩa là càng tốt. Có rất nhiều thông tin trong chuỗi User-Agent, mà tôi không cần. Và tôi không muốn một chức năng cố phân tích tất cả. Chỉ đơn giản là: bot, máy tính để bàn, máy tính bảng, thiết bị di động và các ứng dụng khác.

Đó là loại rất nhiều thứ để đọc, nhưng tôi đang tìm từ khóa sử dụng this extensive list.

Cho đến nay, các từ khóa sau dường như hoạt động đối với tôi. Đó là biểu thức chính quy trong php, nhưng bạn sẽ có ý tưởng.

//try to find crawlers 
// https://developers.whatismybrowser.com/useragents/explore/software_type_specific/crawler/ 
if (preg_match('/(bot\/|spider|crawler|slurp|pinterest|favicon)/i', $userAgent) === 1) 
    return ['type' => 'crawler']; 

//try to find tablets 
// https://developers.whatismybrowser.com/useragents/explore/hardware_type_specific/tablet/ 
// https://developers.whatismybrowser.com/useragents/explore/hardware_type_specific/ebook-reader/ 
if (preg_match('/(ipad| sm-t| gt-p| gt-n|wt19m-fi|nexus 7| silk\/|kindle| nook)/i', $userAgent) === 1) 
    return ['type' => 'tablet']; 

//try to find mobiles 
// https://developers.whatismybrowser.com/useragents/explore/hardware_type_specific/mobile/ 
// https://developers.whatismybrowser.com/useragents/explore/hardware_type_specific/phone/ 
if (preg_match('/(android|iphone|mobile|opera mini|windows phone|blackberry|netfront)/i', $userAgent) === 1) 
    return ['type' => 'mobile']; 

//try to find desktops 
// https://developers.whatismybrowser.com/useragents/explore/hardware_type_specific/computer/ 
if (preg_match('/(windows nt|macintosh|x11; linux|linux x86)/i', $userAgent) === 1) 
    return ['type' => 'desktop']; 

return ['type' => 'other']; 
Các vấn đề liên quan