2008-09-26 23 views
56

Chúng tôi đang bắt đầu đi xuống đường dẫn hỗ trợ trình duyệt di động cho webapp thương mại điện tử doanh nghiệp (dựa trên Java/Servlet). Tất nhiên có nhiều quyết định được đưa ra, nhưng dường như với tôi nền tảng là để có thể phát hiện các trình duyệt di động một cách đáng tin cậy và đưa ra quyết định về nội dung được trả lại cho phù hợp. Có cách nào tiêu chuẩn để đưa ra quyết định này (nhanh chóng) dựa trên yêu cầu http và lý tưởng thu thập thêm thông tin về trình duyệt và thiết bị đã đưa ra yêu cầu (kích thước màn hình, khả năng html, v.v.).Cách chuẩn để phát hiện trình duyệt di động trong ứng dụng web dựa trên yêu cầu http

Tôi cũng sẽ đánh giá cao bất kỳ thông tin bổ sung nào sẽ được sử dụng từ một người đã đi xuống con đường này để thực hiện hỗ trợ trình duyệt web dành cho doanh nghiệp lớn và kiến ​​trúc sư từ phía phát triển.

[sửa] Tôi chắc chắn hiểu tiêu đề yêu cầu và thông tin về cơ sở dữ liệu của tác nhân người dùng chuẩn là một trợ giúp tuyệt vời. Đối với những người nói về các thuộc tính tiêu đề yêu cầu 'khác', nếu bạn có thể bao gồm tên/tài nguyên tiêu chuẩn hóa tương tự của các giá trị sẽ là một trợ giúp lớn.

[sửa] Một số người dùng đã đề xuất các giải pháp liên quan đến cuộc gọi qua dây tới một số dịch vụ web sẽ thực hiện phát hiện. Trong khi tôi chắc chắn điều này hoạt động, nó không phải là một giải pháp tốt cho một trang web thương mại điện tử doanh nghiệp vì hai lý do: 1) tốc độ. Một cuộc gọi qua dây cho mỗi yêu cầu trang cho một bên thứ ba sẽ có tác động hiệu suất rất lớn. 2) phụ thuộc/hợp pháp. Chúng tôi sẽ liên kết thời gian phản hồi trang web và chức năng chính của chúng tôi với dịch vụ của họ, điều này thật kinh khủng vì lý do pháp lý và rủi ro.

+0

Bạn có thể thấy một số ý tưởng trong http://stackoverflow.com/questions/6844020/way-to -do-content-adaptation-to-mobile –

Trả lời

42

Không phải cách chuẩn để kiểm tra tác nhân người dùng là gì? Dưới đây là database of user agents bạn có thể sử dụng để phát hiện các trình duyệt di động.

+2

Tôi đã không nhận ra có một tham chiếu tích cực duy trì cho những điều này. Cảm ơn. – Peter

+2

WURFL cho java là một mớ hỗn độn. Chúc may mắn tìm một liên kết Java đã cho để tải xuống. –

+1

WURFL là một bộ nhớ. Và 15 MB XML? Nhưng nó làm những gì nó nói. – boring

0

Bạn sẽ phải kiểm tra các chuỗi tác nhân người dùng với một danh sách định nghĩa trước, like this one

1

Bạn sẽ nhận được hầu hết thông tin như trình duyệt, thiết bị, ngôn ngữ được chấp nhận, định dạng được chấp nhận, v.v ... từ tiêu đề yêu cầu. Tác nhân người dùng được đề cập ở trên là một phần của tiêu đề yêu cầu.

6

Trong khi bạn có thể phát hiện trình duyệt di động thông qua tác nhân người dùng, cuộc chiến trình duyệt trên nền tảng PC cho thấy các tác nhân người dùng không thực sự là một việc tốt. Điều gì lý tưởng nên được thực hiện là phong cách cụ thể nên được áp dụng dựa trên loại phương tiện truyền thông hoặc một câu trả lời khác nhau sẽ được gửi dựa trên tiêu đề khác với tác nhân người dùng - chẳng hạn như Accept-header cho biết loại nội dung nào mà trình duyệt thích. Ngay bây giờ nó có thể đủ để mã một trang web hoạt động với iPhone và với Opera thông qua trình duyệt đánh hơi - nhưng Googles Android đang đến bất kỳ phút nào và có rất nhiều điện thoại di động khác sẽ có chức năng trình duyệt gần với iPhone của iPhone. trong tương lai gần và sẽ là một sự lãng phí để phát triển một trang web di động không hỗ trợ các thiết bị đó tốt như possibel từ đầu.

20

@ Câu trả lời của David được đề cập bằng WURFL - đây có lẽ là lựa chọn tốt nhất của bạn. Tuy nhiên, trước hết, tỷ lệ thành công thường là khoảng 60% (từ kinh nghiệm của tôi và của người khác). Với các nhà cung cấp dịch vụ thay đổi UA liên tục và số lượng hồ sơ thiết bị tồn tại (60.000+?), Không có cách nào chống đạn để có được tất cả dữ liệu phù hợp mà bạn muốn.

