2013-04-10 28 views
20

Ngay bây giờ tôi chỉ biết về WURFL của Scientiamobile và một vài người khác. Những thư viện hoặc cơ sở dữ liệu này cho bạn biết rất nhiều thứ về thiết bị nhưng không ai trong số họ có thể chỉ rõ rằng bạn không nên sử dụng chuyển tiếp CSS hoặc các loại hoạt ảnh khác vì ngay cả khi thiết bị hỗ trợ nó, một câu chuyện hoàn toàn khác sẽ chạy trơn tru và đây là mối quan tâm chính của tôi khi xây dựng các ứng dụng web di động.Cách phát hiện thiết bị di động có độ phân giải thấp một cách có ý nghĩa?

Về mặt kỹ thuật, có thể 'phân loại' thiết bị theo hướng này, sử dụng cơ sở dữ liệu 'WURF' không? Và khả năng thiết bị nào tôi nên sử dụng cho các thiết bị 'nhóm' là 'nhanh' về sức mạnh đồ họa?

Cuối cùng, tôi chỉ cần xếp hạng thiết bị từ 1-5 để quyết định hoạt động gfx nào tôi có thể sử dụng.

tốt, mọi ý tưởng đều được chào đón. Hóa ra là trí tuệ thực sự và các nghiên cứu trên internet đã không đưa ra bất cứ điều gì hữu ích ngoại trừ rất nhiều dữ liệu về mũ thiết bị.

Update-1: Tôi chỉ có một câu trả lời từ ScientiaMobile: "chúng tôi đã được chơi đùa với các ý tưởng của một số hình thức chỉ số hiệu suất javascript (có thể dựa trên một trong các tiêu chuẩn hiện hành) mà có thể đưa ra một số dấu hiệu của điều đó, nhưng chúng ta vẫn chưa có. Vấn đề là phức tạp. "

Cập nhật-2: Các vướng mắc lớn nhất chúng tôi phát hiện trong các ứng dụng web di động

  1. điện hoạt hình
  2. PNG minh bạch
  3. văn bản và hộp bóng
  4. hình ảnh thay đổi kích thước

Đối với chúng tôi, nó thực sự đủ để tìm ra rằng chúng ta cần phải vô hiệu hóa chúng các tính năng khi chúng có thể đưa bất kỳ ứng dụng nào đến đầu gối của nó. Có thể, cũng có những cách tiếp cận khác.

Cảm ơn bạn.

+2

Điều này khá thú vị và không thực sự bị áp đặt bởi bất kỳ ai theo như một chương trình tìm kiếm nhanh của Google. Chỉ là một suy nghĩ hoang dã: Khi bạn có thể móc vào sự kiện 'animationend', bạn có thể thử thiết lập một điểm chuẩn nhỏ: thực hiện chuyển tiếp css (trên một lớp vô hình) trong một thời gian cố định (nói 500msecs) và giữ một bộ đếm thời gian ở cùng một thời gian. Sau đó, liên kết với sự kiện 'animationend', kiểm tra xem thời gian chuyển tiếp css ban đầu có giống như thời gian thực hiện được đo (bộ đếm thời gian) ... không? –

+0

Tôi đồng ý, một điểm chuẩn ẩn có thể xác định sức mạnh hoạt hình, nhiều hơn hoặc ít hơn. Các nút cổ chai lớn khác là PNG minh bạch. Tôi thấy các thiết bị Android đi vào đầu gối của nó trên đó và không có độ trong suốt, hoạt động của nó nhanh hơn rất nhiều. – xamiro

+0

Bạn có thể nói một số thiết bị mà CSS chuyển tiếp hoạt động và chạy trơn tru và một số chuyển tiếp CSS có hoạt động nhưng không chạy trơn tru không? Nó sẽ là tốt đẹp để có một ví dụ ở đây. Ngoài ra, bạn đang nhắm mục tiêu một vài thiết bị được chỉ định hoặc bạn có muốn một giải pháp để nó hoạt động trên các thiết bị "tất cả" không? – Uooo

Trả lời

9

Thật không may, tôi không tin rằng điều này là có thể ngày hôm nay cho trường hợp chung.

Nếu bạn chỉ quan tâm đến một số thiết bị giới hạn, tất nhiên bạn có thể kiểm tra từng thiết bị và nhắm mục tiêu cụ thể thông qua tác nhân người dùng hoặc phát hiện dựa trên JavaScript.

Trong ngữ cảnh của một ứng dụng dày (ví dụ, bạn "bọc" trang web của bạn với một cái gì đó như Apache Cordova), nó sẽ có thể cung cấp truy cập JavaScript vào một số thiết bị internals (ví dụ, số lượng bộ nhớ tổng số, số tiền bộ nhớ miễn phí, tốc độ xử lý), nhưng nếu không, thông tin này không có sẵn từ trình duyệt. Như bạn đã gợi ý, việc có quyền truy cập vào loại thông tin thiết bị này có thể vẫn không đủ (ví dụ, dường như các thiết bị "đặc tả cao" hoạt động kém).

Javascript thư viện phát hiện tính năng như Modernizr có thể trả lời cho dù một cái gì đó như hộp bóng và text-shadow là hỗ trợ bởi trình duyệt hiện tại của người dùng, nhưng không cung cấp thông tin về tốt như thế nào hoặc một cách nhanh chóng như thế nào tính năng được hỗ trợ sẽ được trả lại.

