1. 程式人生 > >通過Bmob + Android輕鬆製作一個APP

通過Bmob + Android輕鬆製作一個APP

本篇來自 ithuangqing 的投稿,分享瞭如何使用Bmob作為伺服器來配合開發出一個Android APP程式,希望大家喜歡!

ithuangqing 的部落格地址:

http://blog.csdn.net/sinat_33921105​​​​​​​

 

如何輕鬆搭建一個伺服器端,製作一款屬於自己的app呢?今天我們來一起學習一下!首先我們先來看看它------Bmob。

Bmob 是一個可以開發雲端儲存的移動應用軟體,給應用軟體快速新增一個安全靈活的後臺管理系統,方便瀏覽終端儲存的各種資訊。針對移動應用開發的特性,Bmob還提供了主動推送服務,可以讓移動開發者將資訊從伺服器直接推送到應用程式中,從而實現軟體的主動更新、資訊通知等服務。

對於很多Android/iOS個人移動開發者來說,開發一個具有網路功能的應用不是一件容易的事,不僅需要購買/租賃伺服器,還必須掌握一門諸如Java/.net/php這類的伺服器開發語言,每開發一款移動應用程式,就必須開發維護對應的伺服器程式。這一切對於移動開發者來說,都是一個冗長的噩夢。

如何讓移動開發者從繁瑣的機械勞動中解脫出來,將更多精力投入到移動應用程式的創意研發,從而不斷提升產品質量呢?Bmob移動應用雲端儲存平臺的誕生就很好地解決了以上難題。

在Bmob平臺上,只需註冊一個帳號,成功後申請建立任意多個數據庫,獲得對應的Key,下載對應版本的SDK並將其嵌入到移動應用中,便可以呼叫存取API,進行資料的任意操作。有了Bmob,您在5分鐘內就可以學會如何開發一個雲端儲存的移動應用軟體,給應用軟體快速新增一個安全靈活的後臺管理系統,方便您瀏覽終端儲存的各種資訊。

是不是很心動啊,廢話不多說,我們直接開始吧!

 

建立應用

 

首先你需要註冊一個Bmob賬號,註冊成功之後頁面是這樣的:

0?wx_fmt=png

你的應該是空白的,點選建立應用:

0?wx_fmt=png

按操作進行即可,這裡我們選擇開發版免費的。當你建立完應用,點選所建立的應用:

0?wx_fmt=png

你的應該只有一個數據表_User,我這裡已經建立了兩個資料表,我們先開啟設定看一個非常重要的東西:

0?wx_fmt=png

這個ID一定要注意,很重要,我們繼續。頁面右下角有一個文件,我們點開找到Android開發文件:

0?wx_fmt=png

0?wx_fmt=png

你可以快速瀏覽一下這裡的快速入門,接下來我們開始匯入sdk,首先說明一點我們使用Android Studio來完成開發工作,在快速入門中你會看到匯入sdk的方法,我們優先選擇自動匯入。

 

自動匯入

 

在 Project 的 build.gradle 檔案中新增 Bomb 的 maven 倉庫地址:

 

 
  1.  
  2. buildscript {

  3.     repositories {

  4.         jcenter()

  5.     }

  6.     dependencies {

  7.         classpath     'com.android.tools.build:gradle:1.2.3'

  8.     }

  9. }

  10.  
  11. allprojects {

  12.     repositories {

  13.         jcenter()

  14.         //Bmob的maven倉庫地址--必填

  15.         maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }

  16.     }

  17. }

按照文件說明來即可。接著配置AndroidManifest.xml,最後一步比較重要的是就是初始化BmobSDK了。

 

初始化BombSDK

 

