版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 目錄</b></p><p><b> 1.引言1</b></p><p> 1.1 平臺的背景1</p><p> 2 相關技術介紹1</p><p> 2.1 MVC模型1</p><p> 2.2 Phalcon框架的P
2、HP技術1</p><p> 2.3 Cordova移動開發(fā)客戶端框架2</p><p> 3 平臺技術方案2</p><p> 4 快速創(chuàng)建App平臺3</p><p><b> 4.1平臺描述3</b></p><p> 4.2賬戶權限模塊3</p><
3、;p> 4.3 App模塊4</p><p> 4.4登錄與注冊模塊4</p><p><b> 4.5賬戶模塊4</b></p><p><b> 4.6管理模塊4</b></p><p> 4.7訂閱模塊模塊4</p><p> 4.8問題反饋
4、模塊5</p><p> 5快速創(chuàng)建App平臺數據庫設計5</p><p> 5.1 快速創(chuàng)建App平臺數據庫表設計5</p><p> 5.2快速創(chuàng)建App平臺數據庫E-R圖7</p><p> 5.3快速創(chuàng)建App平臺UI圖7</p><p> 6.平臺功能模塊的實現13</p>
5、<p> 6.1數據庫訪問的實現13</p><p> 6.2登錄模塊的實現13</p><p> 6.2.1賬戶登錄13</p><p> 6.2.2管理員登錄14</p><p> 6.3 App更新后臺模塊15</p><p> 6.3.1新增第三方QQ登錄模塊17</p
6、><p> 6.3.2實現填寫App類型模塊17</p><p> 6.3.4實現選擇App功能頁模塊18</p><p> 6.3.5實現選擇App樣式和顏色模塊18</p><p> 6.3.6實現填寫App基本信息模塊18</p><p> 6.3.7實現App預覽模塊19</p>
7、<p> 6.3.8實現App管理模塊19</p><p> 7 移動應用開發(fā)服務關鍵技術21</p><p><b> 8 總結21</b></p><p> 快速創(chuàng)建App平臺的研發(fā)與設計</p><p> 嶺南師范學院數學與計算科學學院,湛江 524048</p><p
8、> 摘 要:本文研究快速創(chuàng)建App平臺的主要目的是能夠幫助完全不懂語言編程的人,能在數分鐘的時間內創(chuàng)建一個屬于自己的App.平臺設計分為前臺App創(chuàng)建模塊、后臺數據庫設計與管理模塊、中間網頁服務器三個模塊,使用了AngularJS、Phalcon、Cordova等框架.采用JS,PHP ,mongoDB等技術結合,實現App開發(fā)、賬戶管理、內容管理系統(tǒng)、分析數據等模塊的具體研發(fā)過程.</p><p>
9、 關鍵詞:App;Cordova;混合APP;WebApp;客戶定制App </p><p> Research and design of the rapid creation of App platform</p><p> Author:Liu SiyuanTeacher: Gui Xiancai</p><p> Lingnan Normal
10、 University of mathematics and computer science, zhanjiang 524048</p><p> Abstract: This article is an application platform that is designed to help people that don’t understand programming language, to be
11、able to construct and create their own Application within a few minutes of time. This article’s content will be based upon the three modules, which is the front-desk(reception) App builder module, the Background database
12、 design and management module, and lastly the web-server module. The platform will be Based on AngularJS, Phalcon, Cordova framework. Use technology</p><p> Keywords: APP ;Cordova;Hybrid App; WebApp; Custom
13、ization</p><p><b> 1.引言</b></p><p> 1.1 平臺的背景</p><p> 移動互聯網市場的發(fā)展態(tài)勢,巨大的商機令人垂涎,各領域企業(yè)紛紛開發(fā)了專屬的APP,但很多非IT軟件類企業(yè)開發(fā)經營自己的APP,卻面臨軟件開發(fā)、商業(yè)模式和市場推廣三座大山.快速創(chuàng)建App平臺是一款非編程App制作的平臺服務.快
14、速創(chuàng)建App平臺可以幫助企業(yè)、個人免費DIY制作屬于自己的手機APP應用.無需具備編程能力、不用自己架設服務器,只需要花幾分鐘的時間,就可以制作運營自己的App.</p><p> 對于開發(fā)者來說,HTML5技術跨平臺,適配多終端.傳統(tǒng)移動終端上的Native App,開發(fā)者的研發(fā)工作必須針對不同的操作系統(tǒng)進行,成本相對較高.Native App對于賬戶還存在著管理成本、存儲成本以及性能消耗成本.HTML/Ja
15、vaScript/CSS語言所開發(fā)的應用只要一次開發(fā)就能進入所有瀏覽器進行分發(fā).即使是走傳統(tǒng)的App Store應用商店渠道,只需要再將底層用HTML5開發(fā)的應用“封裝”為App,從時間和資金成本上講遠小于跨系統(tǒng)移植.</p><p><b> 2 相關技術介紹</b></p><p><b> 2.1 MVC模型</b></p>
16、<p> MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(Controller)的縮寫,一種軟件設計典范,用一種業(yè)務邏輯、數據、界面顯示分離的方法組織代碼,將業(yè)務邏輯聚集到一個部件里面,在改進和個性化定制界面及賬戶交互的同時,不需要重新編寫業(yè)務邏輯.MVC被獨特的發(fā)展起來用于映射傳統(tǒng)的輸入、處理和輸出功能在一個邏輯的圖形化賬戶界面的結構中. </p>
17、<p> 2.2 Phalcon框架的PHP技術</p><p> Phalcon是一套實現MVC架構的高性能PHP應用程序框架.初始版本發(fā)布于2012年11月,開放源代碼并基于BSD授權條款.與其他大部分的PHP框架不同,Phalcon使用C語言編寫,因此Phalcon的執(zhí)行速度高過其他PHP框架,并且消耗更少的資源,根據官方的測試,Phalcon是目前世界上速度最快的PHP框架之一.是一個開源的
18、,全堆棧的,用C語言寫成的php5框架,專為高性能設計.你不需要學習和使用C語言的功能,因為這是一個PHP框架,只不過用C寫成而已.同時Phalcon是松耦合的,您可以根據需要使用其他組件[1].</p><p> 2.3 Cordova移動開發(fā)客戶端框架</p><p> Apache Cordova是一套設備API,允許移動應用的開發(fā)者使用JavaScript來訪問本地設備的功能,
19、比如攝像頭、加速計.它可以與UI框架(如 jQuery Mobile或Dojo Mobile或Sencha Touch)等相結合使用,這些UI框架可以使用HTML、CSS和JavaScript開發(fā)智能手機應用.</p><p> 在使用Cordova API時,應用程序的構建可以無需本地代碼(如Java或對象C等),使用的是Web技術.</p><p> 由于這些JavaScript.
20、 API在多個設備平臺上是一致的,而且是基于Web標準創(chuàng)建的,因此應用程序的移植很方便,基本不做什么改變.</p><p> 使用Cordova的應用使用平臺SDK打包成應用程序,可以從每種設備的應用程序商店下載安裝.</p><p> Cordova提供了一套統(tǒng)一的JavaScript庫供調用,它支持iOS、Android、Blackberry、Windows Phone、Palm
21、WebOS、Bada和Symbian[2].</p><p><b> 3 平臺技術方案</b></p><p> 由于Phalcon是基于C的MVC模式的Web開發(fā)框架,利用這一框架可以建立動態(tài)的、高性能的、安全的、跨平臺的動態(tài)網站.為了使系統(tǒng)將來的維護、升級等工作方便、簡單,我們采用MVC開發(fā)模式,以PHP為開發(fā)平臺,在本系統(tǒng)中我們細分為四層即網絡服務層,視圖
22、層、數據層、控制邏輯層,使用AngularJS來實現是圖層層 View 的功能;用NodeJS來實現接口的定義[3];用于控制邏輯層來具體實現的業(yè)務.具體實現就是AngularJS提交信息到Controller進行判斷,然后調用Controller中的的具體Action方法實現具體業(yè)務,這當中可能涉及到對數據庫的操作,即調用數據層里面的具體方法.最后返回一個信息給 Controller ,由 Controller 把信息封裝到一個 Js
23、on格式的數據中,再由Controller返回數據到網絡服務層,來實現各種需求.使用MVC模式,我們在修改頁面的時候,因為里面不包含有邏輯代碼,所以不會影響到系統(tǒng)的邏輯工作,只需要UI就能完成工作;在邏輯層部分,只需要專注于代碼的開發(fā),而不需要關心數據庫數據的實現,因為數據庫數據調用只需要通過接口實現即可,數</p><p> ?。?)用uxpin來實現靜態(tài)代碼的設計和AngularJS邏輯代碼的實現[4].&l
24、t;/p><p> ?。?)用PHP來實現動態(tài)代碼的設計,如進行的行為和動作.</p><p> ?。?)用NodeJS調用模型和邏輯的API對接,完成業(yè)務操作后,把得到的結果存到Json中,然后把封裝結果的Json作為返回的請求.</p><p> ?。?)用NodeJS作為數據庫的調用接口,PHP代碼可以通過該NodeJS通過調用API來實現對數據庫的調用[5].&
25、lt;/p><p> ?。?)對數據庫的設計,首先設計數據表,然后用MongoDB建立數據表.</p><p> 4 快速創(chuàng)建App平臺</p><p><b> 4.1平臺描述</b></p><p> 移動應用開發(fā)平臺是專門用于實現賬戶自我DIY自己需要的APP,進行商業(yè)或者個人興趣的平臺.</p>
26、<p> 移動應用開發(fā)平臺通常以下的7個模塊,不同模塊分別實現不同的功能.</p><p> (1)賬戶模塊,賬戶模塊主要實現賬戶功能,其中對賬戶資料的收集最為重要.</p><p> (2)App模塊,App模塊是最核心的模塊,其中實現對App的生成,App上架到AppStore,App資料的管理.</p><p> (3)問題反饋模塊,是對于平
27、臺運作后期最為重要的一部分,它能反饋許許多多的問題,然后我們分析問題對平臺進行修改和完善.</p><p> (4)賬戶管理模塊,它是管理賬戶的資料,與賬戶模塊緊緊相連.</p><p> (5)代理模塊,是平臺后期很重要的營銷模式.</p><p> (6)訂閱模塊,他實現了App平臺服務于賬戶之間的聯系,實現賬戶在平臺購買App的關鍵.</p>
28、<p> (7)登陸注冊模塊,他實現了賬戶與平臺的關聯,實現App與平臺的溝通.</p><p><b> 4.2賬戶權限模塊</b></p><p> ?。?)賬戶管理:賬戶進入到賬戶管理頁面后,可以實現對自己資料的增刪改查,并且根據賬戶權限可以查詢到自己賬戶的資料,進入賬戶管理頁面.</p><p> ?。?)賬戶權限管理
29、:由于平臺管理有多種多樣的功能,并非所有客戶都愿意將root所有權賦予給所有的人,所以這里root賬戶可以實現RBAC(基于角色控制)進而實現不同的賬戶擁有不同的權限用于管理自己的App或者平臺.</p><p><b> 4.3 App模塊</b></p><p> ?。?)App Builder(App創(chuàng)建模塊):當客戶進入到創(chuàng)建App時,可以選擇不同模板和不同
30、的內容來填充客戶的App,這里就是App Builder,它能實現你App的DIY,樣式的選擇,模板的選擇,功能的選擇,內容的選擇,是最重要的用戶體驗部分.</p><p> ?。?)App Manage(App管理):當客戶創(chuàng)建成功App后,他會進入到App管理頁面,你能在App管理頁面對你的App進行增刪改查,不同的樣式,不同的內容,不同的功能都能在這里修改,同時可以生成你的App下載體驗.</p>
31、;<p> ?。?)App ToStore(App上架): 在這里你能選擇你的App生成的平臺類型,安卓,IOS,Win8進行上架,可以選擇上架到百度,谷歌.</p><p> 4.4登錄與注冊模塊</p><p> 登錄與注冊模塊主要分為賬戶登錄注冊與管理登錄注冊,這里有一套RBAC(基于角色控制)進行權限的分配.根據你賬戶角色的不同擁有不同的增刪改查權利.如果你是一名
32、普通用戶,你僅僅可以對你賬戶資料的進行增刪改查.同時你是平臺的管理員,你可以查看到不同賬戶的的資料并且進行賬戶的增刪改查.注冊模塊主要實現賬戶的注冊功能.</p><p><b> 4.5賬戶模塊</b></p><p> ?。?)添加賬戶:使用平臺的前提首先你需要有一個賬戶,此時你需要注冊一個賬戶.</p><p> ?。?)修改賬戶:你能
33、在此進行你賬戶信息的修改,比如你公司地址換了,你需要更新你的賬戶信息以供后續(xù)我們提供服務的連通性.</p><p> (3)刪除賬戶:如果賬戶進行了非法勾當,我們平臺可以進行刪除賬戶.</p><p> (4)查詢賬戶:賬戶是基于平臺,所以平臺可以知道賬戶的資料和行為.</p><p><b> 4.6管理模塊</b></p>
34、<p> 代理模塊主要應用于平臺服務的銷售,銷售的重要性不容置疑,一個平臺的收入依賴于銷售.因此平臺提供不同的營銷方式,可以單體購買,團體購買,代理購買,使用代理模式.</p><p><b> 4.7訂閱模塊模塊</b></p><p> ?。?)添加訂閱:添加一個套餐的訂閱.</p><p> (2)修改訂閱:賬戶購買的
35、同時可以修改自己訂閱,進而選擇更喜歡的套餐或者產品.</p><p> ?。?)刪除訂閱:賬戶不需要訂閱的時候可以進行刪除訂閱.</p><p> ?。?)查詢訂閱:平臺提供訂閱的歷史,方便客戶統(tǒng)計訂閱到期時間,和續(xù)費時間.</p><p><b> 4.8問題反饋模塊</b></p><p> ?。?)添加反饋:添加
36、反饋,敘述自己App出現的問題,管理人員可以根據反饋的內容進行維護.</p><p> ?。?)修改反饋:反饋的的問題可能是賬戶本身出現操作問題,如果賬戶自身發(fā)現App問題可以進行修改反饋,使得管理人員和平臺知道問題的來源.</p><p> (3)刪除反饋:當反饋已經解決可以進行刪除反饋.</p><p> ?。?)查詢反饋:可以查看所反饋的內容.</p&
37、gt;<p> 5快速創(chuàng)建App平臺數據庫設計</p><p> 5.1 快速創(chuàng)建App平臺數據庫表設計</p><p><b> ?。?)賬戶管理表</b></p><p> 快速創(chuàng)建App平臺使用的是mongoDB數據庫技術,賬戶是本系統(tǒng)的主要賬戶.因此,數據系統(tǒng)中需要存儲賬戶的基本[6].</p><
38、;p><b> 表1.賬戶管理表</b></p><p> 表2.賬戶信息管理表</p><p> ?。?)App信息表中包括AppId(appId)、App名字(appName)、等內容.</p><p><b> 表3.App表</b></p><p> 5.2快速創(chuàng)建App平臺數
39、據庫E-R圖</p><p> 這里擁有3個表,賬戶表,賬戶表和App表.一個賬戶可以開啟多個賬戶,然后每個賬戶可以創(chuàng)建多個App,所以就有了以下的表關系.</p><p> 圖 1.數據庫ER圖</p><p> 5.3快速創(chuàng)建App平臺UI體驗圖</p><p> 下面的圖片是快速創(chuàng)建App平臺前臺UI體驗圖,圖片介紹了如果進行客
40、戶定制形式的選擇App的各種部件,幾分鐘的選擇后就可以生成一個可供各種平臺安裝的App.</p><p><b> 圖 2.平臺介紹圖</b></p><p><b> 圖 3.賬戶登錄圖</b></p><p><b> 圖 4.引導創(chuàng)建圖</b></p><p>
41、圖 5.選擇App類型圖</p><p> 圖 6.選擇App功能頁面圖</p><p> 圖 7.選擇App主題</p><p> 圖 8.選擇App樣式</p><p> 圖9.填寫App主要信息</p><p><b> 圖 10.預覽圖片</b></p><p
42、> 圖 11.App管理頁面</p><p> 6.平臺功能模塊的實現</p><p> 6.1數據庫訪問的實現</p><p> 數據庫連接是本平臺最為重要的實現部分,因為系統(tǒng)中的全部模塊的實現都依賴于數據庫操作的實現,包括對數據中的數據的查詢、添加、修改、刪除等基本操作.比如App模塊中,賬戶對App信息的查詢、修改、添加等等.</p>
43、<p> 6.2登錄模塊的實現</p><p> 注冊完成后,后臺數據庫系統(tǒng)中就已經存儲了他們的信息.這時,當用戶打開快速創(chuàng)建App平臺的首頁時,就可以通過登錄模塊登錄到快速創(chuàng)建App平臺進行App的創(chuàng)建了.另一方面,管理員如果要對系統(tǒng)進行維護,包括對賬戶信息的查看、添加、修改,對不同模型的查看、添加、修改等等工作,也首先需要登錄系統(tǒng).登錄模塊部分包括管理員登錄模塊和賬戶登錄兩個部分.管理登錄模
44、塊實現了對管理員的權限監(jiān)控功能,并通過檢測賦予管理員不同的權限來實現對平臺的管理.賬戶登錄模塊主要是對賬戶是否合法進行檢測,包括兩個方面內容:一是賬戶身份合法性檢測,該部分是通過驗證賬戶輸入的ID是否正確來檢查進入平臺的合法性;二是檢查進入平臺后操作的合法性,該部分是通過驗證賬戶是否多重登錄來檢測操作的合法性.通過上述兩項檢查后,系統(tǒng)才為賬戶分配資源,否則平臺將自動退出,賬戶如果輸入有誤則提示賬戶重新登錄.下面對賬戶登錄部分的功能實現介
45、紹.</p><p><b> 6.2.1賬戶登錄</b></p><p> 從登錄頁面中輸入賬戶的ID及密碼,平臺便從數據庫中查找是否有該賬戶存在,如果存在該賬戶,再判斷輸入的ID和密碼是否正確.</p><p> (從數據庫中查找比對)代碼:</p><p> //賬戶登錄,Phalcon框架</p&g
46、t;<p> public function dengluAction(){</p><p> $arr = array(0 => 'name',1 => 'pwd',2 => 'appId');</p><p> $ws = array(0 => 'token');</p&g
47、t;<p> $data = $this->base2($this, $arr, $ws);</p><p> if($data){</p><p> $name = $data['name'];</p><p> $appId = $data['appId'];</p><p>
48、 $pwd = $data['pwd'];</p><p> if(strpos($name, '@')){</p><p> $loginType = 'email';</p><p> $rs = 'appUserEmail';</p><p> }else i
49、f(strlen($name)==11 && is_numeric($name)){</p><p> $loginType = 'tel';</p><p> $rs = 'appUserTel';</p><p><b> }else{</b></p><p>
50、 $loginType = 'loginname';</p><p> $rs = 'loginname';</p><p><b> }</b></p><p> $user=AppUser::findFirst(array(array($rs=>$name,'appId'=>
51、$appId)));</p><p> if($user){</p><p> if($user->appUserPwd !== $pwd){</p><p> C('errorFiled', 'pwd is error');</p><p> echoInfo(611);</p>
52、<p><b> return;</b></p><p><b> }</b></p><p> $flag = $this->checkUserStatus($user);</p><p> if(!$flag){</p><p><b> return;<
53、;/b></p><p><b> }</b></p><p> $user->isLogin = true;</p><p> $lastTime = $user->lastLoginTime->sec;</p><p> $user->lastLoginTime = getMon
54、goDate();</p><p> $user->appUserToken = $data['token'];//保存ws端的token</p><p> if(!$user->save()){</p><p> throw new Exception('賬戶數據不能更新', 1000);</p>&
55、lt;p><b> }</b></p><p> $identity = array();</p><p> $identity['userId'] = $user->appUserId;</p><p> $identity['tokenId'] = $user->appUserTok
56、en;</p><p> $identity['lastTime'] = $lastTime;</p><p> C('data', $identity);</p><p> echoInfo(200, "success");</p><p><b> return;<
57、;/b></p><p><b> }else{</b></p><p> echoInfo(609, 'user is not find');</p><p><b> return;</b></p><p><b> }</b></p&g
58、t;<p><b> }</b></p><p><b> }</b></p><p> 6.2.2管理員登錄</p><p> 管理員身份的驗證過程與賬戶登錄時對身份的驗證過程幾乎相同.只是在數據庫中所查詢的集合(表格)或者字段不一致.</p><p> 6.3 App更新
59、后臺模塊</p><p> App 后臺的更新代碼,首先判斷版本是否需要更新,如果版本不一致則進行更新,主要代碼如下:</p><p> Public function GetRecordById($obj)</p><p><b> {</b></p><p> return $this->findbyi
60、d($obj->appId);</p><p><b> }</b></p><p> //更新一條文檔記錄依靠appID</p><p> Public function UpdateRecordById($obj)</p><p><b> {</b></p><
61、;p> if(!($obj==null)){</p><p> $record=$this->findbyid($obj->appId);</p><p> //把PHP對象轉為數組</p><p> $array=get_object_vars($obj);</p><p> //獲取數組的鍵值名,返回一個鍵值名
62、數組</p><p> foreach (array_keys($array) as $keyname)</p><p><b> {</b></p><p> if ($keyname=="appId")</p><p><b> {</b></p>&l
63、t;p> $record->_id=$obj->$keyname;</p><p><b> }</b></p><p><b> else {</b></p><p> $record->$keyname=$obj->$keyname;</p><p><
64、;b> }</b></p><p> $record->save();</p><p><b> }</b></p><p><b> }</b></p><p><b> else {</b></p><p> e
65、cho "刪除記錄失敗";</p><p><b> }</b></p><p><b> }</b></p><p> //刪除一條文檔記錄依靠appID</p><p> Public function deleteRecordById($obj)</p>
66、;<p><b> {</b></p><p> if(!($obj==null)){</p><p> $this->findbyid($obj->appId);</p><p> $this->delete();</p><p><b> }</b>&l
67、t;/p><p><b> else {</b></p><p> echo "刪除記錄失敗";</p><p><b> }</b></p><p><b> }</b></p><p> //創(chuàng)建一條新的文檔記錄依靠acco
68、utID</p><p> Public function createRecordById($obj)</p><p><b> {</b></p><p> if(!($obj==null)){</p><p> $this->accountId=$obj->accountId;</p>
69、;<p> $this->save();</p><p><b> }</b></p><p><b> else {</b></p><p> echo "創(chuàng)建Appid失敗";</p><p><b> }</b></
70、p><p><b> }</b></p><p><b> //存儲選擇的功能</b></p><p> Public function saveFeature($obj) {</p><p> if(!($obj==null)){</p><p> $this->
71、;appFeatureMap=$obj->appFeatureMap;</p><p> $this->appFeatureDir=$obj->appFeatureDir;</p><p> $this->appFeatureCal=$obj->appFeatureCal;</p><p> $this->appFeatur
72、eNote=$obj->appFeatureNote;</p><p> $this->save();</p><p><b> }</b></p><p><b> else {</b></p><p> echo "儲存功能錯誤";</p>
73、<p><b> }</b></p><p><b> }</b></p><p><b> //APP更新函數</b></p><p> Public function isUpdate($obj)</p><p><b> {</b>
74、;</p><p> //根據appID獲取一條需要更新的記錄</p><p> $record=$this->getRecordById($obj);</p><p> //判斷version</p><p> if(!($record->appVersion == $obj->appVersion))</p
75、><p><b> {</b></p><p> echo "version不一樣,you shold rebuld the app,return a AppStore url";</p><p><b> }</b></p><p><b> else{<
76、;/b></p><p> //相同,檢測appUpdateNum是否一樣</p><p> if (!($record->appUpdateNum == $obj->appVersion))</p><p><b> {</b></p><p> tozip("E:/xampp/ht
77、docs/www","E:/xampp/htdocs/www.zip");</p><p> echo "打包成功,";</p><p><b> }</b></p><p> //updatenum相同,不需要更新</p><p><b> else{
78、</b></p><p> echo "不需要更新";</p><p><b> }</b></p><p> 6.3.1新增第三方QQ登錄模塊</p><p> 該子模塊實現登錄功能的第三方登錄.后臺實現一個接口.Post接受參數進行判斷是否第三方QQ登錄</p>
79、<p> //QQ登錄的實現代碼</p><p> public function qqdengluAction(){</p><p> $arr = array(0 => 'openId',1 => 'appId');</p><p> $data = $this->base($this, $ar
80、r);</p><p> if($data){</p><p> $user = QQUser::getUser($data);</p><p> if(is_object($user)){</p><p> $flag = $this->checkUserStatus($user);</p><p>
81、 if(!$flag){</p><p><b> return;</b></p><p><b> }</b></p><p> $identity = array();</p><p> $identity['userId'] = $user->appUserId;
82、</p><p> $identity['tokenId'] = getMd5($user->appUserId."@3an%xing*".$user->lastLoginTime->sec);</p><p> C('data', $identity);</p><p> echoInf
83、o(200, "success");</p><p><b> }else{</b></p><p> echoInfo(614, "user is not exist");</p><p><b> }</b></p><p><b> }
84、</b></p><p><b> }</b></p><p> 6.3.2實現填寫App類型模塊</p><p> 該子模塊實現填寫App類型模塊.</p><p> public function indexAction() {</p><p> $this->lo
85、adPartials();</p><p> if($this->getRequest()->isXmlHttpRequest()) {</p><p> $html = array('html' => $this->getLayout()->getPartial('content_editor')->toHtml()
86、);</p><p> $this->getLayout()->setHtml(Zend_Json::encode($html));</p><p><b> }</b></p><p><b> }</b></p><p> 6.3.4實現選擇App功能頁模塊</p>
87、;<p> 該子模塊實現選擇App功能頁面模塊.</p><p> public function editAction() {</p><p> if($type = $this->getRequest()->getParam('type')) {</p><p> $this->getLayout()-&g
88、t;setBaseRender('content',</p><p> sprintf('application/customization/page/edit/%s.phtml',</p><p> $type), 'admin_view_default');</p><p> $html = array(
89、39;html' => $this->getLayout()->render());</p><p> $this->_sendHtml($html);</p><p><b> }</b></p><p><b> }</b></p><p> 6.3.5實
90、現選擇App樣式和顏色模塊</p><p> 該子模塊實現選擇App樣式和顏色頁面模塊.</p><p> public function colorsAction() {</p><p> $this->loadPartials(null, false);</p><p> $html = array('html
91、9; => $this->getLayout()->render());</p><p> $this->getLayout()->setHtml(Zend_Json::encode($html));</p><p><b> }</b></p><p> 6.3.6實現填寫App基本信息模塊</p&g
92、t;<p> 該子模塊實現填寫App基本信息模塊.</p><p> public function saveAction() {</p><p> if($data = $this->getRequest()->getPost()) {</p><p><b> try {</b></p>&l
93、t;p> if(!empty($data["name"])) {</p><p> if(is_numeric(substr($data["name"], 0, 1))) {</p><p> throw new Exception("Ce champ ne peut pas commencer par un chiffre&q
94、uot;);</p><p> } $this->getApplication()->setName($data['name'])->save();</p><p><b> }</b></p><p> catch(Exception $e) {</p><
95、;p> $html = array(</p><p> 'message' => $e->getMessage()</p><p><b> );</b></p><p> }$this->_sendHtml($html);</p><p><b> }}<
96、;/b></p><p> 6.3.7實現App預覽模塊</p><p> 該子模塊實現App預覽模塊.</p><p> public function modalAction() {</p><p> $layout = $this->getLayout();</p><p> $layout
97、->setBaseRender('modal', 'html/modal.phtml', 'core_view_default')->setTitle($this->_('Preview'))->setSubtitle($this->_('Preview and test your native apps directly on you
98、r mobile.'));</p><p> $layout->addPartial('modal_content', 'admin_view_default', 'application/previewer/modal.phtml');</p><p> $html = array('modal_html'
99、 => $layout->render());</p><p> $this->getResponse()->setBody(Zend_Json::encode($html))->sendResponse();</p><p><b> die;</b></p><p><b> }</b&g
100、t;</p><p> 6.3.8實現App管理模塊</p><p> 該子模塊實現App管理模塊.</p><p> public function listAction() {</p><p> $this->loadPartials();</p><p><b> }</b>
101、</p><p> public function editAction() {</p><p> if($app_id = $this->getRequest()->getParam('app_id')) {</p><p> $application = new Application_Model_Application();&
102、lt;/p><p> $application->find($app_id);</p><p> if(!$application->getId()) {</p><p> $this->getSession()->addError($this->_('This application does not exist')
103、);</p><p> $this->_redirect('application/backoffice/list');</p><p><b> } else {</b></p><p> $this->loadPartials();</p><p> $this->getLa
104、yout()->getPartial('content')->setCurrentApplication($application);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p>
105、<p> public function savepostAction() {</p><p> if($datas = $this->getRequest()->getPost()) {</p><p> $application = new Application_Model_Application();</p><p><
106、b> try {</b></p><p> if(!empty($datas['app_id'])) {</p><p> $application->find($datas['app_id']);</p><p> if(!$application->getId()) {</p>
107、<p> throw new Exception($this->_('An error occurred while saving the application. Please try again later.'));</p><p><b> }</b></p><p><b> }</b></p&
108、gt;<p> if(empty($datas['bundle_id'])) {</p><p> throw new Exception($this->_('The Bundle Id is required'));</p><p><b> }</b></p><p> $appl
109、ication->addData($datas)</p><p><b> ->save()</b></p><p><b> ;</b></p><p> $this->getSession()->addSuccess($this->_('The application has
110、 been successfully saved'));</p><p> $this->_redirect('application/backoffice/list');</p><p><b> }</b></p><p> catch(Exception $e) {</p><p&g
111、t; $this->getSession()->addError($e->getMessage());</p><p> if($application->getId()) {</p><p> $this->_redirect('application/backoffice/edit', array('app_id' =
112、> $application->getId()));</p><p><b> } else {</b></p><p> $this->_redirect('application/backoffice/new');</p><p><b> }</b></p>&
113、lt;p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> public function deleteAction() {</p><p> if($app_id = $this->get
114、Request()->getParam('app_id')) {</p><p><b> try {</b></p><p> $application = new Application_Model_Application();</p><p> $application->find($app_id);&l
115、t;/p><p> if(!$application->getId()) {</p><p> throw new Exception($this->_("This application does not exist"));</p><p><b> }</b></p><p> $
116、application->delete();</p><p> $html = array(</p><p> 'success' => 1,</p><p> 'app_id' => $app_id</p><p><b> /* ); */</b></p
117、><p><b> }</b></p><p> catch(Exception $e) {</p><p> $html = array(</p><p> 'error' => 1,</p><p> 'message' => $e->g
118、etMessage()</p><p><b> );</b></p><p><b> }</b></p><p> $this->_sendHtml($html);</p><p><b> }</b></p><p><b>
119、; }</b></p><p> 7 移動應用開發(fā)服務關鍵技術</p><p> 快速創(chuàng)建App平臺關鍵技術在于Cordova框架的實現.他能實現把一個web網站嵌套到一個App外殼中實現網站和App外殼的結合,成為一個混合型的App.同時后臺框架Phalcon的功能實現數據傳輸,從而成為一個服務平臺.</p><p><b> 8 總
120、結</b></p><p> 快速創(chuàng)建App平臺的關鍵運用了NodeJS(用于構建web server),PHP(phlacon框架的后臺強大的數據處理能力)AngularJS(前端強大的數據綁定能力).由于時間倉促,一些技術和設備所限,該系統(tǒng)存在一些不足之處,有待進一步改進和完善,具體說來有:</p><p> (1) 對后臺數據庫中事務的處理由于mongodb的局限性并
121、無法做的最完美.</p><p> (2) 后臺數據和前臺App外殼更新無法做到拆分更新只能進行全局更新,浪費不必要的流量.</p><p> (3)數據庫集合(表單)功能仍未完善.</p><p> (4)平臺會經過各種的測試進而完善.</p><p><b> 參考文獻</b></p><
122、p> [1] Phalcon論壇.Phalcon3.0文檔[EB/OL].Phalcon官方網站</p><p> http://Phalconphp.com/zh/.</p><p> [2] [英] John M. Wargo.Apache Cordova[M].英:Addison-Wesley Professional,2013.12.</p><p&
123、gt; [3] 樸靈. 深入淺出Node.js [M].北京:人民郵電出版社,2013.12.</p><p> [4] [美] Ari Lerner. AngularJS權威教程[M].北京:人民郵電出版社,2014.8.</p><p> [5] 王非,蔡勇,賀志軍. RESTful Web Services在信息系統(tǒng)中的應用[J]. 計算機系統(tǒng)應用. 2013.02.</
124、p><p> [6] [美]霍多羅夫. MongoDB權威指南[M].北京:人民郵電出版社,2011.5.</p><p><b> 大學畢業(yè)論文規(guī)范</b></p><p><b> 一、結構要求</b></p><p> 一份完整的本科生畢業(yè)論文檔案袋內應包含兩個部分內容:</p>
125、;<p> 1、畢業(yè)論文裝訂冊;2、畢業(yè)論文附件材料。</p><p><b> 二、版面要求</b></p><p> A4紙張,其中:頁邊距上3cm,下、左2.5cm,右2cm;頁腳1.75cm;</p><p> 每冊的封面與封底需用白色的銅版紙張(規(guī)格120g-150g)印制。</p><p&g
126、t; 三、畢業(yè)論文裝訂冊組成部分與要求</p><p> ?。ㄒ唬┓饷?。論文題目不得超過20個字,要簡練、準確,可分為兩行。</p><p><b> ?。ǘ﹥热?。</b></p><p> 1、畢業(yè)論文任務書。任務書由指導教師填寫,經系部審查簽字后生效。</p><p> 2、畢業(yè)論文開題報告;</p&g
127、t;<p> 3、畢業(yè)論文學生申請答辯表與指導教師畢業(yè)論文評審表;</p><p> 4、畢業(yè)論文評閱人評審表;</p><p> 5、畢業(yè)論文答辯表;</p><p> 6、畢業(yè)論文答辯記錄表;</p><p> 7、畢業(yè)論文成績評定總表;</p><p> 8、學位論文原創(chuàng)性聲明及版權使用
128、授權書;</p><p> 9、中英文題目與作者;</p><p> 10、中英文內容摘要和關鍵詞。</p><p> ?。?)摘要是論文內容的簡要陳述,應盡量反映論文的主要信息,內容包括研究目的、方法、成果和結論,不含圖表,不加注釋,具有獨立性和完整性。中文摘要一般為200-400字左右,英文摘要應與中文摘要內容完全相同。</p><p&g
129、t; ?。?)關鍵詞是反映畢業(yè)論文主題內容的名詞,是供檢索使用的。主題詞條應為通用技術詞匯,不得自造關鍵詞。關鍵詞一般為3-5個,按詞條外延層次(學科目錄分類),由高至低順序排列。關鍵詞排在摘要正文部分下方。</p><p><b> 11、目錄;</b></p><p> 目錄按三級標題編寫,要求層次清晰,且要與正文標題一致。主要包括緒論、正文主體、結論、致謝、
130、主要參考文獻及附錄等。</p><p> 12、正文。論文正文部分包括:緒論(或前言、序言)、論文主體及結論。</p><p> ?。?)緒論。綜合評述前人工作,說明論文工作的選題目的和意義,國內外文獻綜述,以及論文所要研究的內容。</p><p> (2)論文主體。論文的主要組成部分,主要包括選題背景、方案論證、過程論述、結果分析、結論或總結等內容。要求層次清
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Android App快速開發(fā)平臺設計與實現.pdf
- “再中介化”出行共享平臺app的分析與創(chuàng)建
- 快速開卡手機APP的設計與實現.pdf
- 基于ios平臺的天氣app應用設計與實現
- 基于ios平臺的天氣app應用設計與實現
- RPSim:面向SoC軟件研發(fā)的快速原型全系統(tǒng)模模擬平臺設計與實現.pdf
- 共享圖書app軟件的研發(fā)
- 基于APP的CBD管理平臺設計與實現.pdf
- 基于Android平臺的校園APP的設計與實現.pdf
- 快速定位平臺的設計與實現.pdf
- 軟件研發(fā)管理平臺的設計與應用.pdf
- 基于android平臺的旅游攻略APP的設計與實現.pdf
- 基于手機app的校園代購平臺的設計與應用分析
- 書友交流分享與社交平臺app的設計與實現.pdf
- 44667.基于android平臺的課堂筆記app設計與實現
- 基于Android APP的船廢監(jiān)測平臺的研究與設計.pdf
- 基于FPGA快速原型平臺的設計與實現.pdf
- 基于Google App Engine云平臺OA系統(tǒng)的設計與實現.pdf
- 基于Android平臺智能插座控制APP設計與實現.pdf
- Android平臺下圖像加密APP設計與實現.pdf
評論
0/150
提交評論