- PR -

サイトをMobileとDesktop双方に対応させるには

1
投稿者投稿内容
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2002-04-15 13:44
MobileとDesktop双方に対応したWeb Siteを構築するには

ASP.NETとMobile Internet Toolkit を利用することによりDesktop/Mobile双方に対応したWeb Siteを構築することができます。

Desktop/Mobileの振り分けは、Default.aspx ファイルに次のコードを挿入することにより可能です。

この例では、Mobileデバイスのときは MobileDefaut.aspx、IEなどのDesktopのブラウザのときは、DesktopDefault.aspx を呼び出します。

Default.aspx

コード:
<script language="VB" runat="server">

Sub Page_Load
If Request.Browser("IsMobileDevice") = "true" Then
Response.Redirect("MobileDefault.aspx")
Else
Response.Redirect("DesktopDefault.aspx")
End If
End Sub
</script>



MobileDefault.aspx

コード:
<%@ Page Inherits="System.Web.UI.MobileControls.MobilePage" %>

<%@ Register TagPrefix="Mobile" Namespace="System.Web.UI.MobileControls"
Assembly="System.Web.Mobile" %>

<script runat="server">
Sub Page_Load
lblMessage.Text = "Welcome to The Mobile Web Site!"
End Sub
</script>
<Mobile:Form Runat="server">
<Mobile:Label
ID="lblMessage"
Runat="Server" />
</Mobile:Form>



DesktopDefault.aspx

コード:
<%@ Page Language="VB" %>

<script Runat="Server">
Sub Page_Load(s As Object, e As EventArgs)
lblMessage.Text = "Welcome to The Desktop Web Site!"
End Sub
</script>

<html>
<head>
<title>DesktopDefault.aspx</title>
</head>
<body>
<asp:Label id="lblMessage" Runat="Server" />
</body>
</html>




Default.aspx
をクリックするとWelcome to The Desktop Web Site! が表示されます。

MobileデバイスからDefault.aspx ファイルを開くとWelcome to The Mobile Web Site! が表示されます。

Mobile からは、
http://64.251.201.45/dotnet/webCtrl/mobile/Default.aspx
のURLを入力してください。



Web SiteをMobile対応にすることにより、「いつでも、どこでも」利用できる次世代のアプリケーションを開発することができます。

Happy Programming!
Akio Kasai


[ メッセージ編集済み 編集者: Dr ADO.NET 編集日時 2002-04-17 23:26 ]
uda
会議室デビュー日: 2001/12/28
投稿数: 13
投稿日時: 2002-04-15 15:51
宇田です。

コード:
<script language="VB" runat="server">
Sub Page_Load
  If Request.Browser("IsMobileDevice") = "true" Then
    Response.Redirect("MobileDefault.aspx")
  Else
    Response.Redirect("DesktopDefault.aspx")
  End If
End Sub    



i-mode対応機種では、相対パスでのリダイレクト処理がうまくいかないので、
(最新機種でどうなっているかは知りませんが、私のN502iはそうです。)

Server.Transfer

を用いるか、フルパスでリダイレクトをしたほうがいいかもしれません。

NothingBut.NETFX
大ベテラン
会議室デビュー日: 2001/09/13
投稿数: 102
投稿日時: 2002-04-15 16:36
> フルパスでリダイレクトをしたほうがいいかもしれません。

私のN209でもそうです<古すぎる?

ASP.NETでは、Web.Configに次の設定をすることで自動的にフルパス化してくれます。

コード:
	<httpRuntime useFullyQualifiedRedirectUrl="true" />


転送効率などを考えると、ほとんどの場合はモバイル用とデスクトップ用でWeb.Configを分けたほうがいいでしょう。

さらに言うなら、モバイル用のWeb.ConfigにShift-JISエンコーディングを指定しておかないとi-modeに対応が、世の中のデバイスにはShift-JISが読めないものもあるでしょう。そうなると、それごとにWeb.Configを分けるか、コードを書き分けなければなりません。

つまりモバイルって、言われているほど簡単ではないってことです。MMITを使えばそれでもうOK!ってわけにはいかないようです。<経験上
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2002-04-17 22:03
引用:
i-mode対応機種では、相対パスでのリダイレクト処理がうまくいかないので、
(最新機種でどうなっているかは知りませんが、私のN502iはそうです。)
Server.Transfer
を用いるか、フルパスでリダイレクトをしたほうがいいかもしれません。



貴重なご意見ありがとうございます。MMITは、これから評価する予定です。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2002-05-02 15:39
引用:

i-mode対応機種では、相対パスでのリダイレクト処理がうまくいかないので、
(最新機種でどうなっているかは知りませんが、私のN502iはそうです。)
Server.Transfer
を用いるか、フルパスでリダイレクトをしたほうがいいかもしれません。



Desktop のブラウザは、Cookie をサポートしていますが、ほとんどのMobile 系のブラウザは Cookie をサポートしていません。

したがって、Mobile 対応のWebページを作成するときは、Web.Config に
sessionState cookieless="true"を指定する必要があります。
コード:

<configuration>
<system.web>
<sessionState cookieless = "true" />
</system.web>
</configuration>



cookieless session にするとASP.NET は、url の一部にsession ID を埋め込みます。
http://mysite/(ss7ds39dsslhuk38)/mypage.aspx
urlの()で囲まれた部分が session ID です。ASP.NETは、ページ間でこのsession IDを
継承することによりsession 情報を管理します。

cookieless session機能を使用したときは、url の一部に session ID を埋め込むため次の制約があります。

・フルパス指定のurlは使用できません。
 (すべてのurlは相対パスを指定する必要があります。)
・この制約は、form タグや、redirectにも適用されます。

例: 正常ケース
<a href="mypage.aspx">Click Here</a>
<a href="mydir/mypage.aspx">Click Here</a>
<a href="../mypage.aspx">Click Here</a>

例:エラーケース
<a href="/mypage.aspx">Click Here</a>
<a href="http://mysite.com/mypage.aspx">Click Here</a>

i-mode を使用した場合の仕様と、ASP.NET の Cookieless session の仕様が
矛盾するようです・・・

どなたか解決方法がありましたら教えてください。


[ メッセージ編集済み 編集者: Dr ADO.NET 編集日時 2002-05-02 19:14 ]
1

スキルアップ/キャリアアップ(JOB@IT)