忍者ブログ

技術メモ

Home > ブログ > > [PR] Home > ブログ > ASP > ◆ASPでのMobile開発について

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

◆ASPでのMobile開発について

【Mobile開発のロードマップ】
 [ASPのバージョンについて]
  ●ASP.NET1.x
   デバイスプロファイル・デバイスドライバの
   Updateを行っていたが廃止
  ●ASP.NET2.0
   デバイスプロファイルツールUpdateにより
   ブラウザ機能ファイル(.browser)の作成可能
  ●ASP.NET2.0の新機能
   デバイスフィルタの簡略化
   ブラウザ機能ファイルの簡略化
   デバイス単位でのクッキーレス(1.xではアプリ全体)
 [ロードマップ]
  (1)モバイル・コントロールとデバイス・アダプタについて
   以下のものが最低限必要
   ①ASP.NET 1.1モバイル・コントロール
   ②デバイス・アップデート4まで(現時点で最新)のデバイス・アダプタ
  (2)ASP.NET 2.0からの新機能
   ①デバイス・フィルタが簡単に追加可能
   ②デバイス単位でのクッキーレスを実現(ASP.NET 1.1ではアプリケーション単位)
   ③ブラウザ・ファイルが簡略化され、開発者が更新可能
   ④開発者がコントロール・アダプタ*1をカスタマイズ可能
  (3)ここのデバイスの対応
   開発者が自分でカスタマイズして各デバイスに対応
   対応方法は以下の二つ
   ①既存のデバイス・アダプタをカスタマイズする
   ②マイクロソフトが提供するツール・セットで、独自のデバイス・アップデートを作成し、
    それを利用してデバイス・アダプタをアップデートする
   ※①の方が容易

 (参考文献)
 http://msdn.microsoft.com/ja-jp/library/cc671420.aspx

【Mobile開発でのキーワード】
 ●デバイスプロファイル
 ●デバイスドライバ
 ●デバイスフィルタ
  各デバイスの識別を行う機能
  デバイスごとに適切なレンダリング処理を行うために、接続してくるデバイスを識別する機能
 ●デバイス・アダプタ
  携帯電話などの各デバイスに対応したレンダリング処理を提供する機能
 ●ブラウザ機能ファイル
 ●プロファイル
 ●メンバーシップ
 ●パーソナライゼーション
 ●コントロール・アダプタ
  デバイス・アダプタの一種で、コントロールに対してデバイスごとのレンダリング処理を行う機能


【情報取得源】
 [対象クラス]
  (System.Web.Configuration.HttpCapabilitiesBase)(HttpContext.Current.Request.Browser)
 [プロパティ]
  ①Browser:ブラウザ情報
  ※HTTP要求ヘッダのUser-Agentから判別されたブラウザ名
  ②PreferredRenderingType:デバイス側で推奨されているコンテンツの種類
  デバイス・フィルタ機能を用いて②から①の情報を作成している

 

