宅學習 Firebase

Preview:

Citation preview

Firebase介紹演講者:蔡維成

2

outline• 前情提要• 提供的服務• 範例練習

3

前情提要•Google 也強調了 Firebase 增加新的功能的同時也保有了之前的三大原則:•開發者容易上手,資源豐富。•支援跨平台( Android/iOS/Web apps )。•集成開發工具•宣傳影片•Web,android,IOS Quickstart

( 如要開發記得把 sdk 升到最新版,舊版不支援噢! )

4

前情提要•Firebase's primary product is a realtime database which provides an API that allows developers to store and sync data across multiple clients.

5

前情提要•介紹 NoSQL(Not only SQL)大致上分成四種,而每一家的 NoSQL 規定都不太一樣,所以無法互相支援。

─ Key-value Stores─ Document Databases(firebase)─ Graph Databases─ Column Family StoreNoSQL簡介

6

前情提要•Key-value Stores用 hash 表的概念來儲存,給一個 key 就回傳一個值,這個值可以不一致 ex: int , string , a document

7

前情提要•Document Databases

─ 通常以 JSON 的形式來儲存

8

前情提要•JSON線上網站•物件 {} 和陣列 [] ,某方面來說(不考慮資料損失),是可以互相轉換的

9

前情提要

10

前情提要

11

前情提要•Graph Databases他使資料庫與資料庫之間的關係更好連接了,擁有強大的擴張性,方便用於社交系統,關係越複雜越適合用。

12

前情提要•Column Family Store

─ 算是 Key-value Stores 的延伸版,適用於大量資料分佈於很多台主機的情況,一個 key 會對應到不同 column

13

前情提要RDBMS 與 NoSQL 比較 RDBMS NoSQL

資料一致性 是,並且需事情就定義 不一定,通常不一樣資料庫型態更改 困難,一旦定義更改需要耗

費大量成本相較容易,彈性比 SQL 好但遇到大更改可能要比 SQL 難

資料庫查詢能力 強,有 join 的功能 弱,對於複雜的查詢較弱重複性 較易整理,可通過正規化來

減輕負擔除非事前規定不然容易越積

越亂 ( 就像房間一樣 )

擴張 可以加大 CPU,RAM,SSD 加強處理能力,硬碟加大容量

可以加設多個伺服器處理大量流量

14

前情提要•所以 RDBMS 還是 NoSQL 哪個比較好?

不一定

15

提供的服務•分析( Analytics )•身分驗證( Authentication )•即時資料庫( Realtime database )•儲存( Storage )•代管主機( Hosting )•遠端配置( Remote Config )•Android 測試實驗室( Test Lab for Android )•當機報告( crash )

16

提供的服務•通知服務( Notifications )•動態連結( Dynamic Links )•廣告( AdMob )

17

分析( Analytics )•Firebase 以 mobile app analytics 為主所以想要用 web 的話就要用 Google Analytics

•網頁分析

18

身分驗證( Authentication )•可以直接用已存在帳號登入•ex: 用 google , facebook …… 等直接登入而且只要複製 code 就可以了

19

即時資料庫( Realtime database )•以 json 形式儲存•設計成簡單易用的 API•可以處理複雜的即時更新•有需要的話可以用他的 REST API 直接連到自己的伺服器

20

儲存( Storage )•可以儲存圖片 , 聲音 , 影片等等的檔案•( 當然有沒有付費儲存容量有差 )

21

代管主機( Hosting )•可以在自己的電腦 coding ,如果要更新網頁的話,只要一行指令就能把程式上傳到 firebase 的主機,不需要自己架伺服器

22

遠端配置( Remote Config )•如果只是想要修改一些參數,但是又不想讓使用者一直更新的話,可以在 firebase的控制台中設定,把在程式裡設定好的參數做修改,就能完成更新•還可以只針對特定族群來做更新,達成客製化的效果。

23

Android 測試實驗室( Test Lab for Android )•可以在雲端上幫你做 android 的 debug•需要 $_ $

24

當機報告( crash )•如果行動裝置遇到當機時,有使用此功能就會在控制台中顯示錯誤訊息,協助開發者了解發生了什麼事!

25

通知服務( Notifications )•想要通知使用者一些資訊的話,可以使用firebase 的功能,同樣的也可以只發給特定群族,針對性的發給需要的使用者。

26

動態連結( Dynamic Links )•可以針對不同的環境 (ios,android) 來顯示不同的連結,提供更好的使用體驗,如果沒有安裝應用程式的話,還可以引導使用者下載完繼續剛剛想要推薦的東西,讓使用體驗不中斷。

27

廣告( AdMob )•能在你的程式中加入廣告,來賺點錢~•但要注意的是,在開發期間只能使用testad 不然帳號可能會被鎖•廣告官網

28

練習一下•先辦個 firebase 的帳號吧~•新建一個專案 (地區只代表如果獲利要用什麼幣額顯示 )•會看到玲琅滿目的功能,接下來會使用

Authentication Realtime database Storage Hosting

29

練習一下•在想要的路徑下見一個新的資料夾•mkdir filename•cd filename

•npm install -g firebase-tools( 可以下 firebase 的指令 )

•firebase login ( 要求登入開發者的 google)•firebase init(啟動專案 )

30

練習一下•下載官方範例•在你想要的路徑下打進這行

( 不是剛剛的資料夾噢~ )

•打開剛剛下載好的範例•把 web-start裡面的東西複製到 filename public 的路徑裡

ex:public directory ./ 的話就放在根目錄

31

練習一下•可以針對多個專案加入 ( 可以加其他的專案 )•firebase use --add

•firebase deploy( 檔案上傳到 firebase)

•讓它運作! ( 也可以在 locat 端開啟 )•firebase serve

32

練習一下•先來初始我們的 web

•在專案首頁點擊 firebase 加入 web•複製到 index.html 最底下•來開通身份認證•點 auth->google->active

33

練習一下•在 main.js貼上

─ 初始 firebase 的 code─ Signin , Signout code─ Check 使用者是否登入過 code─ 登入者名字與頭像 code─ 讀取訊息─ 儲存訊息─ 儲存影像─ 顯示影像

34

練習一下•設定一下 Database 的權限•主要有四種

─ .write─ .read─ .validate─ .IndexOn( 可以排序,搭配 orderByValue())

35

練習一下•Write 也可以有判斷式

36

練習一下

37

練習一下

38

練習一下

39

練習一下

40

練習一下•不能重複定義

41

練習一下•要完整路徑才能用

42

練習一下•firebase.json 可以決定權限 ,public 哪些檔案與一些設定•如果想要忽略某些檔案不上傳可以加在 hosting裡

"ignore": [ "firebase.json", "database-rules.json", "storage.rules" ]

43

Android 範例•官方 android 的範例有以下功能─ Remote config─ Notifications─ AdMob─ Crash

44

Android 範例•Remote config裡限制訊息長度

─ Long friendly_msg_length = mFirebaseRemoteConfig.getLong(“friendly_msg_length”);

app 不用到 appstore , playstore 就可以隨時調整所需要的功用