【iOS】#23 記帳APP Part5: 串接 AirTable 資料

抓取存於 AirTable 中的怪物資料

--

本篇提及功能:
建立 AirTable base
抓取 AirTable 資料
從 URL 載入 Lottie 動畫

APP 概念

上次說到這款記帳 APP 其實是結合「記帳」與「養寵物」,用遊戲化的概念,讓使用者增加記帳的動機,並且節省花費。具體執行行為如下圖所示

怪物的設定是喜歡吃金幣,如果餵他金幣就會成長

使用者在一開始會先設定每日花費的預算。當天記帳完後,可以進行「結算」行為,如果花費低於預算時,就會把多出來的差額「餵」給怪物。怪物可說是一種另類的撲滿,只不過不是要記錄真實存下來的錢,而是用預算的概念,盡可能讓使用者減省花費

因為怪物有升級的設定,所以需要檔案記錄這些資料。我選擇的方式是把這些怪物資料存在 AirTable,如此一來方便在線更新

實作部分

建立 base

首先先到 AirTable 註冊帳號,註冊完成後,在首頁的部分選擇「Add a base」-> 「Start from scratch」

並輸入 base 的名稱。如果看不慣顏色以及圖示也可以做修改 XD

建立資料欄位

點選剛創立的 base 後,會進入到表格呈現的地方。左上角的 Tab 可以更改這個 Table 的名稱

新增欄位直接按「+」就會出現,可以根據資料的型態做設定

如果要上傳圖片、json 檔案之類的附件,可以選擇「Attachment」,之後把要上傳的檔案拖拉到該格中就可以上傳

最終我怪物資料設定的欄位有以下:

  • name_zh:怪物的中文名稱
  • monsterType:怪物的類型(用英文名稱存)
  • description_zh:怪物的描述
  • eggLvMaxVal, babyLvMaxVal, prematureLvMaxVal:設定怪物每種型態的最大值,只要超過就會型態進化。本來想用陣列存,但 AirTable 似乎沒有陣列的設定
  • animJson:存四種型態(egg, baby, premature, mature)的怪物動畫 json 檔
目前只畫一種怪物 XD

在程式中取得 AirTable 資料

接下來就是要在程式中,抓到這些怪物的資料。首先可以查看它的 API 文件,點選 base 頁面右上角的「HELP」,有個 API documentation

API documentation 很好心的列出有關於你這個 base 的所有可用 API

一樣需要帶 Token,才可以使用。這個 API KEY 位於帳號設定之中,下方紫色框的部分就是 API KEY

URLRequest 中帶入 API 的網址,然後再把 API KEY 帶進去 request 裡面

利用 URLSession 去抓資料,再利用 JSONDecoder 轉成自訂型態的資料,最後把 result 交給 completion 去處理要做的事情

使用 Lottie 載入線上 json 檔

以上是 AirTable 的部分,在把動畫 json 都存到 AirTable 後,就不用在本地存任何有關動畫的資料了

而在獲得來自 base 中的 animation json 檔的 URL 後,可以直接用 Lottie 提供的 loadedFrom function 讀取

最後,可把載入的動畫存在 global 的 LRUAnimationCache 中,要用的時候就可以直接從快取找,增進效能

APP Demo

後記

目前只有畫一隻獨角獸怪物,因為真的太花時間了 XD,光四種成長形態(egg, baby, premature, mature) x 三種動畫(stay, feed, question),就要製作 12 種動畫,有夠累…

--

--