Android フォンのような多くのモバイル デバイスには、「デスクトップ サイトをリクエストする」オプションがあります。モバイル Web サイトを構築中ですが、そのネイティブ機能を機能させたいと考えています。
開発者として私たちに期待されることは何ですか? たとえば、leave_mobile=1 などの GET 要求はありますか?それとも、デバイス自体がユーザー エージェントを変更して、アプリケーションを別のデスクトップと見なすようにだますのでしょうか?
Android フォンのような多くのモバイル デバイスには、「デスクトップ サイトをリクエストする」オプションがあります。モバイル Web サイトを構築中ですが、そのネイティブ機能を機能させたいと考えています。
開発者として私たちに期待されることは何ですか? たとえば、leave_mobile=1 などの GET 要求はありますか?それとも、デバイス自体がユーザー エージェントを変更して、アプリケーションを別のデスクトップと見なすようにだますのでしょうか?
Android デバイスでいくつかのテストを行い、ユーザー エージェントを読み上げたところ、変更されたようです。このネイティブ オプションを機能させるために私が行ったことは、最初のユーザー エージェントをセッションに取り込み、各ページ リクエストでそれを送信されたものと比較することでした。ユーザー エージェントが同じでない場合、それがモバイル デバイスである場合は再検証し、真の場合はセッション ユーザー エージェントを新しいもので上書きします。ただし、新しい検証が失敗した場合は、おそらくデスクトップ バージョンを見つけたいので、新しいヘッダー リダイレクトを送信します。
$DesktopSite = 'www.example.com';
$UserAgent = $_SERVER['HTTP_USER_AGENT'];
if (!isset($_SESSION['use_mobile'])){
$_SESSION['use_mobile'] = 1;
$_SESSION['user_agent'] = $UserAgent;
} else if ($_SESSION['user_agent'] != $UserAgent){ // Check if user-agent has changed
if(!preg_match( /*preg match from http://detectmobilebrowsers.com/ */){
$_SESSION['use_mobile'] = 0;
$_SESSION['user_agent'] = $UserAgent; // Overwrite old user-agent with new one.
header("location: $DesktopSite"); // Send visitor to desktop website.
} else {
// Visitor still seems to be mobile.
$_SESSION['use_mobile'] = 1;
$_SESSION['user_agent'] = $UserAgent; // Overwrite old user-agent with new one.
}
}
デスクトップで初めてモバイル Web サイトに入ると、最初にセッションが作成されるため、デスクトップ サイトに戻ることはありません。これにより、返送されることなく、デスクトップでもモバイル サイトを確認できます。ただし、ユーザー エージェントを変更すると、再検証され、失敗するとリダイレクトされます。
完璧に動作します。これが将来誰にも役立つことを願っています。