iOS Swift & FireBase 玩上雲端囉
學習主題
• 社群成立目的簡介
• 自我介紹與哈啦
• 功力複習
• 程式實作(Swift)
• 問題與交流
個人簡介
諸葛魔斌
工作室:諸葛魔斌科技創作室
學歷:高應大---工管系(非資訊科系)
E-Mail:chugermobin@gmail.com
官方網站:http://twcts.com
Facebook:https://goo.gl/volM7Z
粉絲團 :https://goo.gl/LI08wh
社群 :https://goo.gl/kjCsz1
Line (id) :http://goo.gl/ayGW7d
Line@ :http://goo.gl/pQHjWH
Line Bot :http://goo.gl/ljdxfV
Play商店:http://goo.gl/CkVdsd
App Store:http://apple.co/1Qehd64
專長:VB(VBA)、C#、Java(Android)、Swift(iOS)、PHP、Python、Conrona、
Golang、Unity、MySQL、FreeBSD、Server架設、CAD 、 ……
楊政斌
Swift 玩 FireBase
Firebase 是什麼?
Firebase 是一個同時支援 Android、iOS 及網頁的 app 雲端開發平台,協助 app 開發者在雲端快速
建置後端服務,提供即時資料庫,有效縮短 app開發時間,並幫助開發者更專注在前端的優化,這
次大幅改版後主要分成一個主要核心以及三大類功能:
Firebase 數據分析功能(Firebase Analytics): 強大的無限量數據分析功能正是 Firebase 的產
品核心,目前是全免費使用,有預設的 500 種事件類型,提供無上限的事件記錄,還可以自定義關
鍵事件以及使用者屬性,視覺化的的儀表板(Dashboard)讓使用者一眼看到所有最重要的使用者
行為和行銷活動的成效分析。
Swift 玩 FireBase
1.開發 (Develop):使用 Firebase 打造高品質的 app,安全且高效能,提供的後端服務包含即時資料庫
(Realtime database)、簡單的身分驗證模組(Authentication)、雲端訊息(Cloud Messaging)、主機
(Hosting)、檔案儲存(Storage)、及遠端配置(Remote Config),並提供 Android 測試實驗室(Test Lab
for Android)以及當機報告(Crash Reporting)等讓開發者可以輕鬆測試 app 在不同的 OS 與硬體裝置下的表現,
快速發現問題並確保 app 運行品質。
2.成長(Grow):Firebase 讓開發者可以輕鬆設定訊息推播系統 (notifications)、app 索引功能(App
Indexing)、動態連結(Dynamic Links)、email 及 sms 邀請功能(Invites)、以及與 Google AdWords 的深度
整合串接 app 行為資料,讓 app 開發者能提供更精準的廣告或溝通訊息給對的目標族群。
3.獲利(Earn):與自家產品 AdMob 整合,加入廣告聯播網,輕鬆放入廣告版位,以及多元化的廣告格式,以及
更清楚的追蹤機制,幫助 app開發者輕鬆獲利。
Swift 玩 FireBase
1. 事件紀錄無上限
這當然是對資源有限的初期開發者最重要的事,特別是如果你的使用者數量不斷成長卻預算有限,不
像 Flurry 有事件記錄的限制(300 Events for each app),Firebase 有 500 種預設的事件類型,而且
記錄總量無上限,還有只要使用 Firebase SDK,無需編寫額外的程式碼即可自動收集的事件例如:
•First_open :使用者初次開啟應用程式時
•In_app_purchase:當使用者透過 iTunes 的 App Store 或 Google Play 完成應用程式內購時。產品
ID、產品名稱、幣別和購買數量會回傳到系統做為參數。
•App_update:當應用程式更新為新版本並再次啟動時。應用程式前一版的版本 ID 會回傳到系統做為
參數。
•App_remove(僅限 Android):當應用程式套件移除或從 Android 裝置中「解除安裝」時
•os_update:當裝置的作業系統更新為新版本時。前一個作業系統的版本 ID 會回傳到系統做為參數。
•App_exception : 當應用程式當機或擲回例外狀況時。
•notification_open:當使用者開啟 Firebase 雲端通訊傳送的通知時。
Swift 玩 FireBase
2. 支援原始資料自動匯出
如果有巨量的資料處理分析需求, Firebase 有支援 BigQuery 的自動匯出功能 (Google雲端資
料倉儲分析服務,可讓企業針對PB等級的資料執行類似 SQL 的分析查詢),在設定連結後,即
可輕鬆存取未取樣的原始事件資料和所有參數及使用者屬性。
一旦將 Firebase 應用程式連結到 BigQuery 專案,Firebase 數據分析會每日將事件資料匯出至對
應的 BigQuery 資料集。 BigQuery 也可整合其他資料進行分析,像是將外部來源 ,例如顧客終
身價值 (LTV) 等資料紀錄的資料加入 Fireba
Swift 玩 FireBase
3. 可直接行動的分析工具
•自訂目標對象(Custom Audiences):Firebase 讓你可以按裝置、事件 (例如 session_start 或 level_up)
或使用者資源 (例如年齡、性別、語言) 來區隔使用者。在應用上可以推播給特定區隔,廣告上可將專案連
結至 AdWords 之後,就可以將目標對象清單匯出到 AdWords,更精準的投遞廣告,也可以和 AdMob 連結
後,在AdMob 中使用 Firebase 數據分析資料。
Swift 玩 FireBase
•推播訊息(notification):不再一定需要工程師,PM 和 行銷人員也可以學會使用 Firebase ,輕鬆設定傳送
訊息與指定時間給指定目標對象或全部使用者,吸引使用者回訪應用程式、有效推廣行銷廣告活動,系統傳送
訊息後,指定的用戶端裝置如果在背景執行該應用程式,就會在系統通知匣中收到通知。使用者點擊通知後,
應用程式啟動器就會開啟應用程式。在自訂轉換追蹤後,也能輕鬆追蹤每一次推播的成效。
Swift 玩 FireBase
•A/B Testing:Firebase 有強大的遠端設定(Remote Config)的功能可以讓使用者無須更新 APP 就可以看到新
的 app 內容或外觀,開發者還可以設定只顯示更新給特定的目標對象,或甚至是隨機挑選一定比例的使用者,幫
忙開發者更容易進行準確的 A/B 測試。
•動態連結 (Dynamic Links):Firebase 動態連結是應用程式中的深層連結(deep links)的進一步應用,動態連
結可以設定使用者在不同 device 環境下開啟連結後觸發不同的動作, 開啟未安裝的應用程式中的動態連結,畫
面上就會開啟該應用程式的 Play 商店網頁,方便使用者安裝應用程式,使用者安裝並開啟應用程式後,應用程
式就會顯示深層連結抵達的內容,讓使用者體驗不中斷,因此可以針對不同行銷活動,不同目標族群設計客製化
的抵達頁面,大幅提升新使用者體驗。在歸屬上,也能使用不同的動態連結,清楚掌握不同行銷渠道的成效。
Swift 玩 FireBase
可能有很多朋友會問,同樣都是 Google 自己的分析產品,那老牌的 Google Analytics 不是也可以做 APP 的分析
嗎?關於產品的定位和未來發展, Google 自己在官方部落格說的很清楚了:「Firebase 分析功能現在是
Google 官方推薦針對行動分析工具的解決方案!」(Firebase Analytics is now Google’s recommended
solution for mobile app analytics.)也建議大家如果同時有網站就使用 GA 做網站分析,Firebase Analytics 做
APP 分析。
雖然由於產品仍然相當新,再加上免費無限的框架下,有很多功能還不盡完善,像是在儀表板缺乏時間的屬性來
做進一步的篩選與分析,也沒辦法輸出成 CSV 自己做分析,需要透過 BigQuery,還有 iOS 要等 24 小時才會有
數據等等,但是相信對於資源缺乏的新創公司在考慮免費分析工具的選擇上,又兼具後端開發的功能,Firebase
仍不失為是有力的行動數據分析解決方案。
Swift 玩 FireBase
https://console.firebase.google.com
輸入專案名稱
Swift 玩 FireBase
選擇台灣
Swift 玩 FireBase
點選 Database
Swift 玩 FireBase
Database 所在網址
建立欄位和資料
Swift 玩 FireBase
建立新的空白專案
專案識別(名稱)
Swift 玩 FireBase
開啟終端機,進到專案資料夾
執行 pod init,建立 Podfile 文件
編輯 Podfile 文件
Keyin 輸入後存檔
Swift 玩 FireBase
建立 FireBase SDK
使用開啟 xcworkspace 檔案
Swift 玩 FireBase
使用開啟 xcworkspace 檔案
Swift 玩 FireBase
點選專案設定
Swift 玩 FireBase
點選 iOS
Swift 玩 FireBase
輸入專案識別(名稱)
Swift 玩 FireBase
下載連結設定檔
Swift 玩 FireBase
將連結設定檔拉(複製)
到專案底下
Swift 玩 FireBase
建立連結設定
要打勾
Swift 玩 FireBase
建立連結設定
Swift 玩 FireBase
Import Firebase
設定 Firebase 配置
Swift 玩 FireBase
佈局配置
TextField
Button
Label
Swift 玩 FireBase
建立簡單欄位和資料
Swift 玩 FireBase
開放讀寫權限
Swift 玩 FireBase
撰寫程式碼
Import Firebase
物件宣告
寫入 FireBase
讀取 FireBase
讀取 FireBase
import UIKit
import Firebase
classViewController: UIViewController {
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var labetFirebase: UILabel!
let rootRef = FIRDatabase.database().reference()
var snap: FIRDataSnapshot!
@IBAction func theButton(sender: UIButton) {
let s = textField.text
_ = rootRef.child("condition").setValue(s)
//let conditionRef = rootRef.child("condition")
//conditionRef.setValue(s)
}
Swift 玩 FireBase
寫入 FireBase
(兩種作法)
連結 FireBase
物件宣告
override func viewDidLoad() {
super.viewDidLoad()
let conditionRef = rootRef.child("condition")
// Do any additional setup after loading the view, typically from a nib.
conditionRef.observeEventType(.Value, withBlock: {
snap in self.labetFirebase.text = snap.value?.description
})
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
let conditionRef = rootRef.child("condition")
conditionRef.observeEventType(.Value) { snap in print("FireBase: (snap.value?.description)")
}
}
}
Swift 玩 FireBase
設定讀取欄位
顯示資料
顯示資料
結論: 1. 安裝 Ruby、cocoapods、FireBase
2. 使用 Google 帳號登入 FireBase
3. 安裝 FireBase SDK,注意 Podfile 設定
6. 學習階段,務必一字一字『抄』,切勿『複製貼上』
7. 大膽嘗試,好奇無罪
8. 不怕失敗,學習除錯
9. 勇於分享
4. 安裝連結設定檔(專案識別名稱一致)
5. 程式欄位對應
Swift 玩 FireBase
Swift 玩 FireBase
第八、九、十次聚會學習課程
Android Strudio & FireBase 玩上雲端囉
iOS Swift / Android Strudio & FCM玩推播服務
學習不能中斷,卡關不要氣餒,
讓我們的熱血繼續揮撒在程式的樂趣吧!!
帶著你的筆電,和我們一起享受Coding Fun
註:我們學習的是多系統,所以筆電最好是Macbook哦!
日期:9/21(星期三) 18:30~21:30 FireBase 玩上雲端囉
10/5、19(星期三) 18:30~21:30 FCM 玩推播服務
地點:高雄市前鎮區一心二路157號10樓之4(微盛科技)
捷運三多商圈站4號出口,步行約10分鐘
歡迎踴躍報名,也歡迎高手協助指導
費用:0元(珍惜學習資源)

