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