編輯:關於Android編程
移動應用程序為了實現一些業務是需要一個後端服務器的,比如用戶身份驗證和同步用戶數據跨多個設備。然而,創建這樣一個服務器需要有這樣的技能,並且大多數獨立應用程序開發者欠缺這樣的技能。幸運的是,現今有幾個後端服務平台,通常被稱為BaaS可以供我們使用。谷歌的Firebase就是這樣的一個平台。
Firebase 提供了必要的服務例如數據分析,崩潰以及異常報告,用戶身份驗證和雲短信,這都是免費的服務。它的免費增值服務還包括一個實時NoSQL數據庫,文件托管和靜態網站。
在本教程中,我將向您展示如何使用Firebase為你的Android應用程序添加用戶身份驗證、分析和遠程數據存儲。
接下來的步驟,你將需要:
Android Studio 2.2 RC2 or higherFirebase 提供的分析方案是一種最受歡迎的手機應用程序分析解決方案。通過使用它,您可以得到一個准確的了解:你的用戶是誰,他們是如何使用你的應用的。
最新的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 完成配置。
在你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類中也是可用的。
如今,對於大多數app來說,用戶認證是一個很重要的需求。通過用戶保密的認證(唯一的標示),你可以根據她們的興趣和喜好提供定制化的體驗。你也可以確保他們可以在不同設備上獲取到他們的隱私數據。
Firebase Auth 允許通過不同的登錄認證機制去認證你的用戶。在本教程,我將演示如何讓你的用戶可以用他們的郵箱地址以及登錄密碼在你的app上注冊。
為了讓你Android Studio項目能使用Firebase Auth,你必須在你module’s build.gradle文件下添加如下依賴:
1 compile 'com.google.firebase:firebase-auth:9.4.0'
默認下,Firebase不允許用戶認證。因此,你必須手動啟動 password-based user authentication 在Firebase 控制台。to do so,切換到Auth 選項,點擊Set up sign-in method 按鈕。你將可以看到一系列可以使用的Sign-in providers
選擇Email/Password,啟動它,點擊保存。
使用基於密碼的身份認證,現在用戶必須通過提供一個獨一無二的郵箱地址和密碼來注冊。為了添加這個功能到你的app,你可以使用FirebaseAuth類中的createUserWithEmailAndPassword( )方法。正如方法名所寫的,方法需要兩個參數:郵箱地址、密碼。
為了能夠得到createUserEmailAndPassword( )方法的結果,在使用addOnCompleteLister()方法時你必須添加一個監聽器OnCompleteListener。下面的代碼片段將向你展示如何注冊新用戶以及回調這個注冊進程是否成功。
FirebaseAuth.getInstance() .createUserWithEmailAndPassword(emailAddress, password) .addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { if(task.isSuccessful()) { // User registered successfully } } });
該注意的是,你的職責還有驗證Email的正確性以及確保用戶使用了比較牢固不易破解的密碼。
你可以在Firebase控制台的Auth選項中的User選項卡中查看那些成功注冊了的用戶的賬戶信息:郵箱地址。
成功注冊後,用戶將自動登錄。即使你的app重新啟動,用戶也將還繼續保持著登錄的狀態。不過,你的app也必須部署可以手動登錄的功能。
用戶手動的登錄,你必須使用FirebaseAuth類的signInWithEmailAndPassword( )方法,這個方法有兩個參數:郵箱地址、密碼。這個方法還返回一個Task類型的對象。通過添加一個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() { @Override public void onComplete(@NonNull Task task) { if (task.isSuccessful()) { // User signed in successfully } } }); }
用戶退出,可以簡單的調用FirebaseAuth類中的signOut()方法
FirebaseAuth.getInstance().signOut();
Firebase平台其中一個最強大的特點就是它的實時數據庫,之所以這樣說是有一個好原因:所以的寫操作在所有的客戶端上都可以同步看的到。在這樣的數據庫下,你可以創建一個允許用戶無縫地在設備間轉移的應用,並且立即可以協作。(這個感覺和 有道雲協作 差不多)
使用real-time database 實時數據庫之前,你需要在你module’s的build.gradle文件裡面添加compile依賴:
compile 'com.google.firebase:firebase-database:9.4.0'
你可以認為實時數據庫存儲的是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選項卡,你可以查看實時數據庫中的所有數據。
為了從實時數據庫中讀取數據,你必須附加一個異步觀察者到關聯的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( )方法都會被觸發。
谷歌Firebase platform讓開發者專注於開發一個更好的app而不是糾結於後台服務。在本教程,你學習了如何使用這個平台來添加anaytics、用戶認證、實時雲存儲數據倉庫到你的app中。
一 摘要晚上看了關於代理模式的一篇文章,寫的非常生動,來過來分享給大家.這裡我就PHP代理模式給大家進行詳細說明.下面我們來看一看這幾天王寶強妻子出軌經紀人事件惹盡了眼球
最近在看Google技術文檔的時候發現了一種新的方式來實例化Fragment,就是采用靜態工廠的方式創建Fragment。我們在使用Android studio創建一個類
現在,玩微信的朋友有很多,我們用微信不僅可以和朋友家人聊天聯絡,還可以隨時隨地發朋友圈,那麼微信朋友圈怎麼發文字,下面下載吧小編教你一個簡單的方法來用微信朋
Android APP數字上鎖最近抽時間做了下數字解鎖的功能,手機有數字解鎖,App也可以做到,避免某些應用隱私洩漏,一下就是實現效果圖:序言:這兩天老大給了個任務,說是