Tương tự như vậy, các tập hợp dữ liệu từ Browserscope và có liên quan dự án ringmark (phần nào của một analog hoạt Javascript để WURFL) trả lời trình duyệt hỗ trợ những câu hỏi trên một cơ sở cho mỗi trình duyệt phiên bản thông qua các bài kiểm tra điểm chuẩn cộng đồng đóng góp (ví dụ, không hỗ trợ CSS3 iPhone chuyển tiếp?), và đối với trường hợp chung, đây là những gì cần thiết. Bạn sẽ cần chạy thử nghiệm điểm chuẩn cho các tính năng khác nhau được đề cập và đánh giá hiệu suất thời gian thực. Tuy nhiên, ngay cả điều này có những hạn chế của nó:

  • Bởi vì các điều kiện cần thiết cho tốc độ (bộ nhớ có sẵn, bộ xử lý, pin, kết nối mạng, vv) là liên tục thay đổi liên tục như người dùng di động di chuyển xung quanh, nhận cuộc gọi, thay đổi cài đặt phần cứng , khởi chạy ứng dụng nền, v.v., kết quả của điểm chuẩn có thể không đáng tin cậy/không thể lặp lại.
  • Đo điểm chuẩn mất thời gian và sẽ không thay đổi được độ trễ (hy vọng không đáng kể).
  • Tùy thuộc vào đối tượng địa lý, điểm chuẩn có thể không thực tế.
  • Tính năng có thể hoạt động khác nhau kết hợp (ví dụ: hoạt ảnh PNG trong suốt với bóng) hoặc ở quy mô (ví dụ: mọi hình ảnh trên trang đang hoạt ảnh) so với riêng trong thử nghiệm đo điểm chuẩn.
  • Nếu bạn dựa vào các bộ dữ liệu điểm chuẩn thay vì thực hiện điểm chuẩn theo thời gian thực của riêng mình, kích thước, phạm vi, và tuổi của tập dữ liệu sẽ giới hạn tính hữu dụng của nó.

Điểm cuối cùng là tôi thậm chí không giải quyết được thực tế là hiệu suất là khá chủ quan. Giả sử nó bằng cách nào đó có thể đánh giá/dự đoán tốc độ của một hình ảnh động. Nếu hoạt ảnh sẽ chạy ở tốc độ 15 khung hình/giây, liệu người dùng có thấy hoạt ảnh đó không? Khoảng 5 khung hình/giây? Ai sẽ trở thành trọng tài tối thượng quyết định ngưỡng cho dù một tính năng cụ thể có thực hiện đủ tốt không?

Lời khuyên tốt nhất tôi có thể cung cấp hôm nay là giảm (hoặc loại bỏ) sự phụ thuộc của bạn vào các tính năng phiền hà trong thời gian này. Có vẻ như khủng khiếp khi đề xuất quay lại "cách cũ" khi sử dụng hình ảnh với bóng tối được tạo sẵn hoặc làm cho màu nền không có CSS3, nhưng vào cuối ngày, trải nghiệm người dùng sẽ được ưu tiên hơn khi sử dụng công nghệ mới. Nhiều thiết bị di động chỉ đơn giản là chưa có, và cũng không phải là phương pháp phát hiện. Nếu bạn phải sử dụng các tính năng này, có thể xem xét một cách đơn giản nhưng không phô trương để người dùng chọn tham gia/chọn không tham gia như tùy chọn chế độ xem "chuẩn" so với "cơ bản HTML" của Gmail hoặc tự động chọn tham gia cho các trình duyệt đã biết .

+0

Xin chào, có vẻ như bạn đã làm bài tập về nhà :-) Tôi đang chăm sóc để cung cấp cho bạn tiền thưởng nhưng tôi cần phải kiểm tra các sự kiện đầu tiên. Mong tôi quay lại sau 2 ngày nữa. cảm ơn bạn rồi! – xamiro

0

Tóm lại, không. Cách chúng tôi xác định độ mịn của hoạt ảnh và đồ họa chỉ phụ thuộc vào FPS (khung hình mỗi giây). Và trong câu hỏi này, chúng ta đang nói về "các ứng dụng web", đang sử dụng HTML và JS ở phía máy khách. Vì không có phía máy khách nào cung cấp giao diện cho các chương trình để có được FPS bằng HTML hoặc JS, nên không thể biết liệu máy khách có trơn tru hay không.

Tuy nhiên, nếu bạn thực sự muốn có điểm chuẩn về hiệu suất của ứng dụng web. Bạn có thể sử dụng stats.js để theo dõi sự thay đổi của chỉ số và có điểm chuẩn để bạn đề xuất ứng dụng khách kích hoạt hoặc vô hiệu hóa bất kỳ loại hiệu ứng nào trên thời gian chạy. Phương pháp này thậm chí làm việc với hầu hết các FX của các thư viện Javascript như jquery quá. Nhưng điều này sẽ mất đôi khi để bạn có đủ dữ liệu trước khi áp dụng thay đổi và chỉ số có thể khác với trạng thái của thiết bị, chẳng hạn như sử dụng bộ nhớ, ứng dụng đồng thời, v.v.

2

Tôi không thể thêm nhiều hơn 'user113215 ' đã nói.Ngoài ra nó không phải là câu trả lời cho câu hỏi thực tế mà là vấn đề thực tế:

Tôi đã thử nghiệm với một vài người dùng và chúng tôi đang sử dụng menu bật lên chào mừng đơn giản, yêu cầu người dùng tắt hiệu ứng đặc biệt như bóng và hình động. Phần lớn người dùng thử đã đánh giá cao sự lựa chọn và hiểu rõ các phương tiện của trình đơn đó. Chúng tôi tích hợp tính năng này hiện đại hơn và kết hợp với điểm chuẩn ẩn để tự động lựa chọn trước các hiệu ứng GFX.

Cảm ơn bạn. g

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