2012-04-02 47 views
22

Tôi hiện đang xem xét một số mã để phát hiện điện thoại di động PHP, có lẽ khá dễ dàng.Phát hiện thiết bị di động - và thiết bị máy tính bảng

Bây giờ tôi chỉ gặp một vấn đề - tôi muốn làm cho nó có thể tạo ra các tệp xem duy nhất trong khung MVC của tôi cho máy tính bảng, điện thoại di động và trang web. Vì vậy, tôi cần phải tách máy tính bảng ra khỏi các thiết bị di động còn lại.

Hiện nay đây là mã, mà tôi đang sử dụng:

public function isMobile() 
{ 
    if(preg_match('/(alcatel|amoi|android|avantgo|blackberry|benq|cell|cricket|docomo|elaine|htc|iemobile|iphone|ipad|ipaq|ipod|j2me|java|midp|mini|mmp|mobi|motorola|nec-|nokia|palm|panasonic|philips|phone|sagem|sharp|sie-|smartphone|sony|symbian|t-mobile|telus|up\.browser|up\.link|vodafone|wap|webos|wireless|xda|xoom|zte)/i', $_SERVER['HTTP_USER_AGENT'])) 
    return true; 
else 
    return false; 
} 

Nhưng điều này là không đủ - kiểm tra duy nhất là wheter thiết bị là một thiết bị di động - nếu không muốn nói nó là như là tiêu chuẩn nói khuôn khổ, chúng ta đang ở trên máy tính. Phần cuối cùng là ok - nhưng tôi muốn chia nhỏ các thiết bị di động trong điện thoại di động thực tế - và trong một nhóm bảo mật, nên là máy tính bảng.

Tôi hy vọng, rằng tôi đã thực hiện mong muốn của tôi rõ ràng, và tôi hy vọng, rằng bạn có một số đầu vào một cách tốt để đạt được điều này.

Xin cảm ơn trước.

+0

Vì vậy, regexp của bạn không ổn hoặc bạn muốn tách regexp này thành nhiều lần (cho điện thoại di động và máy tính bảng)? – tonymarschall

+0

> Đây là một lớp học với các phương pháp phát hiện từng nền tảng riêng lẻ. >> http://code.google.com/p/php-mobile-detect/ Chỉ hoạt động trong opera trên máy tính bảng. Trình duyệt Android được tích hợp trên máy tính bảng trả về điện thoại di động. – hello

Trả lời

33

Đây là lớp học có phương pháp phát hiện từng nền tảng riêng lẻ.

+1

Điều này thực sự sẽ trả lời câu hỏi - NẾU bạn đảm bảo thực hiện kiểm tra isTablet trước khi kiểm tra isMobile .. Vì máy tính bảng cũng được đánh dấu là "điện thoại di động" - vì lý do logic .. :) Cảm ơn bạn, Joe! – denlau

+3

Chỉ cần tìm thấy rằng trước đó ngày hôm nay! Tôi sẽ trả lời câu hỏi này chính xác như thế nào câu trả lời này trả lời nó! +1 – pattyd

+0

Mọi thứ như thế này có sẵn cho ASP.NET không? –

0

Bạn cũng có thể sử dụng một giải pháp toàn diện hơn như WURFL Cloud, mà là một dịch vụ mà phát hiện khả năng của các thiết bị di động, như is_mobile và is_tablet. Có một kế hoạch miễn phí cho các trang web có lưu lượng truy cập thấp: http://www.scientiamobile.com/cloud

5

Mobile_Detect là một lớp PHP nhẹ để phát hiện thiết bị di động (bao gồm cả máy tính bảng). Nó sử dụng chuỗi User-Agent kết hợp với các tiêu đề HTTP cụ thể để phát hiện môi trường di động. - Đọc thêm http://mobiledetect.net

+0

Cảm ơn, nó khá hữu ích. – deathlock

8

Câu hỏi cũ, nhưng ở đây có ý kiến ​​của tôi về phát hiện thiết bị di động.

Bạn nêu rõ trong câu hỏi rằng bạn muốn tệp duy nhất cho thiết bị di động, vì vậy tôi có thể giả định lý do cho việc này là trình bày một phiên bản khác của trang web cho khách hàng di động và máy tính để bàn.

Cách tiếp cận này là OK cho đến một thời điểm nhất định. Và điểm đó được gọi là Android. Có ~1.5 million thiết bị Android được kích hoạt mỗi ngày với độ phân giải từ 320 * 240 đến 2560 * 1600, điều này khiến cho khó có thể if {} else đối với mỗi thiết bị. Ngay cả khi bạn cố gắng tạo danh sách với hầu hết các thiết bị được sử dụng và bạn chỉ cố gắng nhắm mục tiêu đến những thiết bị đó, sẽ rất khó để hỗ trợ một thiết bị mới trong tương lai.

Cách tiếp cận của tôi trong một thời gian trở lại là quên phương pháp tách thiết bị cũ thành danh mục "di động" và "máy tính để bàn" và tạo phương pháp mới. Và phương pháp đó bao gồm các trình duyệt "tốt" và "xấu" dựa trên khả năng của trình duyệt. Ví dụ: nếu trình duyệt hỗ trợ bộ nhớ cục bộ, trình duyệt sẽ nằm trong danh mục "tốt".

Bắt đầu từ điều này, tôi có khả năng tạo phiên bản "cơ sở" của trang web, rất cơ bản từ quan điểm giao diện người dùng nhưng sẽ hoạt động trên trình duyệt chéo. Phiên bản cơ sở này của trang web sẽ hiển thị cùng một nội dung (vì điều đó quan trọng vào cuối ngày) trên tất cả các thiết bị, sẽ có kích thước rất nhỏ (ít nội dung hơn, nhỏ hơn html) và dựa trên khả năng của trình duyệt làm giàu ở phía khách hàng.Vì vậy, cuối cùng, bạn sẽ kết thúc với một trang web có kích thước rất nhỏ (kích thước và tài sản html), trông OK qua trình duyệt và nó sẽ hỗ trợ mọi thiết bị mới xuất hiện trên thị trường mà không có bất kỳ thay đổi nào , sẽ tải nhanh ngay cả khi kết nối kém và có thể được làm giàu ở phía máy khách dựa trên khả năng của trình duyệt.

Bạn thậm chí có thể làm phong phú trang web dựa trên kích thước thiết bị: nếu trình duyệt báo cáo màn hình lớn, bạn có thể mang lại nhiều nội dung hơn, nhiều quảng cáo hơn và làm cho trang web đẹp hơn; nếu các báo cáo trình duyệt nằm trên một màn hình nhỏ, bạn để nguyên nó.

+1

Trên thực tế câu trả lời này đáng đọc dù bạn có nghĩ gì - đó là một cách tiếp cận thú vị, mà tôi chưa từng nghĩ đến :) – denlau

+1

Chấp nhận hoàn toàn cách tiếp cận này, và đó chính xác là những gì tôi đang cố gắng đạt được, nhưng nó chắc chắn dễ dàng hơn nói hơn làm, ít nhất là ở cấp độ phía máy chủ! –

Các vấn đề liên quan