在你的應用程式啟動的 Activity 的 onCreate方法中初始化BombSDK:

 

 
  1. package com.bmob.example;

  2. import cn.bmob.v3.Bmob;

  3. import android.app.Activity;

  4. import android.os.Bundle;

  5. public class MainActivity extends Activity {

  6.    @Override

  7.    protected void onCreate(Bundle savedInstanceState) {

  8.         // TODO Auto-generated method stub

  9.        super.onCreate(savedInstanceState);

  10.         //提供以下兩種方式進行初始化操作:

  11.  
  12.        //第一:預設初始化

  13.        Bmob.initialize(this, "Your Application ID");

  14.        // 注:自v3.5.2開始,資料sdk內部縫合了統計sdk,開發者無需額外整合,傳渠道引數即可,不傳預設沒開啟資料統計功能

  15.        //Bmob.initialize(this, "Your Application ID","bmob");

  16.  
  17.        //第二:自v3.4.7版本開始,設定BmobConfig,允許設定請求超時時間、檔案分片上傳時每片的大小、檔案的過期時間(單位為秒),

  18.        //BmobConfig config =new BmobConfig.Builder(this)

  19.        ////設定appkey

  20.        //.setApplicationId("Your Application ID")

  21.        ////請求超時時間(單位為秒):預設15s

  22.        //.setConnectTimeout(30)

  23.        ////檔案分片上傳時每片的大小(單位位元組),預設512*1024

  24.        //.setUploadBlockSize(1024*1024)

  25.        ////檔案的過期時間(單位為秒):預設1800s

  26.        //.setFileExpiration(2500)

  27.        //.build();

  28.        //Bmob.initialize(config);

  29.    }

  30. }

 

當你初始化完成並且上述步驟都無誤的情況下你就能使用bmob啦,我們來驗證一下:

0?wx_fmt=png

當你隨便在一個java類檔案中寫上bmob的時候就會出現很多bmob的相關方法了,至此配置bmob已經全部完成,接下來開始使用bmob吧!

 

建立資料表

 

我覺得bmob的一個核心就是資料的使用,就是上傳資料,讀取資料,也注重說一下這點,首先我們建立一個自己需要的資料表:

 
  1. public class FoundData extends BmobObject {
       private String title;    
       private String describe;    
       private String phone;    
       
       public void setPhone(String phone) {
           this.phone = phone;

  2.    }    
           
       public void setDescribe(String describe) {
           this.describe = describe;

  3.    }    
           
       public void setTitle(String title) {
           this.title = title;

  4.    }    
       
       public String getPhone() {        
           return phone;

  5.    }    
       
       public String getDescribe() {        
           return describe;

  6.    }    
       
       public String getTitle() {        
           return title;

  7.    }

  8. }

這裡我根據專案需要建立了一個FoundData資料表,我們建立資料表的時候記住要繼承自Bmobject這個類,然後定義相關屬性,新增set與get方法,在我們的專案中成功建立資料表之後我們需要在bmob後端控制太新增資料表與之形成對應:

0?wx_fmt=png

選擇新增表:

0?wx_fmt=png

這裡選擇自定義,要注意這裡的名稱必須與你在專案裡建立的資料表名稱一模一樣,新增表完成之後開啟這個表:

0?wx_fmt=png

因為你是剛建立的所以你的裡面只有objectid String這一樣,你需要手動新增,我們選擇新增列:

0?wx_fmt=png

注意列的名稱也必須與你專案中建立的變數名稱一致,包括資料型別:

0?wx_fmt=png

完成上述操作我們就成功建立一個數據表了,接下來我們重點說一下對資料的讀取,首先我們需要在資料表中新增相關資料,像這樣:

0?wx_fmt=png

記住新增資料的時候是新增行。然後我們開啟開發文件:

0?wx_fmt=png

點開開發文件:

0?wx_fmt=png

這是關於bmob對於android開發的一系列操作,我們需要找到查詢資料的方法:

0?wx_fmt=png

找到查詢指定列

0?wx_fmt=png

這裡給我們提供一個查詢指定列的方法,我們看在專案中的具體使用:

 

 
  1.    //獲取資料  

  2.    public void getData(){  

  3.  
  4.        //獲取資料  

  5.        BmobQuery<FoundData> bmobQuery = new BmobQuery<FoundData>();  

  6.        //不指定查詢具體的哪一項則為查詢全部資料  

  7.        // bmobQuery.addQueryKeys("title");  

  8.        bmobQuery.findObjects(new FindListener<FoundData>() {  

  9.            @Override  

  10.            public void done(List<FoundData> list, BmobException e) {  

  11.  
  12.            }  

  13.        });  

  14.  
  15.  
  16.    }

 

