這篇翻譯斷斷續續花了好幾天,主要是太長了。翻譯得對得起讀者也得對得起自己,我可不能直接粘貼複製用軟件直接翻譯吧。
建議英文閱讀能力不錯的直接看原文英文版的,不用看我翻譯的“三不像”了。
【翻譯的目的】:通過翻譯鍛鍊英文閱讀能力+語言表達能力+方便不喜歡讀原文的人
移動應用程序爲了實現一些業務是需要一個後端服務器的,比如用戶身份驗證和同步用戶數據跨多個設備。然而,創建這樣一個服務器需要有這樣的技能,並且大多數獨立應用程序開發者欠缺這樣的技能。幸運的是,現今有幾個後端服務平臺,通常被稱爲BaaS可以供我們使用。谷歌的Firebase
就是這樣的一個平臺。
Firebase
提供了必要的服務例如數據分析,崩潰以及異常報告,用戶身份驗證和雲短信,這都是免費的服務。它的免費增值服務還包括一個實時NoSQL數據庫,文件託管和靜態網站。
在本教程中,我將向您展示如何使用Firebase
爲你的Android應用程序添加用戶身份驗證、分析和遠程數據存儲。
Prerequisites
接下來的步驟,你將需要:
- Android Studio 2.2 RC2 or higher
1.Using Firebase Analytics(使用Firebase 分析)
Firebase
提供的分析方案是一種最受歡迎的手機應用程序分析解決方案。通過使用它,您可以得到一個準確的瞭解:你的用戶是誰,他們是如何使用你的應用的。
Step 1: Set Up Firebase Analytics
最新的Android studio
內置了支持Firebase 分析。這意味着您可以添加Firebase 分析,而不用脫離Android studio.
開始集成 Firebase analytics 於你的項目中,點擊Tools>Firebase.你將會看到如下提示窗:
點擊Analytics 然後記錄一個Analytics 時間
你現在必須把Android Studio項目和Firebase項目結合起來。所以,點擊
Connect to Firebase 按鈕。
在彈出的對話框中,你可以看到現有的所有的Firebase projects.你可以選擇其中一個或者選擇新建一個項目。現在,我建議你選擇 Create new Firebase project 選項,並且爲這個項目取一個獨一無二的名字。
一旦你在裏面的對話框中按下這個 Add Analytics to your app 按鈕,Android Studio 將自動的更改所有必要的配置,比如生成一個google-services.java 文件並且上傳一個SHA1簽名(指紋)。
現在你可以點擊 Add Analytics to your app 按鈕,把
Firebase插件和Firebase核心依賴組件整合到你的項目中去。Android Studio 將會告訴你確切的改變,以及寫入build.gradle文件中去。
點擊Accept Changes 完成配置。
Step 2: Generate Analytics Events(生成分析事件)
在你app上配置了Firebase Analytics後,如果你對自動生成分析事件滿意,你不需要寫任何額外的代碼,譬如用戶第一次打開你的app、使用它超過十秒、正在app內消費或者卸載你的app。因此,你可以在未來24小時內運行你的app程序在模擬器上或者真機上,你將能夠看到分析日誌在Firebase的控制檯上。
如果你想更加深入的分析你的用戶行爲,你可以生成自定義分析事件,手動的使用FirebaseAnalytics類中的logEvent()方法。這個方法有兩個參數:String 型的自定義事件的確切的名字,一個包含事件詳情的Bundle對象。
舉個例子:如果你想讓你的用戶點擊一個特定的按鈕觸發一個你生成的自定義事件my_custom_event,你需要添加如下代碼在按鈕的點擊處理器中:
// Create an instance of FirebaseAnalytics
FirebaseAnalytics fa = FirebaseAnalytics.getInstance(this);
// Create a Bundle containing information about
// the analytics event
Bundle eventDetails = new Bundle();
eventDetails.putString("my_message", "Clicked that special button");
// Log the event
fa.logEvent("my_custom_event", eventDetails);
大多時候,自定義事件在Firebase console中的那些自動被收集的事件中是無法區分的。
需要注意的是,事件名稱是區分大小寫的。因此,這是一個好主意,你所有的事件名稱定義爲常量字符串。或者,您可以使用預定義的事件名稱常量,在FirebaseAnalytics.Event類中也是可用的。
2. Using Firebase Auth(使用認證)
如今,對於大多數app來說,用戶認證是一個很重要的需求。通過用戶保密的認證(唯一的標示),你可以根據她們的興趣和喜好提供定製化的體驗。你也可以確保他們可以在不同設備上獲取到他們的隱私數據。
Firebase Auth 允許通過不同的登錄認證機制去認證你的用戶。在本教程,我將演示如何讓你的用戶可以用他們的郵箱地址以及登錄密碼在你的app上註冊。
Step 1: Configure Your Project(配置你的項目)
爲了讓你Android Studio項目能使用Firebase Auth,你必須在你module’s build.gradle文件下添加如下依賴:
1 compile 'com.google.firebase:firebase-auth:9.4.0'
Step 2: Enable Password-Based Authentication
默認下,Firebase不允許用戶認證。因此,你必須手動啓動 password-based user authentication 在Firebase 控制檯。to do so,切換到Auth 選項,點擊Set up sign-in method 按鈕。你將可以看到一系列可以使用的Sign-in providers
選擇Email/Password,啓動它,點擊保存。
Step 3: Support User Registration(支持用戶註冊)
使用基於密碼的身份認證,現在用戶必須通過提供一個獨一無二的郵箱地址和密碼來註冊。爲了添加這個功能到你的app,你可以使用FirebaseAuth類中的createUserWithEmailAndPassword( )方法。正如方法名所寫的,方法需要兩個參數:郵箱地址、密碼。
爲了能夠得到createUserEmailAndPassword( )方法的結果,在使用addOnCompleteLister()方法時你必須添加一個監聽器OnCompleteListener。下面的代碼片段將向你展示如何註冊新用戶以及回調這個註冊進程是否成功。
FirebaseAuth.getInstance()
.createUserWithEmailAndPassword(emailAddress, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()) {
// User registered successfully
}
}
});
該注意的是,你的職責還有驗證Email的正確性以及確保用戶使用了比較牢固不易破解的密碼。
你可以在Firebase控制檯的Auth選項中的User選項卡中查看那些成功註冊了的用戶的賬戶信息:郵箱地址。
Step 4: Support User Sign-In(支持用戶登錄)
成功註冊後,用戶將自動登錄。即使你的app重新啓動,用戶也將還繼續保持着登錄的狀態。不過,你的app也必須部署可以手動登錄的功能。
用戶手動的登錄,你必須使用FirebaseAuth類的signInWithEmailAndPassword( )方法,這個方法有兩個參數:郵箱地址、密碼。這個方法還返回一個Task<AuthResult>
類型的對象。通過添加一個onCompleteListener
,你可以檢查到是否成功登錄你的app。
爲了避免已經登錄的用戶再次“登錄”,只用當 當前的FirebaseUser
對象爲空的時候,你才必須調用signInWithEmailAndPassword()
方法。
下面的代碼片段演示用戶如何登錄:
FirebaseAuth auth = FirebaseAuth.getInstance();
if (auth.getCurrentUser() != null) {
// Already signed in
// Do nothing
} else {
auth.signInWithEmailAndPassword(emailAddress, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// User signed in successfully
}
}
});
}
Step 5: Support User Sign-Out(支持用戶退出)
用戶退出,可以簡單的調用FirebaseAuth類
中的signOut()方法
FirebaseAuth.getInstance().signOut();
3. Using Firebase’s Real-Time Database(使用Firebase的實時數據庫)
Firebase平臺其中一個最強大的特點就是它的實時數據庫,之所以這樣說是有一個好原因:所以的寫操作在所有的客戶端上都可以同步看的到。在這樣的數據庫下,你可以創建一個允許用戶無縫地在設備間轉移的應用,並且立即可以協作。(這個感覺和 有道雲協作 差不多)
Step 1: Configure Your Project(配置工程)
使用real-time database 實時數據庫之前,你需要在你module’s的build.gradle
文件裏面添加compile
依賴:
compile 'com.google.firebase:firebase-database:9.4.0'
Step 2: Write Data(寫入數據)
你可以認爲實時數據庫存儲的是JSON對象,這就表明你可以添加key-value鍵值對進數據庫。key是String
類型,但是value可以是:primitives, arrays,
或其他 JSON objects
。
數據寫入實時數據庫前,你必須通過FirebaseDatabase
類中的getInstance()方法
獲得數據庫的一個引用(對象)。然後通過使用getReference()方法
你可以得到一個在數據庫(任何路徑)中的引用(key),路徑中可以包含一個鍵或按層次結構排列的幾個鍵。
當你得到一個路徑的一個DatabaseReference
(key的引用),你可以使用setValue()
方法設置value的值。
下面的 代碼片段表示如何添加一個簡單的key-value鍵值對到數據庫中:
FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference ref = db.getReference("message"); // Key
ref.setValue("This is a test message"); // Value
去到Firebase console的Database選項卡,你可以查看實時數據庫中的所有數據。
Step 3: Read Data(讀取數據)
爲了從實時數據庫中讀取數據,你必須附加一個異步觀察者到關聯的key
或路徑。更準確地說,你必須使用addValueEventListener()方法
給DatabaseReference對象
關聯一個ValueEventListener
ValueEventListener
的onDataChange()
方法允許您訪問DataSnapshot
對象,其可以使用getValue()
方法來檢索key對應的最新Value。
如下代碼演示如何獲取最新的value:
FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference ref = db.getReference("message"); // Key
// Attach listener
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Retrieve latest value
String message = dataSnapshot.getValue(String.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Error handling
}
});
要注意的是,一旦ValueEventListener
被使用,任何時候當value被監聽到有改變,它的onDataChange( )方法都會被觸發。
Conclusion
谷歌Firebase platform
讓開發者專注於開發一個更好的app而不是糾結於後臺服務。在本教程,你學習瞭如何使用這個平臺來添加anaytics、用戶認證、實時雲存儲數據倉庫到你的app中。
要想學習更多有關Firebase的使用,你可以參考官方教程在使用Firebase Crash Reporting時候,你也可以查閱另一篇文章Android From Scratch: Firebase Crash Reporting