Chỉ cần cảnh báo một chút trước khi dựa nhiều vào DB của thiết bị.Tôi sẽ cố gắng giữ cho các tùy chọn của người dùng mở bằng cách cho phép họ thay đổi các tùy chọn phiên trong trường hợp tôi đã đoán sai.

+2

+1 để được tư vấn cho phép người dùng chọn trải nghiệm riêng – mikek3332002

0

bạn có thể sử dụng dịch vụ web để phát hiện duyệt trên thiết bị di động như handsetdetection.com.

+2

Cuộc gọi qua dây cho mỗi yêu cầu trang không khả thi vì lý do hiệu suất – Peter

2

tôi đề xuất một hệ thống phát hiện tự do mà là dựa trên UAProf và user agent: http://www.mobilemultimedia.be UAProf nên là khóa chính để phát hiện khi nó có sẵn như thường có nhiều đại lý người dùng cho UAProf cùng. Nếu bạn muốn quản lý điều này một mình, sau đó bạn nên đi cho Wurfl vì bạn có thể tải xuống toàn bộ cơ sở dữ liệu và tự quản lý nó một cách cục bộ.

0

Thực tế là chỉ dựa vào useragent không đủ tốt để phát hiện các trình duyệt di động. Chắc chắn, nhiều năm trước bạn có thể tìm kiếm nó cho một số dây và đoán rằng nó là một chiếc Nokia hay cái gì đó, nhưng bây giờ có rất nhiều điện thoại, và rất nhiều điện thoại giả vờ là những thứ mà họ không phải là một cái gì đó nhiều hơn nữa tinh vi là cần thiết.

Tôi đã tìm thấy một trang web tuyệt vời tại link text dựa trên cùng một giải pháp mà MTV sử dụng cho tất cả các trang web di động của họ. Nó là REALLY tốt vì nó có một ngôn ngữ đánh dấu độc lập thiết bị nhưng quan trọng hơn là chúng cung cấp một cuộc gọi webservice cho isMobileDevice().

Chỉ cần xem trong hướng dẫn sau đó 'cách hoạt động'.

Tôi đã sử dụng nó cho các trang web khách hàng của mình và chưa tìm thấy trình duyệt dành cho thiết bị di động mà nó không phát hiện chính xác. Hoàn toàn mù quáng!

+2

Điều này không hợp lý vì lý do hiệu suất - 'Sử dụng WAPL rất dễ dàng và chỉ yêu cầu bạn chuyển WAPL hợp lệ tới các máy chủ của Wapple bằng cách sử dụng các dịch vụ web SOAP hoặc REST. Máy chủ webservice phản hồi với đánh dấu để bạn xuất ra thiết bị. Bạn có toàn quyền kiểm soát nội dung, thiết kế và các yếu tố thuyết trình. ' – Peter

+1

Có thể có liên quan để chỉ ra rằng người trả lời là CTO của tổ chức "wapple" xuất bản wapl.info và các dịch vụ liên quan khác được cung cấp bởi wapple. http://www.gomonews.com/richwapple/ – Cheekysoft

2

Khi gần đây tôi có nhu cầu tương tự, tôi đã tìm thấy this code sử dụng HTTP_X_WAP_PROFILE, HTTP_ACCEPTHTTP_USER_AGENT để xác định trình duyệt là thiết bị di động hoặc không di động. Đó là PHP nhưng có thể được chuyển đổi khá dễ dàng thành bất cứ điều gì bạn cần (tôi đã thực hiện nó trong VBScript cho ASP cổ điển).

Trớ trêu thay, nó bật ra rằng tôi đã không kết thúc sử dụng mã vì chúng tôi quyết định cung cấp các URL cụ thể cho người dùng di động và không di động, nhưng chắc chắn nó làm việc khi tôi đã thử nghiệm nó ...

5

Sau nhiều ngày tìm kiếm đúng cách phát hiện thiết bị di động tôi đã quyết định giữ nó đơn giản và tôi sẽ đặt nút 'Trang thiết bị di động' trên trang chỉ mục của tôi .... chỉ một cú nhấp chuột thôi !!

8

Bạn có thể sử dụng Modernizer để phát hiện khả năng trình duyệt

0

Chỉ cần chạy qua Device and feature detection on the mobile web với những nội dung:

  1. Sử dụng thiết bị và tính năng phát hiện để cải thiện trải nghiệm người dùng trên web di động
  2. Giới thiệu về phát hiện thiết bị
  3. Phương pháp tiếp cận thiết kế trang web dành cho thiết bị di động
    1. Không làm gì
    2. Cung cấp một trang web di động generic
    3. Thiết kế với điện thoại di động và thích ứng trong tâm trí
  4. Content thích ứng và thiết bị nhóm chiến lược
    1. Device nhóm
    2. Content thích ứng
  5. Mini thiếu các nhu cầu thích ứng ở nơi đầu tiên
  6. cách tiếp cận chung để phát hiện thiết bị
    1. thích ứng Server side
    2. thích ứng Client-side
    3. Server-side User Agent (UA) và tra cứu tiêu đề
    4. máy chủ chuỗi UA bên cạnh kết hợp với tra cứu cơ sở dữ liệu thiết bị
    5. Phát hiện hồ sơ tác nhân người dùng phía máy chủ (UAProf)
    6. Phát hiện dựa trên công nghệ JavaScript
    7. loại phương tiện CSS
    8. phương tiện CSS truy vấn
  7. thực hành tốt nhất bổ sung
    1. Redirection + thủ công liên kết
    2. trang Landing + thủ công liên kết
  8. trang mẫu Downloadable
