期末專題 — Paths

題目名稱: Paths

客製的 icon

我的期末專題名字叫做Paths,是一款以旅行為主題的App。
可以參考期末報告時的簡報: 連結

理念(想)

每趟旅程,都是由一個個的節點所組成,將節點連起來,終將成一條路徑,每條路徑都是一個獨一無二的故事。
我期望透過 Paths,能夠紀錄下旅途中最美好且獨一無二的一刻,譜寫出一個個精彩動人的故事。

核心概念

  • 每趟旅程,都由一個個節點組成
  • 使用者唯有到當地,才能創建節點
  • 一個節點一定要,也只能搭配一張照片,並搭配最多10行文字
  • 照片只能是當下拍攝
  • 最終每個節點終將連起來,形成一個故事(Path)

(1) App 操作的 gif

開始畫面
Google 登入功能
臉書登入功能
註冊功能
帳號密碼登入功能
寫日誌,寫完送出後會立刻上傳到Firebase上。如果是在實體手機的話,會直接開啟相機。
查看拜訪過的地點
Profile 頁面,這個頁面是使用 Swift UI 做的
參考了Peter老師的建議,使用Flickr API抓取所在地附近的照片,讓使用者參考附近有什麼美景。
搜尋功能,到過的地方皆會存到Core Data裡面,再搭配NSPredicate實現 search 功能

(2)重點程式碼

這次專題有使用了Peter老師建議的 Flickr API(有需要的可以參考這篇文章),抓取附近景點的照片。

先用web request抓下原始json資料,request內有目前所在地的經緯度(“&lat=xxx&lon=xxx”),Flickr 會返回所在地附近的照片,再從中拿出圖片的url。由於 QLPreviewcontroller 貌似只能吃檔案路徑,所以先用圖片url將圖片抓下來,存在本地,再取得檔案路徑。

(3) Github 連結

Github: https://github.com/314pies/Unamed002

(4) 遇到的問題與解決方式

  1. 問題:報錯 “Your app is missing support for the following URL schemes:”
    解決方式:後來發現是因為整合Facebook SDK的時候,Google 的 URL schemes 被覆蓋掉,後來手動重新加入就好。
  2. 問題:在實體手機上打字時完成時,沒有辦法“確認送出”
    解決方式:照著這個教學,在鍵盤上添加“Done”按鈕
    (連結:https://medium.com/swift2go/swift-add-keyboard-done-button-using-uitoolbar-c2bea50a12c7)
  3. 問題:使用模擬器跑都正常,但Build到實體機時,呼叫UIImagePickerController時,跳出” Attempt to present * UIImagePickerController*… whose view is not in the window hierarchy” 錯誤訊息
    解決方式:將UIImagePickerController的呼叫從ViewDidLoad 移到 ViewDidAppear內

(5) 心得

這次專題我其實做得還蠻開心的,使用陌生的環境開發充滿了新鮮感,唯一的小小抱怨的就是真的太累了(癱倒),希望以後有時間可以把這個App更加完善。

--

--