我們需要注意,bmob提供的是查詢指定列的方法,就是它可以得到一列的資料,但是我們知道我們的資料並不是只有一列資料,如果我們想查詢所有資料該怎麼辦呢?很簡單我們將查詢指定列的那段程式碼去掉就可以查詢全部資料了,注意看我程式碼的註釋。

我一直覺得對於查詢得到的資料的處理是一個難點,當你做好了app的介面,再加入網路功能可以讀取後臺資料,基本上一個簡單的app就成了,接下來我們就說說如何處理得到的資料:

 

 
  1. //獲取資料
    public void getData(){

  2.  
  3.    //獲取資料

  4.    BmobQuery<FoundData> bmobQuery = new BmobQuery<FoundData>();

  5.    //不指定查詢具體的哪一項則為查詢全部資料

  6.    // bmobQuery.addQueryKeys("title");

  7.    bmobQuery.findObjects(new FindListener<FoundData>() {

  8.        @Override

  9.        public void done(List<FoundData> list, BmobException e) {

  10.        Toast.makeText(getContext(),"重新整理成功"+list.size(),Toast.LENGTH_SHORT).show();

  11.  
  12.        /**

  13.        * 1.list為得到的資料來源

  14.        * 2.得到的資料有三項

  15.        *  2.1 title

  16.        *  2.2 phone

  17.        *  2.3 describe

  18.        */

  19.        //處理list中的資料,for迴圈遍歷

  20.        for(FoundData data : list){

  21.            mHashMap = new HashMap<>();

  22.            mHashMap.put("title",data.getTitle());

  23.            mHashMap.put("phone",data.getPhone());

  24.            mHashMap.put("describe",data.getDescribe());

  25.           }

  26.         List<Map<String,String>> mapList = new ArrayList<>();

  27.         mapList.add(mHashMap);

  28.         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});

  29.         //資料佈局填充adapter,即是繫結資料

  30.         listView.setAdapter(simpleAdapter);

  31.         simpleAdapter.notifyDataSetChanged();

  32.      }

  33.  });

  34. }

 

我們要清楚的知道得到的資料是什麼,這裡是一個list集合,集合中的資料是FoundData物件,並且含有三項資料,看註釋,得到的資料是要給使用者看的,我們一般選在listview,處理資料的一個標準還是要看我們選擇的介面卡,這裡我選擇使用simpleAdapter,如果選擇使用了simpleAdapter我們就需要一個數據源,這個資料來源是一個list集合,但是集合中的每一個數據又都是一個map集合,因此我們就需要將得到的list轉化成simpleAdapter需要的資料來源,這裡我們處理的邏輯是先使用hashmap接收得到的list,再將其轉化成資料元素是map集合的list,注意看程式碼實現。執行過上述程式碼的可能會發現,上述程式碼的實現似乎有點問題,當我們在多新增一行資料的時候發現讀取到的資料卻只有一行,這是因為使用for迴圈遍歷的時候處理不當,修改如下:

 

 
  1. @Override
    public void done(List<FoundData> list, BmobException e) {

  2.    Toast.makeText(getContext(),"重新整理成功"+list.size(),Toast.LENGTH_SHORT).show();

  3.    List<Map<String,String>> mapList = new ArrayList<>();

  4.    /**

  5.     * 1.list為得到的資料來源

  6.     * 2.得到的資料有三項

  7.     *  2.1 title

  8.     *  2.2 phone

  9.     *  2.3 describe

  10.     */    //處理list中的資料,for迴圈遍歷    
       for(FoundData data : list){

  11.        mHashMap = new HashMap<>();

  12.        mHashMap.put("title",data.getTitle());

  13.        mHashMap.put("phone",data.getPhone());

  14.        mHashMap.put("describe",data.getDescribe());

  15.        mapList.add(mHashMap);
       }

  16. }

當我們處理好以上邏輯,完成相應的介面設定我們在app上就可以看到相應的資料了:

0?wx_fmt=png

至此大公告成,更多更詳細的可以仔細閱讀開發文件,bmob讓你的開發更加簡單快捷!