2015-05-05 13 views
8

Đang thử các ứng dụng Windows Universal với JavaScript Tôi nhận thấy thuộc tính WinJS.Utilities.isPhone không còn khả dụng nữa, điều này có ý nghĩa vì sẽ không có lý do gì để yêu cầu điều đó khi chạy.Có cách nào được khuyến nghị/chính xác để phát hiện ứng dụng UWP của tôi Tôi đang chạy trên Điện thoại?

Tôi muốn biết chỉ cho mục đích thử nghiệm nếu có một cách đúng đắn của phát hiện các thiết bị ứng dụng của tôi đang chạy trong

EDIT:. Câu hỏi của tôi là KHÔNG về việc phát hiện một trình duyệt di động. Tôi đang nói về một ứng dụng phổ biến hoàn toàn mới cho Windows 10 có thể chạy trên điện thoại, máy tính để bàn, máy tính bảng, Xbox, HoloLEns, thiết bị IoT và tất cả. WinJS có một tài sản cho tôi biết liệu tôi có đang chạy trên điện thoại hay không. Tài sản đó bây giờ đã biến mất. Vui lòng không đóng câu hỏi này do trùng lặp với "phát hiện trình duyệt dành cho thiết bị di động". Đó không phải là điều tôi cần.

+0

có thể trùng lặp của [Phát hiện trình duyệt dành cho thiết bị di động] (http://stackoverflow.com/questions/11381673/detecting-a-mobile-browser) –

+1

nó không phải là bản sao ... Tôi đã mở rộng câu hỏi của mình để mọi cơ thể hiểu những gì tôi đang yêu cầu ... vui lòng đọc toàn bộ câu hỏi trước khi đề xuất câu trả lời – sebagomez

Trả lời

11

Nên biết trước: Bất kỳ hình thức phát hiện thiết bị là mong manh do bản chất năng động của phần cứng - một thiết bị mới có thể đi cùng vào ngày mai mà phá vỡ logic của ứng dụng của bạn. Tốt nhất là chỉ sử dụng các API này để đo từ xa/phân tích thay vì kích hoạt hành vi thời gian chạy.

Thường xuyên hơn không, những gì bạn thực sự muốn biết là một số thuộc tính của thiết bị hoặc ứng dụng đó là không vốn đã gắn liền với gia đình thiết bị (không thiết bị này hỗ trợ SystemTray API? Có một bàn phím kèm theo?Cửa sổ có rộng hơn 500px không? v.v.)

Điều đó nói rằng, trong Windows 10 bạn có thể truy vấn DeviceFamily qua AnalyticsInfo.VersionInfo.DeviceFamily và nó sẽ cho bạn biết những thứ như "Thiết bị di động" hoặc "Máy tính để bàn" hoặc "Xbox" vv (nơi "Điện thoại di động" có thể là bất kỳ loại thiết bị nào - điện thoại , máy tính bảng, v.v.). Ngoài ra còn có một tài sản DeviceForm rằng có thể là hữu ích, nhưng một lần nữa bạn không thể thực sự dựa vào nó trong thời gian chạy để xác định nói rằng bạn đang chạy trên "điện thoại". Vì vậy, về cơ bản, câu trả lời là "bạn có thể sử dụng các API này để đo từ xa nhưng không mã hóa bất kỳ giá trị nào vào ứng dụng của bạn vì nó sẽ phá vỡ khi thiết bị mới xuất hiện trên thị trường". Ít nhất, luôn đảm bảo rằng bạn xử lý trường hợp giá trị trả về không phải là giá trị mà bạn biết về ưu tiên.

+0

Đây chính xác là loại o f câu trả lời tôi đã tìm kiếm! – sebagomez

+0

Tôi hoàn toàn hiểu những gì Microsoft đang cố gắng làm với UWP, nhưng ở một số nơi, khía cạnh xấu xí của WinRT vẫn tỏa sáng. Hãy xem lớp WebAuthenticationBroker. Nó chỉ KHÔNG làm việc theo cùng một cách trên một thiết bị Điện thoại hoặc Máy tính để bàn. Và bạn luôn luôn có hai hoàn toàn (và tôi có nghĩa là ENTIRELY) triển khai khác nhau của cùng một điều. Vì vậy, có, người trợ giúp DeviceFamily là hoàn toàn cần thiết. –

0

Có rất nhiều thư viện JS để phát hiện nền tảng/thiết bị nào được sử dụng.

Cá nhân tôi thích sử dụng lib này: https://github.com/kaimallea/isMobile

Sau đó bạn sẽ có thể phát hiện thiết bị di động theo cách như vậy:

isMobile.apple.tablet 
isMobile.android.phone 

và vân vân.

Trong trường hợp bạn có ý tưởng tự mình thực hiện lib như vậy, hãy nhớ rằng phải mất một số nỗ lực để luôn cập nhật, vì cách phát hiện thiết bị di động có thể thay đổi theo thời gian.

Nói chung, cách phổ biến để phát hiện thiết bị người dùng là kiểm tra tiêu đề truy vấn.

Xin lưu ý rằng bạn không thể hoàn toàn dựa vào thông tin này - tiêu đề có thể dễ dàng sửa đổi. Google cho User Agent để biết thêm thông tin.

Vì vậy, "bỏ qua quá trình xác thực cho người sử dụng với điện thoại" là cực kỳ ý tưởng tồi

+0

Xin lỗi, nhưng tôi đang nói về ứng dụng UWP chứ không phải ứng dụng web. Mặc dù câu trả lời đầu tiên của bạn cũng có thể hoạt động. Sẽ xem xét điều đó. Cảm ơn – sebagomez

1

Bạn cũng có thể kiểm tra các liên kết sau đây http://www.abeautifulsite.net/detecting-mobile-devices-with-javascript/ http://www.sitepoint.com/detect-mobile-devices-jquery/

và dĩ nhiên là một bài tương tự ở đây trên stackoverflow với một câu trả lời hay nhất

Detecting a mobile browser

Và talkin g về Windows 10, giải nén từ Winjs Github repo, đây là câu trả lời.

https://github.com/winjs/winjs/issues/601#issuecomment-87137485

Answer from Github WinJS repo

+0

Một lần nữa, mọi người không đọc các câu hỏi. Tôi đang nói về một ứng dụng UWP, không phải trên web. Tôi muốn biết nếu WinJS mang lại một tài sản out-of-the-box như nó được sử dụng để – sebagomez

+0

dear sebagomez i´m kiểm tra và tài sản này được hỗ trợ với các ứng dụng WP8.1 https://msdn.microsoft.com/en-us /library/windows/apps/dn607959.aspx Tôi cũng xin lỗi bạn đang đúng .. tôi đang thực hiện một phần đọc, nhưng tôi nghĩ rằng nếu nó không còn có sẵn, bạn nên xem xét thêm một thư viện bên ngoài để thực hiện quá trình xác minh –

+0

Tôi đang nói về các cửa sổ 10 – sebagomez

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