使用 Android Studio 開發 Firebase  快速導入RealTime Database 設定

使用 Android Studio 開發 Firebase 快速導入RealTime Database 設定

Google 9月份發佈 Android Studio 2.2,把原本2.0已經整合得不錯的 Firebase,在 2.2.2上整合得更加的完善,小編認為此舉不無受fabric android studio plugin影響,可見好的外掛是足以影響開發工具操作模式的。

本文延續在Android中使用2016新版Firebase加快開發過程(一),將示範在Android Studio 2.2.2下使用Firebase工具導入類別庫,新增Realtime Database資料,再顯示到畫面上。

開新專案

專案名稱「FireChat」,選取空白活動「EmptyActivity」

連結Firebase專案並導入類別庫

原本在Android Studio 2.0裡,建立專案後,要先到Firebase主控台建立Firebase專案、新增應用程式、加入開發指紋碼、取得google-services.json設定檔….等等複雜步驟,現在都不需要了。

1. 開啟Firebase工具

mag_as222_firebase_01

展開 [Realtime Database],點擊[Save and retrieve data]

mag_as222_firebase_02

2.  點擊 [Connect to Firebase] 將Android Studio專案連結至Firebase專案,點擊後將會切換到瀏覽器,要求登入Google帳戶以建立連結。

mag_as222_firebase_03

選擇欲登入的Google帳戶

mag_as222_firebase_04

登入Google帳號後,允許Android Studio權限

a7499

出現此畫面後即可切換回Android Studio

a7500

3. 導入Firebase資料庫,請點擊[Add the Realtime Database to your app]

mag_as222_firebase_04

可選擇建立Firebase專案,或選擇既有的專案

a7501

設置好後,觀察一下build.gradle,多了幾行相關設定,原本那些繁雜的步驟Android Studio 2.2.2都自動完成了。

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'com.google.gms:google-services:3.0.0'
    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.0.0'
    compile 'com.google.firebase:firebase-database:9.8.0'
    testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'

現在,開發人員只要聚焦在程式開發上,那些設定只要交給工具處理就行了。當然,了解工具幫我們完成了哪些事也是非常重要的一環,日後工具有bug或協同開發人員誤刪,才有辦法修復。

看看Firebse工具在伺服端做了什麼?

開啟瀏覽器進入Firebase主控台,此時會看到一個Firebase工具為我們建置好的新專案,點選進入專案後,會發現Firebase專案己經自動連結 firechat 行動應用程式。

mag_as222_firebase_11  mag_as222_firebase_12

畫面往下拉可以看到過去需要自己手動輸入、下載的項目,Firebase工具通通都為我們做好了。

mag_as222_firebase_13

寫此文時,Firebase網站正進行改版,前一晚歷經切換帳號、刪除專案重建依舊無法正常work的內容,一早醒來都正常了。Google有時會進行工具或網站改版,如果遇到操作正確卻無法正常作業時,建議過幾個小時後再試。

在主控台內點選Database,可看到DB界的 Hello World,此筆資料是Firebase工具開專案時自動建置的。

mag_as222_firebase_14

請先將Database安全性設為公開,切換到「規則」頁籤,改好後,按下『發佈』更改設定。

mag_as222_firebase_17

新增資料如下:

mag_as222_firebase_26

在畫面上新增ListView,設id為list。

mag_as222_firebase_18

firebase-database API 最新版本為9.8.0,和 5月份時的 9.0讀取方式已有不同。

實際上Android Studio 引入 google-services.json後,所有 firebase 伺服端的相關設定皆含括於此,無須初始化,新版API會自動讀取此設定檔。

        ListView listView = (ListView) findViewById(R.id.list);
        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1,
                android.R.id.text1);
        listView.setAdapter(adapter);

        DatabaseReference reference_contacts = FirebaseDatabase.getInstance().getReference("contacts");
        reference_contacts.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                adapter.clear();
                for (DataSnapshot ds : dataSnapshot.getChildren() ){
                    adapter.add(ds.child("name").getValue().toString());
                }
            }
        });

第7行:我們知道Firebase的Realtime Database是以JSON格式儲存,getDatabaseReference可以理解為讀取某個特定節點。getDatabaseReference(“contacts”) 表示以下操作皆從contacts開始。

第11-13行:ValueEventListener接收contacts節點下的變動事件,for迴圈讀取所有子節點內容。

執行畫面

mag_as222_firebase_27

在Android Studio 2.2.2開發Firebase確實比Android Studio 2.0快上許多呢~

版權聲明

本文章版權為郭香宜所有,授權範圍僅限綠豆湯網站使用,除Facebook之類社群等未更改本文章出處之分享行為不在此限,其他個人或公司未經作者同意,不得任意將本文章內容轉載至其他網站,或以任何形式重製,為以免觸犯著作權法,請尊重作者之智慧財產權。

相關文章:

This Post Has 10 Comments

  1. Avatar

    如果我想直接由手機輸入資料去Firebase個Database內要如何寫?

  2. Avatar

    ListView listView = (ListView) findViewById(R.id.list);
    final ArrayAdapter adapter = new ArrayAdapter(this,
    android.R.layout.simple_list_item_1,
    android.R.id.text1);
    listView.setAdapter(adapter);

    能解釋一下這一段嗎? 是不是把這段code 放到onCreateView 裡邊(我在fragment 裡要用)? 謝謝

    1. Avatar

      是,但要改用用view.findViewById

  3. Avatar

    您好 我想請問一下Realtime Database的規則
    {
    “rules”: {
    “.read”: true,
    “.write”: true
    }
    }
    我目前正在開發app 我該如何修改成限制只有使用我的app的使用者才可以對資料庫進行讀或寫資料呢?

  4. Avatar

    請問用firebase來做討論區這類的工作可行嗎?
    或是更簡化一點,當留言板就好
    會不會有什麼限制?

  5. Avatar

    請問第一個步驟Connect to Firebase連接好資料庫後, 如何取消更改別的資料庫,
    因為都無法按,或按右鍵取消, 是否有設定檔可更改??

    1. Avatar

      手動是可以更換firebase project的,在Firebase主控台下載 google-services.json,換掉app module內的檔案即可。

發佈留言

×
×

Cart