通過Bmob + Android輕鬆製作一個APP
本篇來自 ithuangqing 的投稿,分享瞭如何使用Bmob作為伺服器來配合開發出一個Android APP程式,希望大家喜歡!
ithuangqing 的部落格地址:
如何輕鬆搭建一個伺服器端,製作一款屬於自己的app呢?今天我們來一起學習一下!首先我們先來看看它------Bmob。
Bmob 是一個可以開發雲端儲存的移動應用軟體,給應用軟體快速新增一個安全靈活的後臺管理系統,方便瀏覽終端儲存的各種資訊。針對移動應用開發的特性,Bmob還提供了主動推送服務,可以讓移動開發者將資訊從伺服器直接推送到應用程式中,從而實現軟體的主動更新、資訊通知等服務。
對於很多Android/iOS個人移動開發者來說,開發一個具有網路功能的應用不是一件容易的事,不僅需要購買/租賃伺服器,還必須掌握一門諸如Java/.net/php這類的伺服器開發語言,每開發一款移動應用程式,就必須開發維護對應的伺服器程式。這一切對於移動開發者來說,都是一個冗長的噩夢。
如何讓移動開發者從繁瑣的機械勞動中解脫出來,將更多精力投入到移動應用程式的創意研發,從而不斷提升產品質量呢?Bmob移動應用雲端儲存平臺的誕生就很好地解決了以上難題。
在Bmob平臺上,只需註冊一個帳號,成功後申請建立任意多個數據庫,獲得對應的Key,下載對應版本的SDK並將其嵌入到移動應用中,便可以呼叫存取API,進行資料的任意操作。有了Bmob,您在5分鐘內就可以學會如何開發一個雲端儲存的移動應用軟體,給應用軟體快速新增一個安全靈活的後臺管理系統,方便您瀏覽終端儲存的各種資訊。
是不是很心動啊,廢話不多說,我們直接開始吧!
建立應用
首先你需要註冊一個Bmob賬號,註冊成功之後頁面是這樣的:
你的應該是空白的,點選建立應用:
按操作進行即可,這裡我們選擇開發版免費的。當你建立完應用,點選所建立的應用:
你的應該只有一個數據表_User,我這裡已經建立了兩個資料表,我們先開啟設定看一個非常重要的東西:
這個ID一定要注意,很重要,我們繼續。頁面右下角有一個文件,我們點開找到Android開發文件:
你可以快速瀏覽一下這裡的快速入門,接下來我們開始匯入sdk,首先說明一點我們使用Android Studio來完成開發工作,在快速入門中你會看到匯入sdk的方法,我們優先選擇自動匯入。
自動匯入
在 Project 的 build.gradle 檔案中新增 Bomb 的 maven 倉庫地址:
-
buildscript {
-
repositories {
-
jcenter()
-
}
-
dependencies {
-
classpath 'com.android.tools.build:gradle:1.2.3'
-
}
-
}
-
allprojects {
-
repositories {
-
jcenter()
-
//Bmob的maven倉庫地址--必填
-
maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }
-
}
-
}
按照文件說明來即可。接著配置AndroidManifest.xml,最後一步比較重要的是就是初始化BmobSDK了。
初始化BombSDK
在你的應用程式啟動的 Activity 的 onCreate方法中初始化BombSDK:
-
package com.bmob.example;
-
import cn.bmob.v3.Bmob;
-
import android.app.Activity;
-
import android.os.Bundle;
-
public class MainActivity extends Activity {
-
@Override
-
protected void onCreate(Bundle savedInstanceState) {
-
// TODO Auto-generated method stub
-
super.onCreate(savedInstanceState);
-
//提供以下兩種方式進行初始化操作:
-
//第一:預設初始化
-
Bmob.initialize(this, "Your Application ID");
-
// 注:自v3.5.2開始,資料sdk內部縫合了統計sdk,開發者無需額外整合,傳渠道引數即可,不傳預設沒開啟資料統計功能
-
//Bmob.initialize(this, "Your Application ID","bmob");
-
//第二:自v3.4.7版本開始,設定BmobConfig,允許設定請求超時時間、檔案分片上傳時每片的大小、檔案的過期時間(單位為秒),
-
//BmobConfig config =new BmobConfig.Builder(this)
-
////設定appkey
-
//.setApplicationId("Your Application ID")
-
////請求超時時間(單位為秒):預設15s
-
//.setConnectTimeout(30)
-
////檔案分片上傳時每片的大小(單位位元組),預設512*1024
-
//.setUploadBlockSize(1024*1024)
-
////檔案的過期時間(單位為秒):預設1800s
-
//.setFileExpiration(2500)
-
//.build();
-
//Bmob.initialize(config);
-
}
-
}
當你初始化完成並且上述步驟都無誤的情況下你就能使用bmob啦,我們來驗證一下:
當你隨便在一個java類檔案中寫上bmob的時候就會出現很多bmob的相關方法了,至此配置bmob已經全部完成,接下來開始使用bmob吧!
建立資料表
我覺得bmob的一個核心就是資料的使用,就是上傳資料,讀取資料,也注重說一下這點,首先我們建立一個自己需要的資料表:
-
public class FoundData extends BmobObject {
private String title;
private String describe;
private String phone;
public void setPhone(String phone) {
this.phone = phone; -
}
public void setDescribe(String describe) {
this.describe = describe; -
}
public void setTitle(String title) {
this.title = title; -
}
public String getPhone() {
return phone; -
}
public String getDescribe() {
return describe; -
}
public String getTitle() {
return title; -
}
-
}
這裡我根據專案需要建立了一個FoundData資料表,我們建立資料表的時候記住要繼承自Bmobject這個類,然後定義相關屬性,新增set與get方法,在我們的專案中成功建立資料表之後我們需要在bmob後端控制太新增資料表與之形成對應:
選擇新增表:
這裡選擇自定義,要注意這裡的名稱必須與你在專案裡建立的資料表名稱一模一樣,新增表完成之後開啟這個表:
因為你是剛建立的所以你的裡面只有objectid String這一樣,你需要手動新增,我們選擇新增列:
注意列的名稱也必須與你專案中建立的變數名稱一致,包括資料型別:
完成上述操作我們就成功建立一個數據表了,接下來我們重點說一下對資料的讀取,首先我們需要在資料表中新增相關資料,像這樣:
記住新增資料的時候是新增行。然後我們開啟開發文件:
點開開發文件:
這是關於bmob對於android開發的一系列操作,我們需要找到查詢資料的方法:
找到查詢指定列
這裡給我們提供一個查詢指定列的方法,我們看在專案中的具體使用:
-
//獲取資料
-
public void getData(){
-
//獲取資料
-
BmobQuery<FoundData> bmobQuery = new BmobQuery<FoundData>();
-
//不指定查詢具體的哪一項則為查詢全部資料
-
// bmobQuery.addQueryKeys("title");
-
bmobQuery.findObjects(new FindListener<FoundData>() {
-
@Override
-
public void done(List<FoundData> list, BmobException e) {
-
}
-
});
-
}
我們需要注意,bmob提供的是查詢指定列的方法,就是它可以得到一列的資料,但是我們知道我們的資料並不是只有一列資料,如果我們想查詢所有資料該怎麼辦呢?很簡單我們將查詢指定列的那段程式碼去掉就可以查詢全部資料了,注意看我程式碼的註釋。
我一直覺得對於查詢得到的資料的處理是一個難點,當你做好了app的介面,再加入網路功能可以讀取後臺資料,基本上一個簡單的app就成了,接下來我們就說說如何處理得到的資料:
-
//獲取資料
public void getData(){ -
//獲取資料
-
BmobQuery<FoundData> bmobQuery = new BmobQuery<FoundData>();
-
//不指定查詢具體的哪一項則為查詢全部資料
-
// bmobQuery.addQueryKeys("title");
-
bmobQuery.findObjects(new FindListener<FoundData>() {
-
@Override
-
public void done(List<FoundData> list, BmobException e) {
-
Toast.makeText(getContext(),"重新整理成功"+list.size(),Toast.LENGTH_SHORT).show();
-
/**
-
* 1.list為得到的資料來源
-
* 2.得到的資料有三項
-
* 2.1 title
-
* 2.2 phone
-
* 2.3 describe
-
*/
-
//處理list中的資料,for迴圈遍歷
-
for(FoundData data : list){
-
mHashMap = new HashMap<>();
-
mHashMap.put("title",data.getTitle());
-
mHashMap.put("phone",data.getPhone());
-
mHashMap.put("describe",data.getDescribe());
-
}
-
List<Map<String,String>> mapList = new ArrayList<>();
-
mapList.add(mHashMap);
-
simpleAdapter = new SimpleAdapter(getContext(),mapList,R.layout.list_item,new String[]{"title","phone","describe"},new int[]{R.id.lf_title,R.id.lf_phone,R.id.lf_describe});
-
//資料佈局填充adapter,即是繫結資料
-
listView.setAdapter(simpleAdapter);
-
simpleAdapter.notifyDataSetChanged();
-
}
-
});
-
}
我們要清楚的知道得到的資料是什麼,這裡是一個list集合,集合中的資料是FoundData物件,並且含有三項資料,看註釋,得到的資料是要給使用者看的,我們一般選在listview,處理資料的一個標準還是要看我們選擇的介面卡,這裡我選擇使用simpleAdapter,如果選擇使用了simpleAdapter我們就需要一個數據源,這個資料來源是一個list集合,但是集合中的每一個數據又都是一個map集合,因此我們就需要將得到的list轉化成simpleAdapter需要的資料來源,這裡我們處理的邏輯是先使用hashmap接收得到的list,再將其轉化成資料元素是map集合的list,注意看程式碼實現。執行過上述程式碼的可能會發現,上述程式碼的實現似乎有點問題,當我們在多新增一行資料的時候發現讀取到的資料卻只有一行,這是因為使用for迴圈遍歷的時候處理不當,修改如下:
-
@Override
public void done(List<FoundData> list, BmobException e) { -
Toast.makeText(getContext(),"重新整理成功"+list.size(),Toast.LENGTH_SHORT).show();
-
List<Map<String,String>> mapList = new ArrayList<>();
-
/**
-
* 1.list為得到的資料來源
-
* 2.得到的資料有三項
-
* 2.1 title
-
* 2.2 phone
-
* 2.3 describe
-
*/ //處理list中的資料,for迴圈遍歷
for(FoundData data : list){ -
mHashMap = new HashMap<>();
-
mHashMap.put("title",data.getTitle());
-
mHashMap.put("phone",data.getPhone());
-
mHashMap.put("describe",data.getDescribe());
-
mapList.add(mHashMap);
} -
}
當我們處理好以上邏輯,完成相應的介面設定我們在app上就可以看到相應的資料了:
至此大公告成,更多更詳細的可以仔細閱讀開發文件,bmob讓你的開發更加簡單快捷!