【デバイスフィルタ】
 (1)定義場所
  モバイルWeb構成ファイル(Web.config)

  <deviceFilters>
   <filter name="isJPhone" compare="Type" argument="J-Phone" />
   <filter name="isHTML32" compare="PreferredRenderingType" argument="html32" />
   <filter name="isWML11" compare="PreferredRenderingType" argument="wml11" />
   <filter name="isCHTML10" compare="PreferredRenderingType" argument="chtml10" />
   <filter name="isGoAmerica" compare="Browser" argument="Go.Web" />
   <filter name="isMME" compare="Browser" argument="Microsoft Mobile Explorer" />
   <filter name="isMyPalm" compare="Browser" argument="MyPalm" />
   <filter name="isPocketIE" compare="Browser" argument="Pocket IE" />
   <filter name="isUP3x" compare="Type" argument="Phone.com 3.x Browser" />
   <filter name="isUP4x" compare="Type" argument="Phone.com 4.x Browser" />
   <filter name="isEricssonR380" compare="Type" argument="Ericsson R380" />
   <filter name="isNokia7110" compare="Type" argument="Nokia 7110" />
   <filter name="prefersGIF" compare="PreferredImageMIME" argument="image/gif" />
   <filter name="prefersWBMP" compare="PreferredImageMIME" argument="image/vnd.wap.wbmp" />
   <filter name="supportsColor" compare="IsColor" argument="true" />
   <filter name="supportsCookies" compare="Cookies" argument="true" />
   <filter name="supportsJavaScript" compare="Javascript" argument="true" />
   <filter name="supportsVoiceCalls" compare="CanInitiateVoiceCall" argument="true" />
  </deviceFilters>

 (2)デバイス・フィルタの利用例
  下の赤字部分でデバイス・フィルタを利用している
  <mobile:Label ID="Label1" Runat="server">
   <DeviceSpecific>
    <Choice Filter="isCHTML10" Text="CHTML10" />
    <Choice Text="OTHER"/>
   </DeviceSpecific>
  </mobile:Label>

 (3)デバイス・フィルタ判別方法
  <filter name="isCHTML10" compare="PreferredRenderingType" argument="chtml10"/>

  ブラウザの情報を格納したHttpCapabilitiesBaseオブジェクトの
  PreferredRenderingTypeプロパティの値が“chtml10”だった場合、
  そのフィルタ名を“isCHTML10”とする
 (4)エバリュエータ・デリゲート型フィルタ
  ①エバリュエータ・デリゲート型フィルタクラスを作成
  ②エバリュエータ・デリゲート型フィルタを作成
   public static bool メソッド名(MobileCapabilities capabilities, string argument)
   例)
   -------------------------------------------------------------------------------------
   using System;
   using System.Web;
   using System.Web.Mobile;

   namespace Mlib
   {
    public class CapabilityEvaluators
    {
     private readonly static string[] SoftBankUserAgentList =
      new string[]
      {
       "J-PHONE",
       "Vodafone",
       "SoftBank",
       "J-EMULATOR", // エミュレータ用
       "Vemulator"  // エミュレータ用
      };

     public static bool isSoftBank(MobileCapabilities capabilities, string argument)
     {
      string[] agentInfo =
       HttpContext.Current.Request.UserAgent.Split('/');

      if (agentInfo.Length == 0)
       return false;

      return Array.IndexOf(SoftBankUserAgentList, agentInfo[0]) != -1;
     }
    }
   }
   -------------------------------------------------------------------------------------

  ③エバリュエータ・デリゲート型フィルタの利用
   下記の定義をWeb.configに追加する。
   <filter name="isSoftBank" type="Mlib.CapabilityEvaluators,Mlib" method="isSoftBank"/>
  ④コントロールに実装
   <DeviceSpecific>
     <Choice Filter="isSoftBank" Text="SoftBank" />
   </DeviceSpecific>

【デバイス・アダプタ】
 ・デバイス・アダプタを利用すると、モバイル・コントロールのレンダリング処理を、特定のデバイス向けにカスタマイズできる
 ・デバイス・アダプタを活用するには、ブラウザ定義ファイルを利用する

 (1)デバイス・アダプタを利用するには
  ①ブラウザ定義ファイルが必要
   ・デバイスの識別
   ・モバイルコントロールへのマッピング
  ②各デバイス毎に対応したモバイルコントロールが必要

 (2)デバイス・アダプタおよびクラスの種類
  ①コントロール・アダプタの基本クラス:
   以下のすべてのデバイス・アダプタの基本クラスで、一般的なレンダリング処理機能を提供する。
  ②ページ・アダプタ:
   モバイルWebフォーム・ページに対するレンダリング処理を行う。
  ③フォーム・アダプタ:
   Webページ内のFormコントロールに対するレンダリング処理を行う
   (※モバイルWebフォーム・ページには、複数のFormコントロールを含めることができる)。
  ④コントロール・アダプタ:
   Webページ内の標準のWebコントロールに対するレンダリング処理を行う。
   ページ・アダプタやフォーム・アダプタの基本クラスでもある。
  ⑤テキスト・ライタ:
   正確にはデバイス・アダプタではなく、各デバイス・アダプタのレンダリング処理で使われるオブジェクト。
   テキスト出力やデータのエンコードなどの機能を提供する。

 

PR

Comment0 Comment

Comment Form

  • お名前name
  • タイトルtitle
  • メールアドレスmail address
  • URLurl
  • コメントcomment
  • パスワードpassword

PAGE TOP