pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

如何制作一個HTML5的iPhone應用程序

如何制作一個HTML5的iPhone應用程序  三聯

在過去的一年里,你是不是很沮喪,對于所有的使用Objective-C開發iPhone程序的開發者而言,日子都不那么好過,你是不是為了學習開發iPhone應用程序曾經硬著頭皮去讀著那生澀難懂的學習教程,事實是Objective-C是一門類似C語言的語言,這也就絕定了它不是那么容易學習。

我不是勸你去放棄學習Objective-C,因為世上無難事,只怕有心人。但是條條大路通羅馬,也許你轉換下思路你可以用另一種方法達到相同的目的。

你可以制作一個原生的iPhone應用程序去模仿其他的程序,多半上它也許會成為一個不錯的復制品。

但是你完全可以利用已有的技能(HTML5,CSS,Javascript)去完成上面的事.

下面我會向你們展示如何創建一個具有離線功能的HTML5 iPhone應用程序。更進一步的話,我會向你們展示編寫一個俄羅斯方塊游戲的過程。

離線

到底什么是離線?好吧,它其實意味著當我們的手機沒有互聯網連接時,能夠有一個像本地應用程序樣子的程序圖標,啟動畫面。

這意味這我們的應用程序能夠像原生應用程序那樣在手機離線時使用。

其實這不僅是一篇針對iPhone開發的教程,它同樣適用于所有帶有HTML5功能支持瀏覽器的手機。

OK,下面我們開始吧。看看下面的圖片。沒有地址欄,沒有導航條,它就像是一個原生的應用程序。

27 02 final result html5 iphone thumb 【譯文】如何制作一個HTML5的iPhone應用程序

準備工作

如果我們要想使用HTML5的離線功能的話,你需要有能夠操作服務器端,因為我們需要更改文件的HTTP的頭信息。(下面我們會詳細講解)

我們使用Apache做為服務器,為了完成任務,我們需要配置.htaccess文件。這里是個教程使用.htaccess改變HTTP頭信息。

其他我們需要做的就是在iPhone設置中打開Safari瀏覽器的調試模式。在你的iPhone中進入Settings.app > Safari > Developer,然后打開調試模式,這樣做的目的是幫助你尋找可能出現的JavaScript錯誤。

一旦你完成你的App,您應該關閉調試模式以便于你正確的測試你的應用程序。

27 03 debug console iphone thumb 【譯文】如何制作一個HTML5的iPhone應用程序

關于你的App

圖標和啟動畫面

圖標的大小57px x 57px。

無論你使用什么樣的圖標,iPhone會自動對它進行圓角處理,創建投影,并增加光澤。

圖標最好使用PNG或JPG格式。

下面是我使用的俄羅斯方塊游戲圖標。

27 04 iphone icon thumb 【譯文】如何制作一個HTML5的iPhone應用程序

啟動畫面大小最好是320px x 460px,且格式為PNG或JPG。

下面是我使用的啟動畫面。

27 05 opening screen thumb 【譯文】如何制作一個HTML5的iPhone應用程序

一些小提示

謹記,簡單就是美(Stay small, sparse and simple.)

  • Small:雖然可以使用緩存以保存一部分文件,但是保持輕量級也是一個明智的行為。
  • Sparse:盡可能的減少處理的文件。
  • Simple:不要盲目擴大范圍,從小的方面著手,會使你事半功倍。

應用程序緩存

這是一個新的標準,詳細信息請看這里。

