張帥桐
摘要:隨著信息時代的發(fā)展,信息量越來越大,單憑人類自身已經(jīng)無法滿足信息存儲與信息傳播的社會要求。近年來,手機的功能日益強大,攜帶方便且普及的規(guī)模也遠超電腦,足以在通知和記事方面為人提供極大的便利。故而本人基于iOS系統(tǒng)和Swift語言設計并開發(fā)了一款名為“艾特便簽”的手機APP。該文將從開發(fā)者的角度來介紹“艾特便簽”。
關鍵詞:iOS;Swift;通知;記事;手機軟件
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2017)04-0068-02
1 研發(fā)簡介
生活中,一件事物往往需要記憶提醒,可能會涉及開始時間和結束時間,可能會涉及多人共同完成,可能會涉及信息共享,事物繁瑣,通知麻煩,協(xié)同成本高。
本款軟件是一個輕量級的記事與通知應用的結合體,用于解決上述問題。通過在聊天正文中輸入“@”標記來呼出手機系統(tǒng)通訊錄,然后選擇聯(lián)系人進行通訊?!癅”通訊錄中自己的號碼,即是給自己發(fā)備忘錄通信;“@”通訊錄中別人的號碼,就是向他人發(fā)送通知。
因為核心功能是通過在聊天文本中打“@”調(diào)用,從而軟件得名“艾特便簽”。
2 配置開發(fā)環(huán)境
本款軟件基于iOS系統(tǒng)進行開發(fā),需要在Mac OS X電腦上安裝Xcode 7.3.1。使用Swift 2.2進行編程,測試環(huán)境為iOS 9系統(tǒng)的iPhone 5s模擬器。
在iOS 9 系統(tǒng)中,蘋果官方推出了Contacts框架可以方便地調(diào)用系統(tǒng)通訊錄的功能,艾特便簽涉及訪問通訊錄數(shù)據(jù)庫中聯(lián)系人的姓名和電話號碼,以及調(diào)用官方提供的選擇聯(lián)系人的UI界面。
iOS APP開發(fā)擁有很多優(yōu)秀的第三方開源庫,程序大牛們把一系列可重用的功能函數(shù)或控件封裝成庫向外界開放。利用好第三方庫可以高效低成本的完成一款軟件,好似站在了巨人的肩膀上做開發(fā)。
艾特便簽使用了兩個第三方開源庫,需要從https://cocoapods.org/獲取第三方開源庫RAMAnimatedTabBarController(帶動畫的標簽控制器)和XWSwiftRefresh(下拉刷新控件)的Pod命令。然后在Xcode的工程中創(chuàng)建Podfile文件,文件里寫的是開發(fā)平臺及版本和第三方開源庫名稱和庫版本。最后通過Mac電腦上自帶RubyGems可以便捷安裝CocoaPods。安裝CocoaPods后,打開Mac上的終端進入項目工程所在根目錄,執(zhí)行pod install指令。
艾特便簽還涉及了字體和圖片資源的使用,它們都需要拖入到Xcode工程中與代碼文件一起打包成為一個APP。
3 系統(tǒng)設計
艾特便簽是一款用于通知和記事的軟件,類似短信和備忘錄,因此設計原則應是直觀、簡潔、大方。
3.1 業(yè)務邏輯設計
3.3 主要功能設計
艾特便簽主要涉及的功能為注冊、登錄、查看已收通知、創(chuàng)建通知發(fā)送、查看已發(fā)通知。
3.3.1 注冊
以一個NavigationBar和一個StaticTableView來構建頁面,根據(jù)TableViewCell中的TextField來獲取手機號、用戶名和密碼。查詢數(shù)據(jù)庫中是否有該手機號,若無則向數(shù)據(jù)庫中插入一條記錄。使用UIAlertController在頁面上反饋給用戶操作信息。
3.3.2 登錄
以Stack View包裝Image View以及Text Field來布局,使用Button來觸發(fā)時間。登錄時,查詢數(shù)據(jù)庫是否有該手機號且密碼是否正確,正確則跳轉(zhuǎn)至已收信息界面,錯誤則使用UIAlertController在頁面上反饋錯誤信息。
3.3.3 查看已收通知
使用導入的第三方開源庫,頁面外層是RAMAnimatedTabBarController,內(nèi)層是Navigation和DynamicTableView,把tableView.headerView設為XWRefreshNormalHeader,并根據(jù)需求自定義一個downPullLoadData函數(shù)。再把tableView.footerView設為XWRefreshAutoNormalFooter,同樣根據(jù)需求自定義一個upPullLoadData函數(shù)。
設置tableView的DataSource協(xié)議中cellForRowAtIndexPath方法為數(shù)據(jù)庫中登錄手機號所對應的通知記錄;設置tableView的Delegate協(xié)議中didSelectRowAtIndexPath方法為彈出該Cell代表的通知詳情界面,把對應的通知記錄詳細顯示。
3.3.4 創(chuàng)建通知發(fā)送
頁面主體為一個用于設置時間的TextField和一個用于輸入通知信息的TextView。
設置TextField的Delegate協(xié)議中textFieldDidBeginEditing方法為跳轉(zhuǎn)到一個有系統(tǒng)自帶的時間控件UIDatePicker的界面,利用閉包將UIDatePicker上用戶選定的時間回調(diào)傳給TextField。
本頁面中的TextView是實現(xiàn)艾特便簽的核心。需要設置TextView的Delegate協(xié)議中shouldChangeTextInRange方法和textViewDidChange方法。shouldChangeTextInRange用于獲取文本輸入時的光標位置,此處為了避免因鍵盤聯(lián)想輸入導致的定位錯誤需要判斷textView.markedTextRange == nil。textViewDidChange則用于判斷當前光標位置前一個字符是不是“@”,如果是呼出iOS 9 系統(tǒng)自帶的聯(lián)系人選擇界面CNContactPickerViewController(),再設置CNContactPickerDelegate協(xié)議中didSelectContacts方法獲取用戶選擇的通知接收者。最后把通知接收者的姓名放到剛剛定位到的“@”后面,實現(xiàn)后的效果類似于圖3-5中文本信息,達到通知信息與人名的混排對應,對于實現(xiàn)有分工意圖的通知有很好的效果,可一次通知多個人。在通知文本中也可只“@”自己,那么這條通知記錄只對應當前用戶,從而實現(xiàn)備忘的效果。
點擊發(fā)送后將這條通知生成為一條記錄,將這個記錄進行編號。用通知編號與每個接收的用戶對應,再根據(jù)通知接收者的數(shù)量生成等量的通知編號與用戶編號對應的記錄,一方面便于每個登錄的用戶查找自己所需接收的通知,另一方面因為是編號對應所以不會浪費過多的存儲空間。
3.3.5 查看已發(fā)通知
已發(fā)通知與已收通知的界面十分類似,同樣利用一個DynamicTableView來展示數(shù)據(jù)庫中當前用戶所發(fā)的通知記錄。已發(fā)通知頁面擁有向右滑動表格刪除通知的功能,需要設置TableView的DataSource協(xié)議中canEditRowAtIndexPath方法的返回值為true,另外還需設置commitEditingStyle方法為刪除數(shù)據(jù)庫所對應的通知記錄。
點擊TableViewCell展現(xiàn)通知內(nèi)容需要由TableView的Delegate協(xié)議中didSelectRowAtIndexPath方法來實現(xiàn)。在已發(fā)通知詳情的界面的NavigationBar上設置一個Button為重新發(fā)送的功能,點擊后讀取Label上的通知時間和TextView中的通知內(nèi)容,將其重載到新建通知界面,重新發(fā)送通知,此功能旨在讓用戶方便地修改有差錯的通知。
4 結束語
隨著移動技術不斷地向前發(fā)展,科技產(chǎn)品將為人類的生活帶來無限的便利。艾特便簽使用新發(fā)布的Swift語言進行開發(fā),相比之前的Objective-C語言更加簡潔易讀,合理利用了官方以及第三方開源框架,開發(fā)的效率高。
艾特便簽迎合了移動互聯(lián)網(wǎng)時代,將通知與備忘功能整 (下轉(zhuǎn)第71頁)
(上接第69頁)
合,為人們在信息的存儲及轉(zhuǎn)發(fā)方面提供了便利。雖然論文已經(jīng)接近尾聲,但對于艾特便簽卻只是個新的起點,艾特便簽好似新生的嬰兒,初具規(guī)模但還有很大的發(fā)展空間。未來艾特便簽還會結合更多優(yōu)秀技術不斷的優(yōu)化升級,爭取為人類提供更多的便利。
參考文獻:
[1] 傅佳晨.鹽巴——基于 iOS系統(tǒng)的考研軟件設計與實現(xiàn)[J].電腦知識與技術,2016(29):83-86.
[2] 寧占彬,丁洋濤,朱惠娣,等.復電工單管理系統(tǒng)IOS版客戶端設計[J].電腦編程技巧與維護,2016(15):5-7.
[3] 季鵬磊,黃斐.校園移動電子商務模式探討[J].福建電腦,2014(10):82,89-90.
[4] 龍曉穎.基于iOS的移動應用UI架構庫的設計與實現(xiàn)[D].北京:北京郵電大學,2015.