Webアプリをネイティブアプリみたいにみせる
Webアプリをネイティブアプリみたいに見せるには
アプリアイコンの登録と
ブラウザバーやメニューを非表示にする
まずは、アプリアイコンの登録
これは、HTMLファイルのheadへ
アプリアイコンへの設定をすることでできる
<link rel="apple-touch-icon-precomposed" href="../images/icon_file.png"/>
というように、
href=””には、アイコンファイルへのパスを記述する
アイコンのサイズは
144×144がオススメ
これは、アイコンのサイズが小さいと、
解像度の高い端末だとボケて表示されてしまうから
次に、アドレスバーの削除
Androidでは、
<meta name="apple-mobileweb-app-capable"
が使えないため、Javascriptで制御する
Androidでは、画面が1pxでも下へ移動するとURLバーが隠れるため
この特性を使う
$(document).on("mobileinit",function(){ if(navigator.userAgent.match(/Android|iPhone/i)){ $(document).on("pagechange",function()e,data){ //1pxずらしてアドレスバーを隠す var hide_addressbar = function(){ if(document.body.scrollTop==0){ window.scrollTo(0,1); } } /*ページ縦幅がスクリーンの縦幅より狭い場合 ページ縦幅をスクリーン+1して スクロールできるようにする*/ if(navigator.userAgent.match(/Android/i)){ var pageHeight = $(document).height(); var windowHeight = window.outerHeight / window.devicePixelRatio; if(windowHeight => pageHeight){ pageHeight = windowHeight+1; $('BODY').css('height',(pageHeight)+'px'); } } hide_addressbar(); //スクロール時に強制的に 1pxずらす $(window).on('scrollStop',function(){ hide_addressbar(); }); }); } });
これは、Androidは、ページがスクリーンより短いと
縦にスクロールできないため
ページの縦幅を
スクリーンの縦幅+1px広げることで
スクリーン可能にしている
それが
if(navigator.userAgent.match(/Android/i)){ var pageHeight = $(document).height(); var windowHeight = window.outerHeight / window.devicePixelRatio; if(windowHeight => pageHeight){ pageHeight = windowHeight+1; $('BODY').css('height',(pageHeight)+'px'); } } hide_addressbar();
の部分
ただし、これだけだとせっかく隠しても
ユーザーが上にスクロールすると
隠したアドレスバーが出てしまう
このため、その対処として
スクロール時に画面が一番上に達したか
チェックし、
到達したなら強制的に1px下げることでアドレスバーを隠す
その処理が
$(window).on('scrollStop',function(){ hide_addressbar(); });