iT邦幫忙

2022 iThome 鐵人賽

DAY 24
0

今天讓我們來調查要如何使用 mobile app 來實現通知。

需求是否可能透過技術實現

我們前一篇提到的需求:

  1. 可以通知我們預測的時間。
  2. 能夠記錄新增的時間,以及他們與預測值的誤差。

實現這些需求需要用到的技術有:

  1. Cronjob:是否能夠使用類似 cronjob 來定時通知。
  2. 背景發出通知這篇提到電池最佳化設定等系統層級的 API,有可能會砍掉我們在背景的 app,此處仍待研究,
  3. 本地資料庫:目前筆者沒有打算架設 server 來處理新增的資料,希望可以在 client 端記錄,累積到一個量後再匯出統整。

基於上述考量,加上筆者主要使用的系統是 Android,目前有兩個預計使用框架的口袋名單:

  1. React Natvie
  2. Kotlin

前一陣子建立 React Native 的 hello world 專案時,在要 build iOS app 時因為 rvm 的關係卡了一個下午,私心比較偏向學習使用 Kotlin 來實作這次的任務。(當初卡住後的解法有筆記,將來有機會再和有需要的讀者分享。)

但考量到時間分配以及對於技術的掌握,最後還是選擇了 React Native。

React Native 的子類別

其中,React Native 的專案,又可以分成以下兩種:

  1. Expo Go:門檻較低,但較封閉
  2. React Native CLI

筆者不選用 Expo Go 的理由除了這篇提到的以外,主要是 Expo Go 對於第三方的支援有限:「Other libraries may be compatible with React Native, but not compatible with the Expo Go app.」(參照官網)。

以 React Native CLI 開啟此次專案

照著官網給的指示大抵上可以完成初始化:官網連結

筆者選擇 Development OS 是 MacOS,Target OS 選擇的是 Android。

唯有兩處卡了一下,以下分享。

XXX.js 中使用類 TypeScript 語法

如圖:
https://ithelp.ithome.com.tw/upload/images/20221009/20141357tPBrLV4Jx6.png

參照這篇的解法:

這時候我們要在 vscode 的 settings.json 裡面加入這一行:

"javascript.validate.enable": false

就可以與 vscode 的 TypeScript linter 和平共存。

找不到 Android Studio 中如何新增虛擬機

React Native 文件對於新增虛擬機的敘述如下:

If you have recently installed Android Studio, you will likely need to create a new AVD. Select "Create Virtual Device...", then pick any Phone from the list and click "Next", then select the S API Level 31 image.

筆者找了一陣子 Create Virtual Device 在哪裡,後來才發現原來在這個地方。

開啟 Device Manager
https://ithelp.ithome.com.tw/upload/images/20221009/20141357Gy3mXM3MQv.png

選擇 Create Device
https://ithelp.ithome.com.tw/upload/images/20221009/20141357ZTHSgE2wIB.png

附帶一提,紅框處圈起來就是 hello world 專案的內容。

今天收工!

參考資料

選用技術相關

資料庫相關

cronjob 相關


上一篇
實作:轉換平均數為時間格式 & 選擇通知方式
下一篇
實作:App 基本 UI & 功能
系列文
預測惱人的人事物:跟我一起學習如何用資料分析來避開他們38
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言