FireBase是什麼(https://tw.alphacamp.co/2016/07/22/firebase/)
Google強大地整合了開發人員
入門時最容易遇到的問題 : 資料庫!以及委外的認證機制 + 使用者分析 + 錯誤報告 +
儲存空間 + 推播通知 + 廣告 + 伺服器運行程式...
相當完整地提供了"後台"的功能!!!
有了以上功能的"後台",讓開發人員可以~
相當快速地建構專案,省去架設伺服器、資料庫...等等繁複的前置步驟
(APP、Web本就是相當薄的UI層,所有應用的發展,都少不了那個雲端!)
那麼該怎麼快速上手呢?
此處可以參考:
https://litotom.com/2016/05/20/2016-firebase/
其中MainActivity的介面設計,寫入以下程式碼時
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
會產生找不到@dimen的問題此處錯誤是因為找不到此資源檔
所以請在res->values->new file->dimention
產生dimention.xml後,寫入
<resources>
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
</resources>
便能順利找到檔案接著因目前Android更新至2.3.3,所以從FireBase設定開始,按以下施工:
https://litotom.com/2016/11/19/as_222_firebase_db/
到此為止,便能順利連結到所設定的FireBase。
---------------------------------------------------------
如何取出資料?
建議將連結頁面物件(listView)與連結DataBase分為兩個涵式
1.findViews(),用來設定連結頁面元件
2.setDBdata(),用來取得資料存入ArrayAdapter物件
再一併於onCreate()內執行:
public class MainActivity extends AppCompatActivity {
private ListView listView;
private void _findViews(){listView = (ListView) findViewById(R.id.listView); }
private void _setDBdata(){
final ArrayAdapter<String> adapter =
new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1);
listView.setAdapter(adapter);
FirebaseDatabase fbDB = FirebaseDatabase.getInstance();
DatabaseReference dbRef_chat = fbDB.getReference("chat");
dbRef_chat.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
adapter.clear();
for (DataSnapshot ds : dataSnapshot.getChildren() ){
adapter.add(ds.child("name").getValue().toString()); }
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
_findViews();
_setDBdata(); }
}
以上分割了非邏輯行為與資料存取行為達到函式分工合作,便於修改與擴充
目前 最新的FireBase已進一步將API簡化了
所以只要以下兩行
FirebaseDatabase fbDB = FirebaseDatabase.getInstance();
DatabaseReference dbRef_chat = fbDB.getReference("chat");
便能取得資料庫實體物件,更能進一步從"chat"節點進入
接著一個個取出"name"欄位的值
更多API可參考官方文件:
https://firebase.google.com/docs/reference/android/com/google/firebase/database/DatabaseReference
-------------------------------------------------------------------------------------
偵錯
至此,我們能從FireBase取出資料正確顯示在手機APP上了
那如果出錯呢?
授權沒有設定好? UI沒找到? 資料庫連線錯誤? ....原因
FireBase又給了我們偵錯工具!
我們可以為專案導入偵錯機制
它便會鉅細靡遺地,記錄裝置狀態與回報錯誤資訊:
https://litotom.com/2017/04/19/firebase-crash-reporting/
---------------------------------------------------------
真是太強大了,感恩讚嘆FireBase
讓APP入門容易太多了
且可以迅速發展出"實際地應用"
再也不用煩惱後端架哪裡、網路不給力
而去做一些玩具如:計算機功能、溫度、BMI轉換功能...
或是花一大堆時間,搞一個不安全的會員制度...