Swift Practice # 158 狗便袋 Side Project with SwiftUI

Dogpa Chen
7 min readJun 11, 2022

--

將近半個月沒有發文,剛好遇到連假去露營,不是沒有在鑽研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。持續加油!

參考資源:

--

--

Dogpa Chen
Dogpa Chen

Written by Dogpa Chen

Smile Coding / iOS轉職路ING

No responses yet