ASP.NET MVC 3 كشف بسيط وموثوق عن الأجهزة المحمولة:هل تستخدم 51degrees.mobi أم تصبح أصليًا؟

StackOverflow https://stackoverflow.com//questions/9706698

سؤال

في تطبيق الويب ASP.NET MVC 3 الخاص بي، أقوم بتجاوز اسم العرض في محرك عرض مخصص لتقديم عرض مختلف محسّن للأجهزة المحمولة غير اللوحية.

كل ما أريد تنفيذه لتجاوز العرض هو الحصول على قيمة دقيقة له Request.Browser.IsMobileDevice وعرض العرض الأصلي للجهاز.

يبدو 51degrees.mobi ثقيلًا جدًا ومعقدًا بالنسبة لحالة الاستخدام البسيطة هذه.ربما يكون هذا مجرد إحباطي من محاولة الخوض في جميع الأمثلة والوثائق الموجودة على موقع ويب 51degrees للحصول على إجابات لما يبدو وكأنه أسئلة بسيطة لتنفيذ بسيط.

في غياب 51 درجة، أحصل على قيم لها Request.Browser.IsMobileDevice و Request.Browser.ScreenPixelsWidth.لقد لاحظت أنه بالنسبة لمتصفحات سطح المكتب يكون العرض دائمًا 640 بينما Request.Browser.Capabilities["51Degrees.mobi"] يحتوي على قيمة "غير معروف" لـ ScreenPixelsWidth.أعتقد أن القيمة غير المعروفة أكثر دقة نظرًا لطبيعة التنفيذ من جانب الخادم.

سؤالي الرئيسي هو:هل أحتاج حقًا إلى 51 درجة لمتطلباتي البسيطة؟

إذا لم أستخدم 51degrees، فهل هناك بعض الأمثلة المحددة للمتصفحات التي سأفشل في اكتشاف IsMobileDevice وعرض الشاشة بشكل صحيح؟على سبيل المثال، هل ستكون قيم .NET Request.Browser.IsMobile وScreenPixelsWidth المضمنة غير دقيقة أو غائبة لجهاز iPad الجديد عند صدوره أو لأحدث إصدار من متصفح Android؟يستقبل موقعي حوالي 65% من مستخدمي الأجهزة المحمولة، والعديد منهم يستخدمون هواتف عادية ضعيفة مزودة بمتصفحات مثل UP.Browser، لذا فإن الحصول على الهاتف المحمول بشكل صحيح أمر مهم إلى حد ما.

إذا كنت أستخدم 51degrees، فهل أحتاج دائمًا إلى الانتقال إلى Request.Browser.Capabilities["51Degrees.mobi"]؟أو هل تقوم 51degrees بتجاوز/تحديث قيمة Request.Browser.IsMobileDevice لتكون متزامنة مع تقييمها للمتصفح؟من الواضح أنه لا يتجاوز Request.Browser.ScreenPixelsWidth.

أنا منفتح على إجابات "أنت تفعل ذلك بشكل خاطئ، إليك طريقة أفضل" طالما أنها لا تقترح MVC 4 أو تتضمن حلاً مدفوعًا مثل WURFL.

هل كانت مفيدة؟

المحلول

هذا التعليمات يشرح خصائص Request.Browser التي تم تجاوزها بواسطة 51Degrees.mobi.

هناك حالات قليلة جدًا حيث يجب عليك الوصول إلى مفتاح "51Degrees.mobi" مباشرةً.عندما يتم تجاوز الخاصية، قم بالوصول إليها كما تفعل عادةً.عندما لا يتم تجاوز الخاصية أو عدم تغطيتها بواسطة HttpBrowserCapabilities، يجب عليك استخدام اسم الخاصية.على سبيل المثال:

var isTablet = Request.Browser["IsTablet"];

انظر الى هذا وصلة للحصول على قائمة الخصائص المتاحة.

نظرًا لأنه يجب أن يتجاوز ScreenPixelsWidth، سأكون مهتمًا بمعرفة المزيد عن بيئة الاختبار الخاصة بك.نظرًا لأن .NET يتطلب أن تكون القيمة رقمية، إذا لم يتمكن 51Degrees.mobi من تحديد الحجم (غير معروف)، فلن يتم تجاوز القيمة.

شكرا لك على النظر في 51Degrees.mobi.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top