[MH4]モンハン4攻略アプリ完成!

あむちょです。

モンハン4攻略サイトをアンドロイド用アプリとしてリリースしました。

PR アプリ作ってます

mh4

[MH4]モンハン4攻略図鑑

アプリ内容は、基本的に攻略サイトと同じですが、データをキャッシュするのでアプリの方が表示が早いです。一度読み込めば、オフラインでも表示されます。

いちおうメインの活動はアプリなので、たまにはアプリの説明。

今回はじめてHTMLベースのアプリを作ったけど、なかなか便利です。HTMLを使うメリットは

  • PCでも見れるし、iPhoneでもそのまま使える(完全にHTMLベースだとたぶん審査通らない)
  • アプリだとなかなかアップデートしてくれないけど、HTML側の更新は簡単
  • アプリでページ閲覧数を稼げれば、同じドメインの価値が上がる

などが考えられます。android側で、デフォルトのブラウザーと同じ挙動をするクラスが用意されているにでそれを使うだけです。

onCreateメソッドで

<br />
@Override<br />
public void onCreate(Bundle savedInstanceState) {<br />
    super.onCreate(savedInstanceState);</p>
<p>    webView = new WebView(this);<br />
    setContentView(webView);<br />
    webView.loadUrl(&amp;quot;サイトのURL&amp;quot;);<br />
}<br />

これだけでもサイトが表示されます。次にオプションの設定を追加していきます。

<br />
@Override<br />
public void onCreate(Bundle savedInstanceState) {<br />
    super.onCreate(savedInstanceState);</p>
<p>    webView = new WebView(this);</p>
<p>    webView.getSettings().setLoadWithOverviewMode(true);    //ページを画面全体表示<br />
    webView.getSettings().setUseWideViewPort(true);         //ワイドビューポート<br />
    webView.getSettings().setJavaScriptEnabled(true);       //JavaScriptを有効化<br />
    webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);    //キャッシュを利用</p>
<p>    setContentView(webView);<br />
    webView.loadUrl(&amp;quot;サイトのURL&amp;quot;);<br />

javaScriptはデフォルトでオフになってます。キャッシュの設定はLOAD_CACHE_ELSE_NETWORKでキャッシュがある場合、利用。ない場合ネットワーク経由でデータを取得します。

サイトを更新した時、キャッシュを削除したいときは、永続的なキャッシュも含めてwebview.clearCache(true)で消去できます。引数falseの場合はRAM上のキャッシュのみ削除。

次に、アプリでアクセスした時とそれ以外で表示する物を変えたい場合があるので、オリジナルのユーザーエイジェントを設定します。

<br />
String userAgent = webView.getSettings().getUserAgentString();<br />
webView.getSettings().setUserAgentString(userAgent+&amp;quot;ユーザーエイジェント&amp;quot;);<br />

HTML側で、

<br />
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;!&#8211;<br />
    if(navigator.userAgent.indexOf(&#8216;ユーザーエイジェント&#8217;) &amp;gt; 0){<br />
        特定の処理<br />
    }<br />
//&#8211;&amp;gt;<br />
&amp;lt;/script&amp;gt;<br />

これで、アプリからのアクセス時にサイト側で特定の処理が行えます。

次にサイト側でアプリをコントロールするために

<br />
webView.setWebViewClient(new WebViewClient() {<br />
    //ページ読み込み時<br />
    public boolean shouldOverrideUrlLoading(WebView view, String url){</p>
<p>        if(url.startsWith(&amp;quot;http:&amp;quot;) || url.startsWith(&amp;quot;https:&amp;quot;))return false;</p>
<p>        Uri uri = Uri.parse(url);<br />
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);<br />
        startActivity(intent);<br />
        return true;<br />
    }<br />
});<br />

これでHTMLのアンカーでアプリの動きをコントロールできます。

あとはAndroidManifest.xmlでインターネットアクセスを追加

<br />
&amp;lt;uses-permission android:name=&amp;quot;android.permission.INTERNET&amp;quot; /&amp;gt;<br />
&amp;lt;uses-permission android:name=&amp;quot;android.permission.ACCESS_NETWORK_STATE&amp;quot; /&amp;gt;<br />

これで完成です。

アプリ一覧ページなどで使えば、新しいアプリを出した時にサイトを更新するだけですむので便利です。

ためしにアプリをダウンロードして使ってみるとわかりやすいよ

[ad]

コメント