2

デバイスを検出するために WURFL (最新バージョン、2.3.2) を使用している Ektron サイトがあります。IE9 を使用してサイトを閲覧すると、モバイル版のサイトが表示されます。

ユーザーエージェントは-

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)

この UA をWURFL ホームページに入力すると、一般的な Web ブラウザーとして表示されます。

ただし、Asp.NET WURFL ライブラリを使用すると、モバイルとして検出されます。

次のコード-

IWURFLManager wurflManager = wurflManagerProvider.WURFLManager;
IDevice device = wurflManager.GetDeviceForRequest(Request);
var device_os = device.GetCapability("device_os");
var device_os_version = device.GetCapability("device_os_version");
var device_model = device.GetCapability("model_name");

deviceinfo.Text += "WURFL Model: ";
deviceinfo.Text += device_model;

deviceinfo.Text += "WURFL Device OS: ";
deviceinfo.Text += device_os;

deviceinfo.Text += "WURFL Device OS Version: ";
deviceinfo.Text += device_os_version;

出力-

WURFL Model: Windows Mobile 7.5
WURFL Device OS: Windows Phone OS
WURFL Device OS Version: 7.5

なぜこうなった?

4

2 に答える 2

1

問題は、WURFL がデスクトップ デバイスとモバイル デバイスを区別するように設計されていないことです。モバイルデバイスのみに焦点を当てています。多くの場合、デスクトップはモバイル デバイスとして検出されます。回避策は、desktop_browser_patch.xml ファイルを含めることです。ただし、Firefox 15 および 16 を手動でパッチ ファイルに追加し、Firefox のすべてのバージョンが公開されるたびに更新し続ける必要があります。

デスクトップかモバイルかを判断するには、ユーザー エージェントで正規表現を使用する方がよいことがわかりました。モバイル デバイスの場合は、Wurfl のみを使用してデバイスの機能を検出します。オンラインにはいくつかの正規表現があります。それらはすべて不完全です。Request.Browser.IsMobileDevice も確認してください。それが本当なら、それはモバイル デバイスです。それが false の場合、それはモバイル デバイスである場合とそうでない場合があります。

于 2012-08-30T21:23:15.857 に答える
1

ここでのパーティーには少し遅れましたが、この問題について Ektron サポートと協力しました。

Ektron バージョン 8.6 までは、tholder WURFL API ドライバーを使用していました。そして、正しく動作しません。IE 9 をモバイル ブラウザーとして検出しただけでなく、Android OS 4.0 以降をモバイル ブラウザーとして検出していませんでした (常にデスクトップを表示していました)。

パッチ ファイルでも問題は解決しませんでした。

この問題の理由は、wurfl.xml.gz ファイル全体を読み取っていなかったからです。

Ektron のサポートと何度もやりとりした結果、この問題を修正するために Ektron 8.6 のホットフィックスを作成するのは大変な作業になると判断されました。

Ektron 8.7 にアップグレードすると、新しい WURFL API ドライバーが使用され、IE 9 と Android が正しく検出されるため、この問題が解決されます。

于 2013-07-08T15:31:42.257 に答える