摘 要:移動學(xué)習(xí)日益成為一種流行的新型學(xué)習(xí)模式,針對高職院校學(xué)生學(xué)習(xí)特點(diǎn)及微課特征,借助基于iOS的移動應(yīng)用開發(fā)技術(shù),設(shè)計(jì)并開發(fā)一款可用于微課學(xué)習(xí)的APP。該軟件實(shí)現(xiàn)了微課視頻在線觀看、下載收藏、課程問答、課后練習(xí)、資源搜索、歷史查看等功能,為學(xué)習(xí)者提供了一個(gè)隨時(shí)隨地的進(jìn)行學(xué)習(xí)與互動交流的移動平臺,能夠滿足個(gè)性化學(xué)習(xí)、移動化學(xué)習(xí)、碎片化學(xué)習(xí)的需求。
關(guān)鍵詞:微課;視頻;iOS;應(yīng)用開發(fā)
中圖分類號:TP311.1 文獻(xiàn)標(biāo)識碼:A
1 引言(Introduction)
近年來智能手機(jī)的普及加速了對于移動學(xué)習(xí)的研究和實(shí)踐。各類資源網(wǎng)站將微課應(yīng)用的各項(xiàng)功能全部在移動終端上實(shí)現(xiàn)。而學(xué)校這一塊相對落后,部分高校和中小學(xué)雖然建立了自己校內(nèi)的資源網(wǎng)站,但基本上沒有針對本校的資源應(yīng)用的移動平臺。為了滿足學(xué)生隨時(shí)使用移動終端上網(wǎng)的碎片化學(xué)習(xí)的需要,設(shè)計(jì)和開發(fā)一款基于iOS的移動終端學(xué)習(xí)APP。通過搜索和展示學(xué)校已有的微課資源,方便學(xué)生隨時(shí)學(xué)習(xí)與課程相關(guān)的微課視頻。
2 相關(guān)技術(shù)(Related technology)
本系統(tǒng)在iOS平臺基礎(chǔ)上采用B/S三層模式,即數(shù)據(jù)層、應(yīng)用層和表示層,數(shù)據(jù)層由通常所說的服務(wù)器端后臺構(gòu)成,后臺以Mysql+PHP的模式,其主要功能是響應(yīng)服務(wù)層,以及系統(tǒng)的數(shù)據(jù)存儲和管理。表示層向應(yīng)用層發(fā)送HTTP請求并顯示應(yīng)用層響應(yīng)的JSON數(shù)據(jù);應(yīng)用層主要響應(yīng)表示層的HTTP請求、處理業(yè)務(wù)邏輯及對數(shù)據(jù)層返回的數(shù)據(jù)進(jìn)行格式化處理,處理后將數(shù)據(jù)在表示層顯示[1]。
2.1 iOS 系統(tǒng)
iOS是蘋果公司早在2007年專為其手機(jī)產(chǎn)品開發(fā)的操作系統(tǒng),隨著蘋果產(chǎn)品的發(fā)展,iOS逐漸演變?yōu)樘O果移動產(chǎn)品的專有操作系統(tǒng),被廣泛應(yīng)用在蘋果的各種移動終端。iOS系統(tǒng)因?yàn)槠湎鄬Ψ忾],對軟件產(chǎn)品安裝審核要求較嚴(yán),因此生態(tài)壞境較其他應(yīng)用系統(tǒng)安全性更高[2]。iOS系統(tǒng)作為蘋果設(shè)備的專屬系統(tǒng),軟硬件可以較好的配合,運(yùn)行更為流暢和穩(wěn)定。同時(shí),蘋果系統(tǒng)界面設(shè)計(jì)美觀,其人性化的設(shè)計(jì)給用戶很好的體驗(yàn),是當(dāng)前手機(jī)用戶青睞的移動終端操作系統(tǒng)。
2.2 PHP+MySQL
PHP是一種腳本語言,被廣泛應(yīng)用于各類服務(wù)器端,和其他技術(shù)相比,PHP是開源的,可以免費(fèi)使用。由于PHP支持開放數(shù)據(jù)庫互連,因此PHP可以連接任何支持該標(biāo)準(zhǔn)的數(shù)據(jù)庫,如MySQL、SQL Server和DB2等。PHP還支持將數(shù)據(jù)轉(zhuǎn)為XML/JSON格式。目前被廣泛用于APP數(shù)據(jù)接口的開發(fā),PHP和MySQL經(jīng)常被一起使用作為后臺開發(fā)[3]。
MySQL是一種中小型關(guān)系數(shù)據(jù)庫系統(tǒng),體積小、速度快,支持標(biāo)準(zhǔn)的SQL查詢語言,廣泛應(yīng)用于中小型網(wǎng)站數(shù)據(jù)庫服務(wù)器。同時(shí),MySQL支持Java、C#、PHP等高級語言的數(shù)據(jù)接口開發(fā),因此本應(yīng)用選擇PHP+MySQL用于測試服務(wù)器后臺數(shù)據(jù)的管理與接口的開發(fā)。
2.3 JSON數(shù)據(jù)解析
JSON是一種輕量級的數(shù)據(jù)交換格式,是基于Java Script的一個(gè)子集。它是一種與開發(fā)語言無關(guān)的數(shù)據(jù)格式,可以實(shí)現(xiàn)在多種語言之間進(jìn)行數(shù)據(jù)交換的能力,是一種廣泛應(yīng)用的數(shù)據(jù)交換格式,當(dāng)前被常應(yīng)用于安卓和iOS應(yīng)用開發(fā)的數(shù)據(jù)交換。JSON主要有兩種數(shù)據(jù)結(jié)構(gòu)。第一種是由鍵值對組成的數(shù)據(jù)結(jié)構(gòu),這種數(shù)據(jù)結(jié)構(gòu)在不同的語言中實(shí)現(xiàn)也不同,在Objective-c中是一種NSDictionary對象。第二種是有序集合,這種數(shù)據(jù)結(jié)構(gòu)在不同語言中可能有NSArray、vector、數(shù)據(jù)和序列等實(shí)現(xiàn),在Objective-c中是以NSArray來實(shí)現(xiàn)。因?yàn)镴SON數(shù)據(jù)的這些特征,因此JSON數(shù)據(jù)可以轉(zhuǎn)換成不同語言的數(shù)據(jù)類型,JSON數(shù)據(jù)解析就是將JSON數(shù)據(jù)轉(zhuǎn)換成對應(yīng)語言的數(shù)據(jù)格式[4,5]。
3 需求分析與系統(tǒng)功能設(shè)計(jì)(Requirement analysis
and system function design)
3.1 需求分析
微課是以教學(xué)視頻為主要呈現(xiàn)形式,圍繞課程知識點(diǎn)、例題習(xí)題、疑難問題、實(shí)驗(yàn)操作等開展的簡短、完整的教學(xué)活動,以及相關(guān)資源的有機(jī)結(jié)體。從這個(gè)概念可以得出“微課”是簡短又完整的教學(xué)活動,它不僅僅包含視頻,而且包括與之相關(guān)的ppt、習(xí)題等[6]。
本項(xiàng)目根據(jù)微課的這些特點(diǎn)進(jìn)行設(shè)計(jì)。首先微課視頻都是限制在幾分鐘之內(nèi),視頻文件較小,適合網(wǎng)絡(luò)傳輸和移動設(shè)備播放;其次APP除了可以播放微課視頻,還可在線或下載學(xué)習(xí)微課相關(guān)資源。
APP除了根據(jù)微課的特點(diǎn)設(shè)計(jì)相關(guān)功能外,還結(jié)合學(xué)生的學(xué)習(xí)特點(diǎn),從易用性、趣味性著手。界面和功能設(shè)計(jì)力求簡單,APP主要包括賬戶管理、視頻學(xué)習(xí)、在線咨詢、課后練習(xí)等功能。注冊登錄也以簡單實(shí)用為原則,僅需通過手機(jī)號進(jìn)行注冊和登錄,還可以利用iPhone的的指紋識別技術(shù),實(shí)現(xiàn)APP指紋登錄,對于在線咨詢采用QQ在線咨詢。課后練習(xí)從趣味性考慮采用游戲答題積分的方式。
根據(jù)以上分析,項(xiàng)目主要實(shí)現(xiàn)以下幾個(gè)功能。賬號管理實(shí)現(xiàn)用戶的注冊、登錄,注冊功能以學(xué)號作為主鍵,綁定學(xué)生的手機(jī)號。登錄可以學(xué)號登錄,或者手指指紋識別登錄。視頻學(xué)習(xí)功能可以在線播放或者下載視頻在本地播放。課后練習(xí)功能設(shè)計(jì)成答題積分游戲,課后練習(xí)的積分可以作為老師給學(xué)生平時(shí)成績的參考。在線咨詢可以利用騰訊QQ的第三方接口,實(shí)現(xiàn)QQ在線交流。
3.2 系統(tǒng)功能設(shè)計(jì)
針對項(xiàng)目需求分析,對基于iOS的微課視頻學(xué)習(xí)系統(tǒng)進(jìn)行詳細(xì)的功能設(shè)計(jì),系統(tǒng)結(jié)構(gòu)圖如圖1所示。
系統(tǒng)總體框架主要包括登錄注冊模塊、主頁面模塊、視頻分類模塊、視頻練習(xí)模塊和個(gè)人中心模塊。登錄注冊模塊設(shè)置師生兩種不同角色的登錄界面,涉及用戶注冊、登錄、密碼修改,以及找回等內(nèi)容。主頁面模塊包括App啟動,以及視頻列表加載和展示。視頻分類模塊包括視頻的分類、播放、下載、收藏、分享和評論等,頁面采用了左側(cè)導(dǎo)航的設(shè)計(jì),使分類清晰簡潔,方便用戶尋找與觀看等一系列操作。視頻練習(xí)模塊包括視頻的觀看和對應(yīng)習(xí)題的練習(xí),用戶通過練習(xí)來了解自己對知識點(diǎn)的掌握情況,以便調(diào)整學(xué)習(xí)進(jìn)度和學(xué)習(xí)計(jì)劃。個(gè)人中心模塊包括個(gè)人信息、我的收藏、我的緩存、我的歷史、我的練習(xí)、安全升級、系統(tǒng)設(shè)置和意見反饋等,該模塊主要是用戶觀看視頻和練習(xí)的狀態(tài)的記錄,以及賬戶信息和安全的管理,由于版塊功能過多,采用列表式的設(shè)計(jì)顯示模塊,清晰簡潔,使用戶一目了然。
4 APP實(shí)現(xiàn)及關(guān)鍵技術(shù)(APP implementation and
key technologies)
4.1 總體架構(gòu)
APP客戶端整體采用MVC(Model View Controller)框架。MVC是一種將業(yè)務(wù)邏輯、數(shù)據(jù)、界面分離的方法組織代碼的框架。在改進(jìn)界面及用戶交互的同時(shí),不需要重寫業(yè)務(wù)邏輯,將app的輸入、處理和輸出分離。其中Model表示數(shù)據(jù)模型,它是應(yīng)用程序的核心,用來對應(yīng)用所需數(shù)據(jù)進(jìn)行加工處理,為應(yīng)用提供統(tǒng)一的數(shù)據(jù)形式。View表示視圖,也就是應(yīng)用的數(shù)據(jù)顯示,可以通過iOS提供的UILabel、UIText、UIButton、UITableView、UICollectionView等控件對應(yīng)用所需數(shù)據(jù)進(jìn)行頁面布局,一般從美觀、實(shí)用和高效三個(gè)方面來考慮。Controller代表控制器,用于用戶交互,和應(yīng)用邏輯整體控制。
常用的控制器有UIViewController、UINavgationController、UITabBarController、UIViewController用于對某一功能模塊的控制或者與用戶的交互,UINavgationController和UITabBarController用于對一個(gè)或多個(gè)控制器的管理。本應(yīng)用包含首頁、分類、練練、我的四個(gè)主要模塊,以及登錄注冊模塊,應(yīng)用UITabBarController和UINavgationController分別對這兩個(gè)部分進(jìn)行控制管理,實(shí)現(xiàn)各功能模塊彼此之間的控制和跳轉(zhuǎn),如圖2所示。
4.2 界面實(shí)現(xiàn)
APP首頁主要用于展示用戶可瀏覽的課程,包括我的課程、最新課程、推薦課程等,這些內(nèi)容會隨著后臺數(shù)據(jù)的變化而變化,但整個(gè)首頁面顯示形式基本上是固定的。為了不讓APP針對不同的數(shù)據(jù)反復(fù)創(chuàng)建視圖對象,可以采用iOS提供的重用機(jī)制,反復(fù)使用可重用的視圖對象。首頁頁面如圖3所示,根據(jù)其格式特征,以及上述分析,可以很好的利用UICollectionView的重用功能來實(shí)現(xiàn)視頻資源的展示。
分類模塊用于分類顯示系統(tǒng)所有視頻資源(圖4),該模塊采用表視圖(UITableView)來實(shí)現(xiàn),表視圖也是iOS中典型的可采用重用機(jī)制的控件,視頻列表采用一個(gè)自定義cell來進(jìn)行布局,實(shí)現(xiàn)界面的統(tǒng)一協(xié)調(diào),根據(jù)接口返回的數(shù)據(jù)的不同,顯示不同的視頻信息。同時(shí),采用下拉刷新的方式用于加載最新的數(shù)據(jù)或者在在網(wǎng)速較慢的情況下重新加載數(shù)據(jù)。左邊欄采用自定義的視圖,通過選擇不同的標(biāo)簽得到不同分類的課程視頻資源[7]。
視頻播放是APP最重要的一個(gè)功能,在該頁面自定義了一個(gè)播放器(圖5),使用AVFoundation框架中的AVPlayer類實(shí)現(xiàn)播放功能[8]。同時(shí)在這個(gè)界面設(shè)置了評論區(qū),用戶可以相互評論交流,也能對微課視頻發(fā)表評論。視頻播放界面左下角咨詢按鈕利用騰訊的接口,實(shí)現(xiàn)QQ聯(lián)系授課教師答疑解惑,在播放界面還可以將視頻添加到我的緩存中進(jìn)行下載方便以后觀看,也可以添加到我的收藏。
5 數(shù)據(jù)請求(Data request)
數(shù)據(jù)請求是iOS應(yīng)用開發(fā)最重要的一個(gè)環(huán)節(jié),沒有數(shù)據(jù)的應(yīng)用只是一個(gè)空殼。本應(yīng)用數(shù)據(jù)均使用MySQL數(shù)據(jù)庫進(jìn)行存儲,對需要調(diào)用的數(shù)據(jù),使用PHP技術(shù)對數(shù)據(jù)庫進(jìn)行查詢,轉(zhuǎn)換成JSON數(shù)據(jù)格式。所有要從網(wǎng)絡(luò)下載或查詢的數(shù)據(jù)均采用JSON數(shù)據(jù)格式作為數(shù)據(jù)接口,項(xiàng)目中所要使用的圖片、問題和答案等信息均通過數(shù)據(jù)庫查詢后轉(zhuǎn)換成JSON文件格式,這種格式的數(shù)據(jù)都以鍵值對的形式表示,APP的界面數(shù)據(jù)通過網(wǎng)絡(luò)獲取JSON數(shù)據(jù)內(nèi)容,這樣可以很好的實(shí)現(xiàn)界面呈現(xiàn)內(nèi)容與界面版式的分離,即用一種界面版式,讀取若干界面內(nèi)容,保證了內(nèi)容呈現(xiàn)風(fēng)格的一致性,同時(shí)減小了文件的大小。服務(wù)器端數(shù)據(jù)與客戶端也保持了相對的獨(dú)立性,便于數(shù)據(jù)和界面的移植。
數(shù)據(jù)存放于服務(wù)器端,客戶端使用數(shù)據(jù)需向服務(wù)器端發(fā)起HTTP請求。在應(yīng)用中,數(shù)據(jù)獲取的方法和順序會影響獲取數(shù)據(jù)的速度,進(jìn)而影響整個(gè)應(yīng)用的速度。在本應(yīng)用中涉及的數(shù)據(jù)有文本數(shù)據(jù)、圖片數(shù)據(jù)和視頻數(shù)據(jù)等,為滿足需求使用異步POST數(shù)據(jù)請求方式。在異步請求過程中,會涉及多任務(wù)同時(shí)處理的問題,比如請求數(shù)據(jù)和顯示獲取到的數(shù)據(jù),這時(shí)就必須用到線程來處理問題。一個(gè)線程同一時(shí)刻只能處理一個(gè)任務(wù),多個(gè)任務(wù)同時(shí)執(zhí)行就必須使用多線程。因?yàn)閿?shù)據(jù)請求是一個(gè)耗時(shí)操作,涉及服務(wù)器的反應(yīng)速度、網(wǎng)絡(luò)延時(shí)等問題,需要等數(shù)據(jù)請求完成后才能在UI上顯示數(shù)據(jù),如果在這個(gè)時(shí)間段用戶得不到任何響應(yīng),將是一種很不好的體驗(yàn)。因此將數(shù)據(jù)請求操作單獨(dú)放在一個(gè)線程,而與用戶交互的操作放在主線程,以此保證應(yīng)用及時(shí)響應(yīng)用戶操作。
在本應(yīng)用中凡涉及多任務(wù)處理均使用GCD多線程技術(shù)。GCD是蘋果公司為多核的運(yùn)算提出的解決方案,會自動利用更多的處理器核心。GCD是基于c語言的,會負(fù)責(zé)創(chuàng)建線程和調(diào)度需要執(zhí)行的任務(wù),有系統(tǒng)提供線程管理。GCD提供了隊(duì)列(Dispatch Queue)來對應(yīng)用中的多任務(wù)進(jìn)行管理。
數(shù)據(jù)請求成功后,會對服務(wù)器返回的數(shù)據(jù)進(jìn)行JSON解析,并刷新UI界面顯示結(jié)果。
6 系統(tǒng)測試(System test)
APP實(shí)現(xiàn)后必須對其進(jìn)行系統(tǒng)測試,測試可以用模擬器測試,也可以采用真機(jī)測試。Xcode自帶有各個(gè)版本的iPhone模擬器,為了確保APP能在各個(gè)版本的iPhone可兼容運(yùn)行,可以根據(jù)需要選擇不同大小的屏幕。除了模擬器測試,還可以采用真機(jī)測試,真機(jī)測試更能體現(xiàn)APP在真機(jī)上的運(yùn)行效果。本APP在iPhone6、iPhone6 Plus真機(jī)通過了測試。在進(jìn)行真機(jī)測試時(shí),系統(tǒng)要求提供開發(fā)者證書,因此在測試之前必須注冊APP ID,申請開發(fā)者證書。系統(tǒng)測試主要包括功能和性能測試。
6.1 功能測試
根據(jù)微課視頻學(xué)習(xí)APP的功能設(shè)計(jì),選取了其中的幾個(gè)主要功能進(jìn)行了測試。首先是用戶的注冊和登錄功能,用戶的注冊采用的是手機(jī)驗(yàn)證碼注冊,注冊成功后采用手機(jī)號和密碼進(jìn)行登錄。使用了多個(gè)手機(jī)號進(jìn)行了注冊登錄,均可以成功實(shí)現(xiàn)發(fā)送驗(yàn)證碼注冊,注冊后的手機(jī)號也可以成功登錄系統(tǒng),并進(jìn)行操作。
APP的視頻播放功能和習(xí)題練習(xí)功能也能按照原設(shè)計(jì)要求正常運(yùn)行。在測試服務(wù)器中存儲了幾個(gè)微課視頻和相關(guān)的習(xí)題,可以通過APP對其進(jìn)行讀取,視頻可以實(shí)現(xiàn)播放、暫停、快進(jìn)和停止,練一練可以實(shí)現(xiàn)習(xí)題的選擇和對錯(cuò)判斷功能。
6.2 性能測試
性能測試是在保證APP正常運(yùn)行,實(shí)現(xiàn)所設(shè)計(jì)的功能之后的最后一環(huán)。本APP開發(fā)工具Xcode自帶有專門的性能測試工具—analyze靜態(tài)分析工具和Instruments-Leaks動態(tài)分析工具,通過運(yùn)行性能測試工具analyze進(jìn)行測試,沒有內(nèi)存泄露、空指針、對象引用、數(shù)值賦值等方面的錯(cuò)誤。Instruments-Leaks有很多跟蹤模塊可以動態(tài)分析和跟蹤內(nèi)存,CPU和文件系統(tǒng)。利用這兩個(gè)工具,對應(yīng)用代碼進(jìn)行了優(yōu)化改進(jìn)。除此之外,APP的性能測試還包括負(fù)載測試和壓力測試,目的是為了驗(yàn)證能否實(shí)現(xiàn)用戶提出的性能指標(biāo),發(fā)現(xiàn)系統(tǒng)中存在的性能瓶頸,用以進(jìn)一步優(yōu)化系統(tǒng)[2]。
7 結(jié)論(Conclusion)
微課視頻學(xué)習(xí)APP具有較強(qiáng)的針對性和可移植性,通過簡單的數(shù)據(jù)處理可以較好的將學(xué)校現(xiàn)有的微課資源通過APP進(jìn)行在線學(xué)習(xí),同時(shí)APP簡單易用,使用方便,教師如能將APP的使用與教學(xué)相結(jié)合,可以較好的提高學(xué)生的學(xué)習(xí)興趣,將為在校學(xué)生利用微課進(jìn)行隨時(shí)隨地的學(xué)習(xí)提供便利。
參考文獻(xiàn)(References)
[1] 胡俊平,譚穎,熱依汗古麗.艾爾肯.基于iOS平臺的華陽社區(qū)資訊共享服務(wù)“樂助”的設(shè)計(jì)與開發(fā)[J].西南民族大學(xué)學(xué)報(bào)(自然科學(xué)版),2018(2):184-193.
[2] 尚志會,羅旭,李洪進(jìn),等.基于iOS平臺的新聞播報(bào)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].安陽工學(xué)院學(xué)報(bào),2018(2):65-68.
[3] 王玉凡.基于PHP的Web查詢系統(tǒng)的實(shí)現(xiàn)[J].河北軟件職業(yè)技術(shù)學(xué)院學(xué)報(bào),2016(4):49-51.
[4] 郭忠南.基于Android的移動微課平臺的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦與信息技術(shù),2016(04):38-43.
[5] 周建亮,朱曉民.基于iOS平臺智能點(diǎn)餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].軟件,2015(1):131-134.
[6] 李蕾,李曉麗.基于iOS手持終端的移動學(xué)習(xí)資源設(shè)計(jì)研究[J].中國電化教育,2014(12):93-97.
[7] 黃瀏展.IOS重用機(jī)制研究與實(shí)踐[J].軟件導(dǎo)刊,2014(11):122-125.
[8] 曾垂鑫,王加俊,申麗萍,等.基于iOS的移動學(xué)習(xí)直播互動平臺[J].計(jì)算機(jī)工程,2013(7):314-317.
作者簡介:
黃瀏展(1975-),男,碩士,副教授.研究領(lǐng)域:高職教育教學(xué),移動應(yīng)用技術(shù).