iOS Swift & FireBase 玩上雲端囉

  • 1.
    iOS Swift &FireBase 玩上雲端囉
  • 2.
    學習主題 • 社群成立目的簡介 • 自我介紹與哈啦 •功力複習 • 程式實作(Swift) • 問題與交流
  • 3.
    個人簡介 諸葛魔斌 工作室:諸葛魔斌科技創作室 學歷:高應大---工管系(非資訊科系) E-Mail:chugermobin@gmail.com 官方網站:http://twcts.com Facebook:https://goo.gl/volM7Z 粉絲團 :https://goo.gl/LI08wh 社群 :https://goo.gl/kjCsz1 Line(id) :http://goo.gl/ayGW7d Line@ :http://goo.gl/pQHjWH Line Bot :http://goo.gl/ljdxfV Play商店:http://goo.gl/CkVdsd App Store:http://apple.co/1Qehd64 專長:VB(VBA)、C#、Java(Android)、Swift(iOS)、PHP、Python、Conrona、 Golang、Unity、MySQL、FreeBSD、Server架設、CAD 、 …… 楊政斌
  • 4.
    Swift 玩 FireBase Firebase是什麼? Firebase 是一個同時支援 Android、iOS 及網頁的 app 雲端開發平台,協助 app 開發者在雲端快速 建置後端服務,提供即時資料庫,有效縮短 app開發時間,並幫助開發者更專注在前端的優化,這 次大幅改版後主要分成一個主要核心以及三大類功能: Firebase 數據分析功能(Firebase Analytics): 強大的無限量數據分析功能正是 Firebase 的產 品核心,目前是全免費使用,有預設的 500 種事件類型,提供無上限的事件記錄,還可以自定義關 鍵事件以及使用者屬性,視覺化的的儀表板(Dashboard)讓使用者一眼看到所有最重要的使用者 行為和行銷活動的成效分析。
  • 5.
    Swift 玩 FireBase 1.開發(Develop):使用 Firebase 打造高品質的 app,安全且高效能,提供的後端服務包含即時資料庫 (Realtime database)、簡單的身分驗證模組(Authentication)、雲端訊息(Cloud Messaging)、主機 (Hosting)、檔案儲存(Storage)、及遠端配置(Remote Config),並提供 Android 測試實驗室(Test Lab for Android)以及當機報告(Crash Reporting)等讓開發者可以輕鬆測試 app 在不同的 OS 與硬體裝置下的表現, 快速發現問題並確保 app 運行品質。 2.成長(Grow):Firebase 讓開發者可以輕鬆設定訊息推播系統 (notifications)、app 索引功能(App Indexing)、動態連結(Dynamic Links)、email 及 sms 邀請功能(Invites)、以及與 Google AdWords 的深度 整合串接 app 行為資料,讓 app 開發者能提供更精準的廣告或溝通訊息給對的目標族群。 3.獲利(Earn):與自家產品 AdMob 整合,加入廣告聯播網,輕鬆放入廣告版位,以及多元化的廣告格式,以及 更清楚的追蹤機制,幫助 app開發者輕鬆獲利。
  • 6.
    Swift 玩 FireBase 1.事件紀錄無上限 這當然是對資源有限的初期開發者最重要的事,特別是如果你的使用者數量不斷成長卻預算有限,不 像 Flurry 有事件記錄的限制(300 Events for each app),Firebase 有 500 種預設的事件類型,而且 記錄總量無上限,還有只要使用 Firebase SDK,無需編寫額外的程式碼即可自動收集的事件例如: •First_open :使用者初次開啟應用程式時 •In_app_purchase:當使用者透過 iTunes 的 App Store 或 Google Play 完成應用程式內購時。產品 ID、產品名稱、幣別和購買數量會回傳到系統做為參數。 •App_update:當應用程式更新為新版本並再次啟動時。應用程式前一版的版本 ID 會回傳到系統做為 參數。 •App_remove(僅限 Android):當應用程式套件移除或從 Android 裝置中「解除安裝」時 •os_update:當裝置的作業系統更新為新版本時。前一個作業系統的版本 ID 會回傳到系統做為參數。 •App_exception : 當應用程式當機或擲回例外狀況時。 •notification_open:當使用者開啟 Firebase 雲端通訊傳送的通知時。
  • 7.
    Swift 玩 FireBase 2.支援原始資料自動匯出 如果有巨量的資料處理分析需求, Firebase 有支援 BigQuery 的自動匯出功能 (Google雲端資 料倉儲分析服務,可讓企業針對PB等級的資料執行類似 SQL 的分析查詢),在設定連結後,即 可輕鬆存取未取樣的原始事件資料和所有參數及使用者屬性。 一旦將 Firebase 應用程式連結到 BigQuery 專案,Firebase 數據分析會每日將事件資料匯出至對 應的 BigQuery 資料集。 BigQuery 也可整合其他資料進行分析,像是將外部來源 ,例如顧客終 身價值 (LTV) 等資料紀錄的資料加入 Fireba
  • 8.
    Swift 玩 FireBase 3.可直接行動的分析工具 •自訂目標對象(Custom Audiences):Firebase 讓你可以按裝置、事件 (例如 session_start 或 level_up) 或使用者資源 (例如年齡、性別、語言) 來區隔使用者。在應用上可以推播給特定區隔,廣告上可將專案連 結至 AdWords 之後,就可以將目標對象清單匯出到 AdWords,更精準的投遞廣告,也可以和 AdMob 連結 後,在AdMob 中使用 Firebase 數據分析資料。
  • 9.
    Swift 玩 FireBase •推播訊息(notification):不再一定需要工程師,PM和 行銷人員也可以學會使用 Firebase ,輕鬆設定傳送 訊息與指定時間給指定目標對象或全部使用者,吸引使用者回訪應用程式、有效推廣行銷廣告活動,系統傳送 訊息後,指定的用戶端裝置如果在背景執行該應用程式,就會在系統通知匣中收到通知。使用者點擊通知後, 應用程式啟動器就會開啟應用程式。在自訂轉換追蹤後,也能輕鬆追蹤每一次推播的成效。
  • 10.
    Swift 玩 FireBase •A/BTesting:Firebase 有強大的遠端設定(Remote Config)的功能可以讓使用者無須更新 APP 就可以看到新 的 app 內容或外觀,開發者還可以設定只顯示更新給特定的目標對象,或甚至是隨機挑選一定比例的使用者,幫 忙開發者更容易進行準確的 A/B 測試。 •動態連結 (Dynamic Links):Firebase 動態連結是應用程式中的深層連結(deep links)的進一步應用,動態連 結可以設定使用者在不同 device 環境下開啟連結後觸發不同的動作, 開啟未安裝的應用程式中的動態連結,畫 面上就會開啟該應用程式的 Play 商店網頁,方便使用者安裝應用程式,使用者安裝並開啟應用程式後,應用程 式就會顯示深層連結抵達的內容,讓使用者體驗不中斷,因此可以針對不同行銷活動,不同目標族群設計客製化 的抵達頁面,大幅提升新使用者體驗。在歸屬上,也能使用不同的動態連結,清楚掌握不同行銷渠道的成效。
  • 11.
    Swift 玩 FireBase 可能有很多朋友會問,同樣都是Google 自己的分析產品,那老牌的 Google Analytics 不是也可以做 APP 的分析 嗎?關於產品的定位和未來發展, Google 自己在官方部落格說的很清楚了:「Firebase 分析功能現在是 Google 官方推薦針對行動分析工具的解決方案!」(Firebase Analytics is now Google’s recommended solution for mobile app analytics.)也建議大家如果同時有網站就使用 GA 做網站分析,Firebase Analytics 做 APP 分析。 雖然由於產品仍然相當新,再加上免費無限的框架下,有很多功能還不盡完善,像是在儀表板缺乏時間的屬性來 做進一步的篩選與分析,也沒辦法輸出成 CSV 自己做分析,需要透過 BigQuery,還有 iOS 要等 24 小時才會有 數據等等,但是相信對於資源缺乏的新創公司在考慮免費分析工具的選擇上,又兼具後端開發的功能,Firebase 仍不失為是有力的行動數據分析解決方案。
  • 12.
  • 13.
  • 14.
  • 15.
    Swift 玩 FireBase Database所在網址 建立欄位和資料
  • 16.
  • 17.
    Swift 玩 FireBase 開啟終端機,進到專案資料夾 執行pod init,建立 Podfile 文件 編輯 Podfile 文件 Keyin 輸入後存檔
  • 18.
    Swift 玩 FireBase 建立FireBase SDK 使用開啟 xcworkspace 檔案
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
    Swift 玩 FireBase ImportFirebase 設定 Firebase 配置
  • 28.
  • 29.
  • 30.
  • 31.
    Swift 玩 FireBase 撰寫程式碼 ImportFirebase 物件宣告 寫入 FireBase 讀取 FireBase 讀取 FireBase
  • 32.
    import UIKit import Firebase classViewController:UIViewController { @IBOutlet weak var textField: UITextField! @IBOutlet weak var labetFirebase: UILabel! let rootRef = FIRDatabase.database().reference() var snap: FIRDataSnapshot! @IBAction func theButton(sender: UIButton) { let s = textField.text _ = rootRef.child("condition").setValue(s) //let conditionRef = rootRef.child("condition") //conditionRef.setValue(s) } Swift 玩 FireBase 寫入 FireBase (兩種作法) 連結 FireBase 物件宣告
  • 33.
    override func viewDidLoad(){ super.viewDidLoad() let conditionRef = rootRef.child("condition") // Do any additional setup after loading the view, typically from a nib. conditionRef.observeEventType(.Value, withBlock: { snap in self.labetFirebase.text = snap.value?.description }) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) let conditionRef = rootRef.child("condition") conditionRef.observeEventType(.Value) { snap in print("FireBase: (snap.value?.description)") } } } Swift 玩 FireBase 設定讀取欄位 顯示資料 顯示資料
  • 34.
    結論: 1. 安裝Ruby、cocoapods、FireBase 2. 使用 Google 帳號登入 FireBase 3. 安裝 FireBase SDK,注意 Podfile 設定 6. 學習階段,務必一字一字『抄』,切勿『複製貼上』 7. 大膽嘗試,好奇無罪 8. 不怕失敗,學習除錯 9. 勇於分享 4. 安裝連結設定檔(專案識別名稱一致) 5. 程式欄位對應 Swift 玩 FireBase
  • 35.
  • 36.
    第八、九、十次聚會學習課程 Android Strudio &FireBase 玩上雲端囉 iOS Swift / Android Strudio & FCM玩推播服務 學習不能中斷,卡關不要氣餒, 讓我們的熱血繼續揮撒在程式的樂趣吧!! 帶著你的筆電,和我們一起享受Coding Fun 註:我們學習的是多系統,所以筆電最好是Macbook哦! 日期:9/21(星期三) 18:30~21:30 FireBase 玩上雲端囉 10/5、19(星期三) 18:30~21:30 FCM 玩推播服務 地點:高雄市前鎮區一心二路157號10樓之4(微盛科技) 捷運三多商圈站4號出口,步行約10分鐘 歡迎踴躍報名,也歡迎高手協助指導 費用:0元(珍惜學習資源)