應用程序緩存允許我們提前告知瀏覽器我們的應用程序使用了那些文件。瀏覽器將會把這些文件緩存下來(有時也會失敗)。這個文件的語法格式很簡單,僅僅就是在manifest文件中列舉了文件的相對(例如 /picture.png)或絕對地址(例如 http ://yourwebserver.com/picture.png),瀏覽器會在離線時保留這些文件。

你也可以列舉一些文件地址代表你不想緩存的,但是這跟我們的離線應用程序沒有什么關系(如果你有興趣的話,看這個文檔)。

還有一件重要的事是manifest(就是你需要緩存的文件列表)的filetype頭信息必須被設置成text/manifest。這就是我們為什么需要有一個web服務器以使我們能夠設置HTTP頭信息。

屏幕尺寸

當設計你的應用程序時,你需要注意:當你出入App模式時,你的屏幕可利用面積是320px x 46px。當你處于網頁模式時你的屏幕可利用面積是320px x 356px。這會影響你的程序的用戶界面。

下面就是處于兩種模式下的不同點

27 06 in iphone ui sidecomp thumb 【譯文】如何制作一個HTML5的iPhone應用程序

HTML

你的App其實就是一個網頁,因此跟在瀏覽器中展示的沒什么不同。iPhone的瀏覽器對HTML5的支持程度也是排在前列的,如果你想深入了解的話,請移步Safari開發者中心:

  • Safari HTML Reference
  • Safari CSS Reference

開始編寫代碼

應用程序以一些標記開始,下面的就是我的俄羅斯方塊游戲的標記。

<!DOCTYPE html> <html manifest=”tetris.manifest”> <head> <metaname=”viewport” content=”user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0″/> <meta name=”apple-mobile-web-app-capable”content=”yes” /> <meta name=”apple-mobile-web-app-status-bar-style”content=”black” /> <link rel=”apple-touch-icon”href=”iphon_tetris_icon.png”/> <link rel=”apple-touch-startup-image”href=”startup.png” /> <link rel=”stylesheet” href=”tetris.css”type=”text/css” media=”screen, mobile” title=”main” charset=”utf-8″><title>offline Tetris</title> </head> <body> <!– Put your Markup Here –><script type=”text/javascript” src=”tetris.js”></script> </body> </html>

首先注意Doctype。哦也以后在也不用寫那么長的Doctype了。

在HTML標簽里manifest=”cache.manifest”屬性是告訴瀏覽器我們需要緩存那些文件。

這些是在HTML5頁面中Apple的專屬標記,這里是他們的一些簡要說明:

  • apple-mobile-web-app-capable: 這是又一個地方告訴瀏覽器,它一個離線應用程序
  • apple-mobile-web-app-status-bar-style:當處于離線時隱藏狀態欄和導航欄。
  • apple-touch-icon:告訴瀏覽器程序圖標的地址。
  • apple-touch-startup-image: 告訴瀏覽器啟動畫面的地址。

還有一點請注意,最好把CSS文件放在上面,JavaScript文件放在下面。

CSS

它跟個普通網頁沒什么兩樣,但是你可以利用一些特殊的CSS -webkit特性做一些很炫很酷的事情,像動畫等。下面是一個很簡單的指導,這已經超出了本文的知識范疇。

簡單的CSS代碼

body { overflow:hidden; background: #d7d7d7; margin:0; padding:0; } #tetris { width: 320px; height: 460px; background:#000; }

主要是設置div元素在網頁中適配iPhone的視圖。

JavaScript

我使用的是Dalton Ridenhour修改版本的JS庫,是我在Github上找到的,這個JS庫適用與大多數的瀏覽器。我唯一做的修改就是讓它在沒有鍵盤時也可以使用。

一般情況下,JavaScript能在iPhone上很好的工作,但是也有例外。想想一下mouseover這個事件,它是存在與iPhone瀏覽器上的,但是如果沒有一個標準的指示設備,我很好奇它怎么使用。Quirksmode寫了一篇很不錯的文章講解了iPhone瀏覽器上的事件。

如果上面的事情你已經完成了,你就可以測試你的程序了,只要在iPhone上打開index.html,你就能看到一個最基本的程序已經完成了。

下一步就是把你的程序放到服務器上,然后正確的設置好cache.manifest文件,并放置到你的程序根目錄里。好了,看看你的緩存文件工作了沒有。

這是我寫的一個完成版,你可以在這里查看

  • http://tetris.alexkessinger.net

補充說明:離線數據

其實除了可以保存離線文件之外,我們也可以保存離線數據。我們主要使用兩個API:第一個是localStorage。localStorage是一個很易于使用的鍵/值對應的存儲形式,我們可以使用這個API像這樣:

localStorage.dataToStore = 5; console.log(localStorage.dataToStore); // 5

我們可以利用上面的方式保存用戶數據。

第二種方式是離線web SQL數據庫(點擊鏈接查看W3C官網的說明)。這個API使用起來有點復雜。下面是一些代碼片段。

// Try and get a database object var db; try { if (window.openDatabase) { db = openDatabase(“NoteTest”, “1.0″, “HTML5 Database API example”, 200000); if (!db) alert(“Failed to open the database on disk. This is probably because the version was / bad or there is not enough space left in this domain’s quota”); } else alert(“Couldn’t open the database. Please try with a WebKit nightly with this feature enabled”); } catch(err) { } // Check and see if you need to initalize the DB db.transaction(function(tx) { tx.executeSql(“SELECT COUNT(*) FROM WebkitStickyNotes”, [], function(result) { loadNotes(); }, function(tx, error) { tx.executeSql(“CREATE TABLE WebKitStickyNotes (id REAL UNIQUE, note TEXT, timestamp / REAL, left TEXT, top TEXT, zindex REAL)”, [], function(result) { loadNotes(); }); }); }); // Insert a test Note. var note = { id: “1″, text:” This is a test note”, timestamp: “112123000″, left:10, top:10, zIndex:2 }; db.transaction(function (tx) { tx.executeSql(“INSERT INTO WebKitStickyNotes (id, note, timestamp, left, top, zindex) VALUES / (?, ?, ?, ?, ?, ?)”, [note.id, note.text, note.timestamp, note.left, note.top, note.zIndex]); }); // Get all the notes out of the database.db.transaction(function(tx) { tx.executeSql(“SELECT id, note, timestamp, left, top, zindex / FROM WebKitStickyNotes”, [], function(tx, result) {for (var i = 0; i < result.rows.length; ++i) { var row = result.rows.item(i); var note = new Note(); note.id = row['id']; note.text = row['note']; note.timestamp = row['timestamp']; note.left = row['left']; note.top = row['top']; note.zIndex = row['zindex']; if (row['id'] > highestId) highestId = row['id']; if (row['zindex'] > highestZ) highestZ = row['zindex']; } if (!result.rows.length) newNote(); }, function(tx, error) { alert(‘Failed to retrieve notes from database – ‘ + error.message);return; }); });

總結

通過離線Web App,我們可以做很多東西。做游戲也是可以的,就像我做的俄羅斯方塊,但是你最好想清楚哪些東西適合做成離線應用。像Quake 3競技場估計做不出來,做一個待辦事項的App肯定是綽綽有余。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了有關HTML5頁面在iPhoneX適配問題,需要的朋友可以參考下
本篇文章主要介紹了html5中canvas圖表實現柱狀圖的示例,本文使用canvas來實現一個圖表,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
Adobe公司出品的多媒體處理軟件產品線較多,涵蓋了音視頻編輯、圖像處理、平面設計、影視后期等領域。這篇文章主要介紹了Adobe Html5 Extension開發初體驗圖文教程,非常不錯,需要的朋
這篇文章主要介紹了基于HTML5的WebGL經典3D虛擬機房漫游動畫,需要的朋友可以參考下
這篇文章主要介紹了手機端用rem+scss做適配的詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
本篇文章主要介紹了canvas 實現 github404動態效果的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
主站蜘蛛池模板: 立式壁挂广告机厂家-红外电容触摸一体机价格-华邦瀛 | 广州监控安装公司_远程监控_安防弱电工程_无线wifi覆盖_泉威安防科技 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) | 自清洗过滤器,浅层砂过滤器,叠片过滤器厂家-新乡市宇清净化 | 济宁工业提升门|济宁电动防火门|济宁快速堆积门-济宁市统一电动门有限公司 | 通辽信息港 - 免费发布房产、招聘、求职、二手、商铺等信息 www.tlxxg.net | 干洗加盟网-洗衣店品牌排行-干洗设备价格-干洗连锁加盟指南 | 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 亚克力制品定制,上海嘉定有机玻璃加工制作生产厂家—官网 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 智能化的检漏仪_气密性测试仪_流量测试仪_流阻阻力测试仪_呼吸管快速检漏仪_连接器防水测试仪_车载镜头测试仪_奥图自动化科技 | 山东臭氧发生器,臭氧发生器厂家-山东瑞华环保设备 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 黑龙江「京科脑康」医院-哈尔滨失眠医院_哈尔滨治疗抑郁症医院_哈尔滨精神心理医院 | 底部填充胶_电子封装胶_芯片封装胶_芯片底部填充胶厂家-东莞汉思新材料 | 快速门厂家-快速卷帘门-工业快速门-硬质快速门-西朗门业 | 合肥活动房_安徽活动板房_集成打包箱房厂家-安徽玉强钢结构集成房屋有限公司 | 深圳市索富通实业有限公司-可燃气体报警器 | 可燃气体探测器 | 气体检测仪 | 广州展览制作|展台制作工厂|展览设计制作|展览展示制作|搭建制作公司 | 山东led显示屏,山东led全彩显示屏,山东LED小间距屏,临沂全彩电子屏-山东亚泰视讯传媒有限公司 | 新车测评网_网罗汽车评测资讯_汽车评测门户报道 | 北京印刷厂_北京印刷_北京印刷公司_北京印刷厂家_北京东爵盛世印刷有限公司 | 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 拖链电缆_柔性电缆_伺服电缆_坦克链电缆-深圳市顺电工业电缆有限公司 | 座椅式升降机_无障碍升降平台_残疾人升降平台-南京明顺机械设备有限公司 | 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 高温链条油|高温润滑脂|轴承润滑脂|机器人保养用油|干膜润滑剂-东莞卓越化学 | 电抗器-能曼电气-电抗器专业制造商| 土壤肥料养分速测仪_测土配方施肥仪_土壤养分检测仪-杭州鸣辉科技有限公司 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 英思科GTD-3000EX(美国英思科气体检测仪MX4MX6)百科-北京嘉华众信科技有限公司 | 航空连接器,航空插头,航空插座,航空接插件,航插_深圳鸿万科 | 高考志愿规划师_高考规划师_高考培训师_高报师_升学规划师_高考志愿规划师培训认证机构「向阳生涯」 | 微水泥_硅藻泥_艺术涂料_艺术漆_艺术漆加盟-青岛泥之韵环保壁材 武汉EPS线条_EPS装饰线条_EPS构件_湖北博欧EPS线条厂家 | 礼堂椅厂家|佛山市艺典家具有限公司| 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | 温控器生产厂家-提供温度开关/热保护器定制与批发-惠州市华恺威电子科技有限公司 | 欧景装饰设计工程有限公司-无锡欧景装饰官网 | vr安全体验馆|交通安全|工地安全|禁毒|消防|安全教育体验馆|安全体验教室-贝森德(深圳)科技 | 高低温万能试验机_拉力试验机_拉伸试验机-馥勒仪器科技(上海)有限公司 |