1

OK, đây là một câu trả lời rất đơn giản - làm cách nào để cho phép người dùng quyết định? trên đăng nhập của bạn để ap của bạn, cung cấp một liên kết đến trang web di động. trên trang web dành cho thiết bị di động, cung cấp liên kết "quay lại trang web chính" - hãy thử www.fazolis.com trên thiết bị di động của bạn - họ thực hiện tốt công việc này.

sau đó, trên liên kết đến trang web dành cho thiết bị di động từ trang web trình duyệt, hãy đăng ký "phiếu bầu" của họ và tác nhân người dùng của họ. Bạn có thể tạo danh sách đáng tin cậy của riêng mình SỐ khách hàng muốn có trang web dành cho thiết bị di động. Sử dụng kết hôn này với thông số kỹ thuật về kích thước màn hình cho các thiết bị di động này và bạn có thể xây dựng một số logic khá tốt cho trải nghiệm người dùng thỏa đáng. Tôi sẽ KHÔNG BAO GIỜ đăng lên một nguồn mạng cho một cái gì đó như tiểu học như thế này.2 và trên "trang di động" của bạn - nếu bạn viết ap của bạn theo ngữ nghĩa tốt, thì bạn sẽ có thể trình bày một trang web duy nhất cho cả thiết bị di động và trình duyệt so với việc phải viết hai bộ trang riêng biệt. Chỉ cần một cái gì đó để suy nghĩ về - điều này là giá trị thêm suy nghĩ và nỗ lực để tiết kiệm thời gian sau đó.

3

Trọng lượng nhẹ sau Apache cấu hình làm một công việc khá tốt và nhớ sở thích của người dùng nếu họ thích phiên bản PC

<VirtualHost (your-address-binding)> 

    (your-virtual-host-configuration)  

    RewriteEngine On  
    RewriteCond %{QUERY_STRING} !ui=pc 
    RewriteCond %{HTTP_COOKIE} !ui=pc 
    RewriteCond %{HTTP_USER_AGENT} "^.*(iphone|ipod|ipad|android|symbian|nokia|blackberry| rim |opera mini|opera mobi|windows ce|windows phone|up\.browser|netfront|palm-|palm os|pre\/|palmsource|avantogo|webos|hiptop|iris|kddi|kindle|lg-|lge|mot-|motorola|nintendo ds|nitro|playstation portable|samsung|sanyo|sprint|sonyericsson|symbian).*$" [NC,OR] 

    RewriteCond %{HTTP_USER_AGENT} "^(alcatel|audiovox|bird|coral|cricket|docomo|edl|huawei|htc|gt-|lava|lct|lg|lynx|mobile|lenovo|maui|micromax|mot|myphone|nec|nexian|nook|pantech|pg|polaris|ppc|sch|sec|spice|tianyu|ustarcom|utstarcom|videocon|vodafone|winwap|zte).*$" [NC] 

    RewriteRule /(.*) http://bemoko.com/$1 [L] 

    RewriteCond %{QUERY_STRING} "ui=pc" 
    RewriteRule ^/ - [CO=ui:pc:(your-cookie-domain):86400:/] 
    RewriteCond %{QUERY_STRING} "ui=default" 
    RewriteRule ^/ - [CO=ui:default:(your-cookie-domain):86400:/] 
</VirtualHost> 

More nền trên này @http://bemoko.com/training.team/help/team/pc-to-mobile-redirect

1

cách đơn giản nhất là tạo ra một mảng với thẻ thường xuyên kết hợp với các trình duyệt di động. Ít nhất hầu hết các đại lý người dùng di động phải có từ di động, mini, nokia, java ME, android, iphone, hệ điều hành di động, v.v. Nếu có bất kỳ đối tượng nào được kết hợp với tác nhân người dùng, sử dụng strpos php, in nút di động ở đầu trang . Để người dùng chọn. Tôi yêu trang web đầy đủ cos trình duyệt di động của tôi mang lại cho tôi trải nghiệm tương tự, ngoại trừ việc tôi cần thu phóng hoặc cuộn hầu hết các lần.

0

bạn có thể sử dụng WURFL API để phát hiện loại thiết bị

http://wurfl.sourceforge.net/wurfl_schema.php 

hoặc Modernizer để phát hiện khả năng trình duyệt

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