# 睿作業 1. 升級iOS13 (scenedelegate) 6/19 **不同元件間的生命週期 1. RestTimerVC ![](https://i.imgur.com/hrivRwB.png) 7/3 2. RestTimerDetailVC ![](https://i.imgur.com/tWtHBJc.png) 7/10 3. 推播-> 休息時間已到,繼續下一組(長案推播文字->點擊是) 7/17 4. Widget Timer 7/24 - 點Widget -> 進App - ![](https://i.imgur.com/bZl1lvA.png) * <!-- ## 工作守則 --> <!-- 1. 遇到問題 -> Google -> 知乎、大陸網站etc -> 群組 2. 30min解不掉問主管 3. 下班前歸納每一個小時做了哪部分的功能、在解哪部分的bug,哪個class、哪個功能 --> <!-- ## LetsPushUp 參考伏地挺身app --> <!-- 1.參考伏地挺身App,錄製mp3 1秒or1.5秒,在10下,9下...1下, 播放聲音 2.雙人頁面,第一頁改好友列表,第二頁改排行榜 3.參考其他伏地挺身app, 優化動畫效果 and ui ------------- 進階: 3.四人同步, 記得 Branch 開到 Four Player 再開始 --> <!-- 1.兩種色調就好 黑/白 or 灰 2. navigation bar 第一頁不要 3. test = false 4. ![](https://i.imgur.com/2rPXES7.png) 5. 顏色都改 黑白or灰 ![](https://i.imgur.com/Nrj2cJM.png) ![](https://i.imgur.com/7Z9kZVZ.png) ![](https://i.imgur.com/o9ajnY9.png) 6.![](https://i.imgur.com/5LjOKiE.png) Host 右邊 加label : 房主/ Host 7. Host 創建時 -> PKRoom新增的屬性: - pushCountHost: 1 - pushCountPlayer: 1 - userHost: hostUID - userA: 0 - userAStatus: aUID 房間顯示所有被邀請者 viewdidload: observe userA status: 0 -> 已邀請/ invitied, 1 -> 顯示已拒絕/rejected, 2-> 未準備/not prepared , 3->準備/ prepared 8. userA拒絕: - userA: 1 9.![](https://i.imgur.com/WuYrn15.png) ui處理, 花費時間改 ?分 ?秒, 開始時間: 月日時分秒 10. v: 1.0 介紹頁 11. 介紹: 單人/ 連線.... 12. icon --> # Mimimao:(MAP) 參考之前的專案 ## 動物醫院 範例: 做個好貓奴 03/27 1. 在台北市其中一區建立個五筆真實資料 2. 加入google and facebook登入 02/28 1. 找四種icon,分別代表 hospital, restaurant, message, shop 2. 地址屬性 3. 找任何動物相關api: - 貼在這 4. 資料庫新增hospital,restaurant,shop 1. func -> test開關 -> 台北車站, 案定位也會過去 2. ![](https://i.imgur.com/rhcCTXK.png) model, parse firestore -> hospital <!-- 3. lat, lon -> 顯示pin在地圖上 --> <!-- 4. map內所有數字改成變數 --> <!-- 5. 點擊pin -> 顯示card -> 資訊有:名稱 營業中、營業時間、電話 --> 6. 營業判斷: https://stackoverflow.com/questions/29652771/how-to-check-if-time-is-within-a-specific-range-in-swift --- ## 朋友 1.![](https://i.imgur.com/0WedvcO.png) 點擊ok -> 上傳使用者lat, lon, text([0]) -> firestore Message 2. viewdidload -> 抓動物醫院and message的pin, 顯示在地圖上 3. viewforannotation: hospital, message 圖釘png 4. 點擊 message pin 時 顯示text在card中 5. ![](https://i.imgur.com/3fx4VLl.png) 跟ins壹模壹樣 ui 顯示 圓形頭像+ 新增留言 -> 跳出keyboard ![](https://i.imgur.com/V6jehae.png) <!-- 6. 留言 -> post new text 到message的text array --> ## ui ![](https://i.imgur.com/nrXVFKR.png) 改成ins -> 最右邊的icon 顯示第一張照片(maoprofileimageurl) <!-- 6. 比賽結束時 新增 Battle -> startTime(Double) 7. 比賽結束時 新增 User -> battles(string array) -> 每個pkroomid 8. 多國語系確認 9. apple connect app資訊填寫 --> https://letspushup-0.flycricket.io/privacy.html ## Push Up 100 or lets push up 小bug: <!-- 1. 00:00 --> <!-- 2. localize 參考 mimimao %@ (休息時間) --> <!-- 3. PKroom 偵測也要有動畫label --> <!-- 4. pkroom 次數預設1 -> firebase --> <!-- 5. local startTime不用,遠端winner time 不用,結束時observe 遠端 start time, post (current time - starttime) --> <!-- 6. PKPUSHUP vc 處理 --> <!-- 7. 結束時 上傳 battle --> <!-- ![](https://i.imgur.com/bMB7vmB.png) --> <!-- (pushCountA)是UIDA --> <!-- 10. pkresult 顯示 勝利者、組數、時間(從battle) --> <!-- 11. 被invited時 除了isPlaying, 顯示alert --> <!-- 12. 單人退出btn --> <!-- 13. 用 api 創建介紹頁或自己刻 --> <!-- 14. 收邀請時跳出alert (API) https://github.com/huri000/assets/blob/master/swift-entrykit/alerts.gif ![](https://i.imgur.com/ZPkucxh.png) --> <!-- 1. single 改 present push up --> <!-- 3. picker view disable --> <!-- 4. PkRoomHostViewController vs PkRoomGuestViewController --> <!-- 5. PkRoomGuestViewController 自己排UI --> <!-- 6. PkRoomGuestViewController 偵測host的更動 --> <!-- - 流程: A設置Sets, 開始後A,B誰先做完組數 誰獲勝, 計入時間 --> <!-- 7. A -> B 發起挑戰流程編輯 --> <!-- 8. hostVC 用戶進來時,label右到左的動畫 --> <!-- ![](https://i.imgur.com/y8ybSAz.png) --> <!-- 9. B未準備 A不可開始 (isenable == false) --> <!-- 10. A準備後 不可取消準備 (isenable == false) --> <!-- 11. pkRoomVC -> 改成present(不能滑掉) --> <!-- 12. pkRoomVC - pkPushUpVC -> 不可返回 --> <!-- 13. pkRoomVC, pkPushUpVC -> 右上角加入退出 --> <!-- 14. pkRoomVC - pkPushUpVC 退出時,刪除playing pk room && playingpkroom --> <!-- 15. 刪除時間label(進入遊戲) ![](https://i.imgur.com/HWdnfvA.png) 16. 創建用戶時,加入屬性rank = 100 在fs 17. 其中一人count == 0 時 - dismiss VC - fs.win user rank +1, fs.lose user rank -1 - 刪除playing pk room && playingpkroom - 計算時間 (Time - FS.time) -> print贏家花費時間 18. LeaderBoardTableView UI ![](https://i.imgur.com/1aKMbMb.png) 19. LeaderBoardTableView 抓每位用戶積分(eg. Mimimao) --> Gary 1. 隱私權 && T & C ## Mimimao 1.每日刷新 daily like 和 daily count 功能放到遠端 2. 時間重置 func # 上課內容 聊天bugg # 面試考題 1. Retain cycle https://medium.com/@vinodhswamy/strong-cycle-retain-cycle-in-swift-f452f07518b2 筆記: String/ Weak 差別? ARC? Memory leak? # 永久存擋區 1. 非同步: 所有本地端UI的成現,要在本地端的資料跟遠端的資料 更動結束後,再做改變。 2. remote data 有延遲問題 所以遠端 data 更改後再更改 本地data 3. class local Data 更改後 全域變數也要做更改 4. 同樣功能的 func 要有一樣的命名 5. 先看 class 內有沒有自己要的變數,如果沒有的話就直接拿全域的 6. cell 裡面不能有非同步, 要善用 dequeueReusableCell 重複利用的特性, 會有 UI 顯示 記憶體 問題 ## Lets Push Up ### A -> B 發起挑戰流程 ![](https://i.imgur.com/PaFF85l.jpg) // A 什麼時候 Observe 哪個節點 First stage: A向B發起挑戰 1. PKRoom -> Create PKRoomID(Random) -> UserHost: A_Uid 2. Player -> A -> Create PlayingPKRoom: PKRoomIDz 3. Player -> B -> Create isInvited: [PKRoomID] Second stage: B接受挑戰 Second stage_option2: B拒絕挑戰 Third stage: B加入等待間 Fourth stage: B準備 ## MimiMao ### 帳號群 peter, peter@gmail.com, pppppp gary, gary@gmail.com, gggggg amber, amber@gmail.com, qqqqqq 無敵戰神, wargod@gmail.com, pppppp ### Class資料 - AuthVC authController 為登入頁面 Register 功能也在裡面, 由於登出就會退出程式, 所以一進入 Auth 頁面就會 present descriptionVC 來做程式估能介紹。 - Register 分為四個步驟 , 每部重複UI多,做了一個 basicVC 給 四個步驟繼承,最後Create Data -> FireStroe 並把user 傳給 全域 God.user 以供其他VC 方便使用 - TabbarVC 假如是 authVC 登入 會在拿完 user 後才跑 swipeVC Tabbar locationManager 詢問 user 位置權限 , 上傳位址資料 - swipeVC Get firestore [user] 顯示卡片上, 點擊卡片, 會出現userDetail dailyCount 觀察今天滑動的次數, userDefault 過一天會重置, 如果滑到的 user 也like ,配對成功,即可聊天( ChatVC ) - LeaderVC 顯示各個user 的 likeCount , 點擊會出先 userDetailVC , 若發現 user 不當行為 , 按下檢舉 reportVC. 寫行為,寄出email for 開分人員. - userDetailVC User 上傳幾張照片, collection 就多少張 - ChatListVC If 無成功配對之對象,顯示emptyLabel , 有成功配對, 顯示 user name , lastMessage , lastMessage Date , 點擊進入聊天 , 若 user 不當行為, 左滑 可以封鎖該 user , update user dislike - ChatVC 使用 第三方MessageKit, 實作 訊息 和 照片功能 傳送訊息 update Message , date , sorted Messages 找出lastMessage , 傳送照片 update to Storage , sorted photo Date . - homeVC 使用者一定有 MainPhoto ,只可更換無法刪除 , 其他照片可以新增, update Storage 自我介紹 上限 100 字 更換 ChatVC background , save to userDefault 可以提供意見 , opinion 寄email 給開發人員 - Localize 支援 English , Chinese ( Traditional )