5

Android フォンのような多くのモバイル デバイスには、「デスクトップ サイトをリクエストする」オプションがあります。モバイル Web サイトを構築中ですが、そのネイティブ機能を機能させたいと考えています。

開発者として私たちに期待されることは何ですか? たとえば、leave_mobile=1 などの GET 要求はありますか?それとも、デバイス自体がユーザー エージェントを変更して、アプリケーションを別のデスクトップと見なすようにだますのでしょうか?

4

1 に答える 1

6

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 サイトに入ると、最初にセッションが作成されるため、デスクトップ サイトに戻ることはありません。これにより、返送されることなく、デスクトップでもモバイル サイトを確認できます。ただし、ユーザー エージェントを変更すると、再検証され、失敗するとリダイレクトされます。

完璧に動作します。これが将来誰にも役立つことを願っています。

于 2013-04-26T07:52:05.587 に答える