2018年4月11日 星期三

iOS 導入 Firebase 的 Crashlytics

*Firebase 的 Crash Reporting 已經不再支援,要用相似的功能要用 Crashlytics
*Firebase 的 Crashlytics 是跟 Fabric 整合
*Firebase Crashlytics 非立刻 crash 就會立刻顯示

步驟:

  1. 專案中加入 Firebase
  2. 專案中加入 Firebase Crashlytics
  3. Firebase Console 加入你的專案
  4. 加入直接導致 crash 的程式
  5. 上傳 Firebase Crashlytics .DSYM 檔
    1. 專案設定
    2. build
    3. 壓縮成zip檔上傳


小撇步:

步驟1:等很久都沒有出現可在 Podfile 加入 pod 'Firebase/Core'

步驟2:無法  pod install

如果紅字推薦的 pod repo update 無用
可以參考網址

debug view - 是否有觸發Firebase

2018年3月14日 星期三

iOS app 中實作 Siri

前置作業


使用範圍


實作過程:





新增target


我在做到這裡的時候遇到了問題,Siri會跟我說我的app還沒設定好,但是同樣的app在別台ipad可以正常執行。推測是作業系統版本問題。

如果Siri一直說未設定完成,可以換一台ipad試試。

進入debug mode

案例舉例


新增情境








2017年12月12日 星期二

心得』NCC 喜佳 CC-1829 縫紉機開箱

購入地點:新光三越縫紉展
狀況:二手

我是完全沒有使用過縫紉機的新手,
當下因為活動體驗,工作人員會教怎麼使用,覺得縫紉機真是太方便了!
就購入了。

他有比較便宜的全新的機型,
我當下爬文比較,網路上的人說要買『全迴旋』,水平可以看到下線剩餘的量。
我因為沒有使用過,感受不出哪台機子比較穩、好車、我需要什麼,
不想花大錢買到不合我需求的,選擇先購入二手。

這台機型(CC-1829)我覺得挑得沒錯,但如果預算夠可以買全新的。

開箱照片如下:










2017年10月30日 星期一


2017年10月25日 星期三

iOS 串接 Firebase 的 Database 無網路狀況

•會同步
•畫面在app內,斷線又恢復網路
•跳回桌面(短時間過後),有網路會直接同步
•跳回桌面(長時間過後),回到app(不從應用程式佇列滑掉)

•同步失敗
•從應用程式佇列滑掉,離線時做的事情就會不見


•假裝依然有網路
將資料寫入手機,沒網路依然可以動作,且將app從應用程式佇列滑掉,重開app又有網路後,依然會把斷線做的事同步。
Database.database().isPersistenceEnabled = true

2017年10月17日 星期二


iOS 串接 Firebase 的 Database

Firebase 官方網站:https://firebase.google.com/
要實作分為兩個部分:
第一部分:為專案加入 Firebase
第二部分:實作 Database 基礎功能

第一部分:

  1. 先創專案
  2. 為專案安裝 Firebase,並在專案中實現

  • 官方講解如何安裝 Firebase,示範CocoaPods步驟如下 
    • CocoaPods
    • SDK
1.開啟終端機

2.進入你的專案位置
 cd 你的專案位置 
cd 是進入後面位置的指令
ls 看現在的資料夾底下有什麼(就 ls ,後面不需接其他字)

*可以從 Finder 到專案底下,對檔案按右鍵 -> 取得資訊
把位置直接複製貼上終端機

終端機進入資料夾後:

3.創建 Podfile
已經有就不用創,創過再創一次也不會怎樣
 pod init 
4. Podfile 這時候會出現在你的專案底下,把下面這行加入你的 Podfile
 pod 'Firebase/Core' 
 我自己多加了 Database 進來,但我沒有試過沒打會怎樣~

5.最後要安裝你的 Podfile裡面的東西
 pod install 
這時 Firebase 就在你的專案裡了
要開專案要點 . xcworkspace
不是上面的 .xcodeproj


要在專案中實現:
在 AppDelegate.swift 中實現

 import Firebase 

在application:didFinishLaunchingWithOptions:函式底下

 FirebaseApp.configure() 


第二部分:

Firebase的設定:
!記得要把 Firebase 創出的 GoogleService-Info.plist 放到專案裡

權限預設:
不需登入就開放讀寫權限:

我範例的 JSON 格式:


Get a FIRDatabaseReference

var ref: DatabaseReference!
ref = Database.database().reference()


 修改 

修改時會先判斷現在資料庫有沒有這個 key 的值,
沒有的話會變成新增,
所以修改可以當新增用。

self.ref.child("users/(user.uid)/username").setValue(username)
更新內容:

let key = ref.child("posts").childByAutoId().key
let post = ["uid": userID,
            "author": username,
            "title": title,
            "body": body]
let childUpdates = ["/posts/\(key)": post,
                    "/user-posts/\(userID)/\(key)/": post]
ref.updateChildValues(childUpdates)

 新增 

self.ref.child("users").child(user.uid).setValue(["username": username])
可以把不需要的拿掉,驗證身份、child...等

會把原本其他的全部蓋掉

 查詢 

let userID = Auth.auth().currentUser?.uidref.child("users").child(userID!).observeSingleEvent(of: .value, with: { (snapshot) in
  // Get user value
  let value = snapshot.value as? NSDictionary
  let username = value?["username"] as? String ?? ""
  let user = User.init(username: username)

  // ...
  }) { (error) in
    print(error.localizedDescription)
}
取出的是 snapshot

監聽 Database 是否有異動:
// Listen for new comments in the Firebase database
commentsRef.observe(.childAdded, with: { (snapshot) -> Void in
  self.comments.append(snapshot)
  self.tableView.insertRows(at: [IndexPath(row: self.comments.count-1, section: self.kSectionComments)], with: UITableViewRowAnimation.automatic)
})
異動分類:

 刪除 

把值改成 nil 或是 remove 都可以刪除。


 DEMO 

我的範例專案:Github