申凡
(天津科技大學 人工智能學院,天津300450)
Firebase 實時數據庫是基于云存儲的數據庫。數據的存儲格式是JSON 文件。在實際的開發(fā)中,負責數據信息順序、屬性的操作通常更適用于運營團隊,他們的任務是在開發(fā)者完成之后進行數據的增刪改。本系統(tǒng)面向運營部門開發(fā),開發(fā)語言是Objective-C,開發(fā)平臺為Xcode,采用的結構是典型的MVC(Model-View-Controller)設計者模式,布局方式有xib 布局和純代碼布局。使用Firebase 實時獲取數據,在APP 中實現多個代理和函數回調。對JSON 文件進行編輯,編輯結束后可以使用文件協調工具來得到新的文件地址,從而實現文件的保護和上傳功能。
Firebase:本項目的數據庫放置在Firebase Realtime Database 中,不需要實時鏈接數據庫,只需要將JSON 文件導出,導出之后在本地進行操作,不用一直處于vpn 打開的狀態(tài)。
第三方庫管理工具:為了更好的管理第三方依賴庫,使用CocoPods 管理工具集中管理第三方庫。在更新gem 的時候,切換Ruby 源來安裝。首先需要移除國外的源再添加國內的源。替換成功則可以安裝CocoaPods。在安裝之后可以更新索引倉庫。如本系統(tǒng)使用該App 進行字典和模型之間的互相轉換。如表1所示。
表1 MHExtension 框架轉換表
本系統(tǒng)開發(fā)和測試過程如下,首先需要將數據上傳至服務器,接著導入到開發(fā)工具端即可實現對JSON 文件數據源的操作,如搜索欲修改品名,可視化設置其屬性;根據url 鏈接直接添加新的json 文件;對數據進行刪除;修改當前字體或者表情包的屬性。將數據保存之后上傳到Firebase,可以在Firebase 上查看新的JSON 數據源,由于Firebase 是實時數據庫,因此可以在測試平臺直接顯示和使用字體或者表情包。
首先需要在Firebase 上導出JSON 文件,把該文件導入到iPhone。其次導入成功后,可以對當前JSON 文件添加新的表情或者字體,對其執(zhí)行修改屬性,刪除,移動,保存等操作。服務器端存儲數據,涉及到的操作是導入/導出JSON 文件。工具端主要完成的工作是:導入JSON 文件、添加cell、修改屬性、控制vip權限、刪除表情包/字體、模糊搜索、移動表情包/字體、顯示輪播圖、保存文件。
在Firebase 上主要分為兩個部分,font 和stickersfont 包含的屬性有installisNEw、lowercase、name、uppercase、vip 等。在sticker中主要包含contents_json_url,另外包含key 和value 值。
需要一個成熟的測試端,如鍵盤輸入法平臺,包含多款皮膚、字體等。在此平臺上,開發(fā)一款基于該平臺的一個JSON 工具。JSON 工具可以對平臺數據進行操控,同時使用Firebase 進行數據存儲。多個界面和功能來進行JSON 編輯工具的測試和核準操作,并且經過工具測試之后可以直接使用于手機所有APP 的輸入操作。
(1)獲取json 文件:創(chuàng)建實時數據庫,在開發(fā)者選項中,選擇數據庫輸入相應的字段信息,使用export 功能導出JSON 文件,此時無法在Firebase 上直接對其進行編輯,僅在本地進行操作。
(2)導入json 文件:懶加載數據“獲取模型數據,如果當前的數據不為空,則返回該數據源,如果為空,則初始化一個數據對象”,遍歷其中所有的數據,將其添加到Model 模型中。創(chuàng)建單元格,給當前的單元格設置一個ID,布局并賦值后返回單元格,最后將控制流程返回給UI 框架去進行處理。
(3)添加sticker/Foot:獲取添加表情包或者字體的文件鏈接。一個表情包涉及到很多表情,每個表情對應著一個鏈接,需要把該JSON 文件的內容解析,添加主要的字段到表情包的JSON 文件。為了方便用戶的對新添加的元素進行管理,在用戶添加的時候,可以對主要的兩個屬性更改Boolean 值,這個Boolean 值設置為可變數組,以TableView的形式展示。
(4)修改屬性:當所有的字體都加入到當前的TableView 之后,每個單元格均顯示出序號、名字和兩個可以更改的屬性值("isNew" : true 和"lock_type" : true), 在每一行的上面有兩個UIswtich 可以改這兩個值。這兩個值修改之后上傳服務器。當用戶更新APP 再次進行下載的時候,就可以被相應的屬性控制下載的權限,如圖1 所示。
圖1 可視化修改Font 屬性
(5)刪除:在tableview 上實現刪除操作,需要啟動表格的編輯模式。
a.視圖:View 打開ViewController.xib,打開ViewController.m,在viewDidLoad 方法添加布局代碼。在刪除操作中,首先需要啟動的是表格的編輯模式,在編輯模式打開之后,每行的左邊會默認出現紅色的刪除按鈕。
操作的值主要是,將editingStyleForRowAtIndexPath 方法中的UITableViewCellEditingStyleNone 進行編輯,即可完成操作。
b.控制器Controller:刪除操作實現:將方法加入之后,APP無法對每行進行標記,即不會執(zhí)行didSelectRowAtIndexPath 這個方法。刪除的具體操作是執(zhí)行editingStyleForRowAtIndexPath方法。
(6)搜索:在ViewController 中創(chuàng)建一個搜索函數,在函數中,首先需要創(chuàng)建一個UISearchController 控制器,在self 的基礎上初始化一個搜索對象,這個searchController 主要是聲明為UISearchController 類型,可以直接使用UISearchController 的委托方法。
(7)移動:移動數據可以直接拖動每行的移動按鈕,拖拽實現移動效果。實現的邏輯為當用戶拖拽x 行至y 行,則需要先移除x 行,再將數據插入到y(tǒng) 行,這樣就能實現了移動操作。移動數據主要使用的方式是當用戶點擊移動按鈕即可以觸發(fā)LXAlertView 調用它的代理方法,代理方法中包含@property(nonatomic, copy) void (^changeBlock) (NSString * oldNumber,NSString * changeNumber);方法??梢灾苯虞斎雰蓚€行號進行移動。移動結束之后,可以直接進行保存。
(8)保存:當用戶對該JSON 文件操作結束之后,就可以進行保存操作,可以選擇保存至iCloud Drive 或者是保存到iphone本地。登入Firebase 服務器,打開Database 導入JSON 文件。
第一步是配置服務器端bundle ID,在Xcode 上創(chuàng)建項目之后,需要查看生成的ID,將其配置到服務器Firebase 上,其中包含Project name,Project ID,Web API Key。
第二步是下載plist 文件,將其導入到項目之中,導入FirebaseSDK。
(1)Emoji Keyboard
獲取數據:在該頁面,在當前的TableView 中首先需要獲取到Firebase 實時數據庫中的數據,將其添加到本地數據源中,請求實時數據庫使用的是回調函數。
使用url 鏈接下載回調,由于JSON 文件仍然會存一個表情包的icon,需要設置URL 鏈接來下載圖片的回調;id 下載回調,使用id 來下載表情包;返回添加反饋值:若添加成功,addendLocalResourceSticker:(NSDictionary *)model 函數將返回一個Boolean 值。
在下載過程中,在控制器中使用UITableView 來獲取數據源顯示信息。其中包含購買vip 按鈕,積分按鈕,TableDataSource數據源,積分模型、輪播圖的view等。
(2)判斷是否為vip
在用戶下載的時候,有一個重要的屬性是判斷當(轉下頁)前用戶是否處于VIP 狀態(tài),涉及到一個權限問題。具體需要判斷是否處于VIP 的邏輯。
首先需要在Analysis 里面新建一個User Explorer 類型的表格,在filter 里將revenue >0 的用戶篩選出來。點擊任意一個用戶,會新建一個Tab,包括了該用戶全生命周期的詳細操作;同樣在左側有篩選,可以過濾埋點;也可以點擊埋點,查看這個埋點的詳細信息。
以應用的埋點,創(chuàng)建一個購買用戶的Segment,應用到表格上;可以按照需求篩選任意類型的用戶;篩選payment_finish 埋點title 為Cool Font 的用戶,只需要點擊+號創(chuàng)建一個Segment然后選擇相應的埋點與參數;右側會有人數與會話預估;應用Segment 后會將對應的用戶篩選出來。
工作成果是設計并實現了一個基于iOS 和Firebase 開發(fā)的JSON 在線編輯工具。
該APP 具備良好的前景,作為json 文件的操作工具所服務的便是用戶的邊界操作體驗,無論是選擇品牌管理、商品管理、營銷、還是資源列表等服務,對JSON 文件的等操作體驗直接決定了用戶的工作效率。用戶可以根據市場的下載量等信息,對產品的價格、類別進行多次更改,不借助于程序員完成日常的更新需求。
測試端和工具端得到了完美的契合,互相配合完日常的工作。