Swift Practice # 158 狗便袋 Side Project with SwiftUI
將近半個月沒有發文,剛好遇到連假去露營,不是沒有在鑽研Swift,只是剛好在將side project給完成。
發想起源:
大家應該多少都有在路邊看過這個袋子,但通常,是不會看到袋子的。但有一次路過公園發現竟然有人來補袋子,但是….又多久會被人拿光呢?畢竟這不是有規定一次只能拿一個,說不定有人一言不合就全部拿走了。所以我開始思考,是否有辦法將這個袋子轉化成類似機器的概念,然後用App互動讓使用者可以拿到一個袋子就好,可能是每個月有固定免費的額度,看完廣告就能拿這個袋子一個,我想這是一個可能的商業模式,但這個權限可能需要透過政府單位來協助。
所以這個App將嘗試與使用者互動,但狗便袋子機器則不在我能處理的範圍了…首先我們先想像這個機器已經準備好,而我嘗試做一個可以能拿袋子的App。
主要功能:
・列表與地圖模式顯示使用者與狗便袋的距離
・Google Admob全篇幅廣告
・相簿存取存放使用者愛犬照片
・Firebase存取狗便袋地理資料
・Firebase存取狗便袋數量並在拿袋子後更新數量
功能演示:
地圖顯示(未設定狗狗照片):
列表顯示(未設定狗狗照片):
地圖列表切換:
距離最近狗便袋25m內點擊看廣告:
拿狗便袋(未設定狗狗照片):
拿狗便袋(設定狗狗照片):
設定狗狗照片:
狗便袋拿完:
前置作業:
plist取得使用者位置權限
Firebase建立狗便袋資料庫
Firebase建立狗便袋數量
Google Admob建立全幅廣告
PS:Google Admob可能因為是SPM安裝,所以要在plist多以下的程式碼,不然縱使已經提供Admob ID仍會報錯
<key>GADIsAdManagerApp</key><true/>
程式碼:
App.swift:
Model:
建立Firebase對應的資料格式
ViewModel:
關於跟Firebase互動的ViewModel
Google Admob
ImagePicker存取選擇的照片與判斷UserDefault的照片
View:
顯示地圖模式的View:
顯示列表模式的View:
讀取Firebase時的Progress View:
距離達到指定的25m內可以拿袋子的View:
ContentView
心得:
大致上透過自己目前所理解的完成一個狗便袋的side project,感覺也是有趣,不知道生活上還有什麼事情可以讓App來協助可以變得更好管理,持續發現這些可能或許可以變成自己的下一個side project。持續加油!