張帥桐
摘要:隨著智能手機(jī)的普及,移動(dòng)APP在公司的推廣營(yíng)銷(xiāo)以及吸納用戶(hù)方面有著重要作用,故而開(kāi)發(fā)APP的需求十分巨大。該文將基于LAMP架構(gòu),探討構(gòu)建一個(gè)簡(jiǎn)易iOS APP的開(kāi)發(fā)方法。
關(guān)鍵詞:iOS;APP;開(kāi)發(fā);LAMP
中圖分類(lèi)號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)05-0075-02
1 LAMP架構(gòu)
1.1 Linux操作系統(tǒng)
優(yōu)秀的開(kāi)源操作系統(tǒng),向全世界開(kāi)放,由全世界優(yōu)秀的程序員維護(hù)開(kāi)發(fā),完全免費(fèi),可自由使用,安全可靠且性能出色,Linux是理想的服務(wù)器端操作系統(tǒng)。
1.2 Apache HTTP服務(wù)器軟件
世界上最流行的網(wǎng)頁(yè)服務(wù)器之一,開(kāi)源且對(duì)Linux完美支持,跨平臺(tái)且穩(wěn)定、通過(guò)插件拓展可支持PHP語(yǔ)言編寫(xiě)的動(dòng)態(tài)網(wǎng)頁(yè) 。
1.3 MySQL數(shù)據(jù)庫(kù)管理系統(tǒng)
非常適合小規(guī)模數(shù)據(jù)的處理,較低數(shù)量級(jí)增刪改查的效率很高,開(kāi)源免費(fèi)適合個(gè)人和小規(guī)模團(tuán)隊(duì)進(jìn)行開(kāi)發(fā)。
1.4 PHP 網(wǎng)頁(yè)服務(wù)器腳本語(yǔ)言
開(kāi)源易學(xué), 開(kāi)發(fā)框架和說(shuō)明文檔充足,可編寫(xiě)動(dòng)態(tài)網(wǎng)頁(yè),可非常方便地連接服務(wù)器端的MySQL數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。服務(wù)器上的PHP程序可便捷地獲取數(shù)據(jù)庫(kù)數(shù)據(jù)并生成JSON格式的數(shù)據(jù)返回給前端,適合作為前端向后端獲取數(shù)據(jù)的API。
2 配置開(kāi)發(fā)所需要的軟件
2.1 Xcode
優(yōu)秀的集成開(kāi)發(fā)工具,可使用C、C++、Objective-C及Swift語(yǔ)言進(jìn)行軟件開(kāi)發(fā),是編寫(xiě)iOS APP的不二選擇。Xcode可從App Store免費(fèi)方便地下載。
2.2 MAMP
是Mac上非常經(jīng)典、一鍵集成配置本地服務(wù)器的優(yōu)秀軟件。MAMP個(gè)人版是免費(fèi)的,便于程序員現(xiàn)在本地配置網(wǎng)頁(yè)服務(wù)器和MySQL數(shù)據(jù)庫(kù)環(huán)境。程序員可先在本地進(jìn)行測(cè)試代碼無(wú)誤后再通過(guò)SSH和SFTP等服務(wù)向遠(yuǎn)程服務(wù)器配置。
2.3 Navicat for MySQL
是一款為MySQL量身打造的前端控制軟件,可通過(guò)可視化的點(diǎn)按操作以及SQL語(yǔ)句操作本地服務(wù)器或遠(yuǎn)程服務(wù)器上的數(shù)據(jù)庫(kù)。
2.4 Visual Studio Code
微軟良心制作的編輯開(kāi)發(fā)工具,支持多種語(yǔ)言的高亮顯示和智能提示,可方便的開(kāi)發(fā)PHP程序。
3 主要開(kāi)發(fā)流程
3.1 配置本地Apache、MySQL、PHP環(huán)境
運(yùn)行MAMP個(gè)人版,Start Servers即可一鍵配置所需環(huán)境。
3.2 數(shù)據(jù)庫(kù)設(shè)計(jì)與開(kāi)發(fā)
此階段需要根據(jù)開(kāi)發(fā)項(xiàng)目進(jìn)行需求分析,然后從需求中抽象出所需實(shí)體以及關(guān)系構(gòu)建E-R圖,然后根據(jù)E-R圖設(shè)計(jì)數(shù)據(jù)庫(kù)中實(shí)際存儲(chǔ)的一系列表格和關(guān)系,最后根據(jù)數(shù)據(jù)庫(kù)三大范式驗(yàn)證設(shè)計(jì)結(jié)果有無(wú)錯(cuò)誤和冗余,修改無(wú)誤后使用Navicat for MySQL在本地服務(wù)器中的MySQL數(shù)據(jù)庫(kù)創(chuàng)建相關(guān)表格和關(guān)系。
3.3 iOS APP前端開(kāi)發(fā)
此階段需要在Xcode中創(chuàng)建工程實(shí)現(xiàn)基礎(chǔ)UI和主要業(yè)務(wù)邏輯。在Xcode工程中,使用storyboard拖拽UI控件和ViewController,再使用AutoLayout給控件添加約束達(dá)到頁(yè)面控件的合理布局或?qū)崿F(xiàn)某些動(dòng)畫(huà)。之后,根據(jù)storyboard中的每個(gè)ViewController,創(chuàng)建一系列繼承于UIViewController使用Swift語(yǔ)言的Cocoa Touch Class,然后將創(chuàng)建的Class與storyboard中的ViewController的Custom Class的Class相對(duì)應(yīng)。之后點(diǎn)擊Xcode中的Show the Assistant editor同時(shí)顯示storyboard中的ViewController與對(duì)應(yīng)的Cocoa Touch Class,通過(guò)按住control鍵鼠標(biāo)左鍵單擊拖拽storyboard中的UI控件到Class文件中可創(chuàng)建UI控件變量或觸發(fā)事件函數(shù)。最后,使用Swift語(yǔ)言結(jié)合iOS APP的生命周期實(shí)現(xiàn)每個(gè)頁(yè)面的業(yè)務(wù)邏輯。
3.4 編寫(xiě)數(shù)據(jù)庫(kù)接口
APP前端需要從后端的數(shù)據(jù)庫(kù)獲取數(shù)據(jù),但因?yàn)榘踩仍?,Swift語(yǔ)言只能直接操作SQLite這種小型本地?cái)?shù)據(jù)庫(kù),無(wú)法直接連接服務(wù)器上的數(shù)據(jù)庫(kù),操作遠(yuǎn)程數(shù)據(jù)。故而需要利用PHP語(yǔ)言編寫(xiě)數(shù)據(jù)庫(kù)接口,后端把MySQL數(shù)據(jù)庫(kù)中的數(shù)據(jù)以JSON格式返回給APP。
下面給出一個(gè)簡(jiǎn)易實(shí)例。
3.5 配置遠(yuǎn)程服務(wù)器及軟件測(cè)試
通過(guò)Mac上的Terminal(終端),新建遠(yuǎn)程連接,如安全Shell(ssh)服務(wù)即可把PHP程序配置到遠(yuǎn)程Linux服務(wù)器端,用Navicat for MySQL將本地服務(wù)器中的SQL文件導(dǎo)出,再導(dǎo)入到服務(wù)器上的MySQL數(shù)據(jù)庫(kù),改寫(xiě)APP和PHP接口中的網(wǎng)絡(luò)請(qǐng)求地址,測(cè)試運(yùn)行。
4 不足與改進(jìn)
本文所述是一種基于LAMP的簡(jiǎn)易iOS APP開(kāi)發(fā)方法,從實(shí)現(xiàn)手段不夠安全,數(shù)據(jù)沒(méi)有安全加密,對(duì)于正式項(xiàng)目應(yīng)該使用用戶(hù)token和安全加密算法。對(duì)于小型項(xiàng)目也可不必租用遠(yuǎn)程服務(wù)器,通過(guò)學(xué)習(xí)LeanCloud、Bomb后端云等云服務(wù)公司提供的開(kāi)發(fā)文檔可利用云服務(wù)器進(jìn)行替代遠(yuǎn)程服務(wù)器,簡(jiǎn)化了一系列的后端操作。不過(guò),使用云服務(wù)器也會(huì)造成對(duì)于云服務(wù)平臺(tái)的依賴(lài),一旦平臺(tái)發(fā)生問(wèn)題,會(huì)帶來(lái)數(shù)據(jù)泄露和大規(guī)模數(shù)據(jù)遷移等問(wèn)題。
5 結(jié)束語(yǔ)
隨著科技的發(fā)展開(kāi)發(fā)APP肯定會(huì)越來(lái)越簡(jiǎn)單,不過(guò)其核心思路萬(wàn)變不離其宗,每種方式都不是絕對(duì)的優(yōu)秀,一種方式的優(yōu)點(diǎn)有時(shí)候卻在另一種方式中被視為缺點(diǎn)。所以開(kāi)發(fā)者應(yīng)在開(kāi)發(fā)中根據(jù)實(shí)際情況,具體情況具體分析,權(quán)衡利弊得出最好的開(kāi)發(fā)方案。
參考文獻(xiàn):
[1] 袁明磊,張迪.基于后端服務(wù)的英語(yǔ)閱讀APP設(shè)計(jì)與實(shí)現(xiàn)[J].寶雞文理學(xué)院學(xué)報(bào):自然科學(xué)版,2016(1):63-67.
[2] 宋陽(yáng).基于 LAMP 技術(shù)平臺(tái)搭建的 Web 安全服務(wù)器架構(gòu)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2016(10):36-37.
[3] 陳云芳,潘利華,陳瑞,等.基于PHP語(yǔ)言訪(fǎng)問(wèn)MySQL數(shù)據(jù)庫(kù)的實(shí)現(xiàn)[J].中國(guó)新通信,2015(19):103.
[4] 廖國(guó)棟,肖玉容.基于LAMP的云管理平臺(tái)研究及探討[J].江蘇科技信息,2014(14):22-24.