Bmob後端服務器

對於很多Android/ios/wp個人移動開發者來說,開發一個具有網絡功能的應用不是一件容易的事,不僅需要購買/租賃服務器,還必須掌握一門諸如Java/.net/php這類的服務器開發語言,每開發一款移動應用程序,就必須開發維護對應的服務器程序。這一切對於移動開發者來說,都是一個冗長的噩夢。
如何讓移動開發者從繁瑣的機械勞動中解脫出來,將更多精力投入到移動應用程序的創意研發,從而不斷提升產品質量呢?Bmob移動應用雲存儲平臺的誕生就很好地解決了以上難題,讓我們不再擔憂服務器的搭建維護。一心一意的搞移動客戶端即可。
今天給大家介紹的是一種應用比較廣泛的後端服務器,Bmob。

1,首先官網註冊Bmob賬號

;
www.bmob.cn或者在百度輸入Bmob進行搜索,打開Bmob官網後,點擊右上角的“註冊”,這部分內容根據提示註冊即可,不用在這裏
介紹了,嘿嘿。
註冊成功後進入www.bmob.cn的頁面

2 創建自己的應用


點擊我的控制檯
綠色的圈圈是我的應用
第一次進入是沒有綠色圈圈裏面的應用的,大家選擇創建新應用即可,名字隨意;

3 獲取應用密鑰和下載SDK


點擊創建的應用
點擊設置
之後就需要下載SDK了
下載地址:http://www.bmob.cn/site/sdk#android_sdk
這裏寫圖片描述

4 安裝BmobSDK;

1 將下載好的SDK解壓之後,以下的幾個文件粘貼到你的項目的libs目錄下
這裏寫圖片描述
注:

1)、若配置不成功,則需要額外增加以下步驟:

右鍵工程根目錄,選擇Properties -> Java Build Path -> Libraries,然後點擊Add External JARs… 選擇指向該libs文件夾下的jar的路徑,點擊OK即可。

2)、對網絡請求的響應速度要求高的開發者需要額外再導入兩個與okhttp有關的包,分別是:okhttp-2.4.0.jar及okio-1.4.0.jar,當然不導入這兩個包也可以正常使用SDK。

2 在你的應用程序的AndroidManifest.xml文件中添加相應的權限:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="cn.tedu.bmobdemo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <!-- 在你的應用程序的AndroidManifest.xml文件中添加相應的權限: -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_LOGS" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="cn.tedu.bmobdemo.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

5 初始化Bmob模塊

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         // 初始化 Bmob SDK
        // 使用時請將第二個參數Application ID替換成你在Bmob服務器端創建的Application ID
        Bmob.initialize(this, "a76bbe5c5816ebe66245b250c48eb9d6");
//      gameScore.setPlayName("no.1");
//      gameScore.setScore(90);
//      gameScore.setIsplay(false);
//      gameScore.save(this,new SaveListener() {
//          
//          @Override
//          public void onSuccess() {
//              // TODO Auto-generated method stub
//              Toast.makeText(MainActivity.this,
//                      "添加數據成功,返回objectId爲:" +gameScore.getObjectId() + 
//                       "數據在服務端的創建時間爲:" + gameScore.getCreatedAt(), 
//                       Toast.LENGTH_SHORT).show();
//          }
//          
//          @Override
//          public void onFailure(int arg0, String arg1) {
//              // TODO Auto-generated method stub
//              
//          }
//      });
    }


添加數據

Bmob存儲的數據是建立在BmobObject基礎上的,所以任何要保存的數據對象必須繼承自BmobObject類。BmobObject類本身包含objectId、createdAt、updatedAt、ACL四個默認的屬性,objectId是數據的唯一標示,相當於數據庫中表的主鍵,createdAt是數據的創建時間,updatedAt是數據的最後修改時間,ACL是數據的操作權限。
例如,你的遊戲中使用GameScore表來記錄玩家的比分信息,其中表的字段有:score(分數)、playerName(玩家名字)、isPay(是否付費玩家)、pic(玩家頭像)屬性,那麼這個數據對象爲如下定義:

package cn.tedu.bmobdemo.bean;

import cn.bmob.v3.BmobObject;
import cn.bmob.v3.datatype.BmobFile;

public class GameScore extends BmobObject{
    private String playName;
    private Integer score;
    private Boolean isplay;
    private BmobFile pic;
    public String getPlayName() {
        return playName;
    }
    public void setPlayName(String playName) {
        this.playName = playName;
    }
    public Integer getScore() {
        return score;
    }
    public void setScore(Integer score) {
        this.score = score;
    }
    public Boolean getIsplay() {
        return isplay;
    }
    public void setIsplay(Boolean isplay) {
        this.isplay = isplay;
    }
    public BmobFile getPic() {
        return pic;
    }
    public void setPic(BmobFile pic) {
        this.pic = pic;
    }

}

需要注意的是:

JavaBean不需要對objectId、createdAt、updatedAt、ACL四個屬性進行定義。
不少開發者會沒有注意到createdAt和updatedAt屬性中的字母d,寫成createAt和updateAt。
儘可能使用Integer、Boolean,而不是int、boolean,也就是選擇包裝類,而不是使用基本數據類型(這兩者的區別大家可以看這篇文章:http://www.cnblogs.com/shenliang123/archive/2011/10/27/2226903.html)

這裏我沒有運用佈局文件來模擬數據的獲取和Toast的提示,就是上面被註釋的代碼部分,執行的操作就是向數據庫添加數據。大家可能一頭霧水了,我沒有創建數據庫啊?往哪裏添加?怎麼看我添加的數據呢?先賣個關子,咱們先啓動模擬器,看看執行後,Bmob後臺服務器有什麼反應。

public class MainActivity extends Activity {
    private GameScore gameScore = new GameScore();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 初始化 Bmob SDK
        // 使用時請將第二個參數Application ID替換成你在Bmob服務器端創建的Application ID
        Bmob.initialize(this, "a76bbe5c5816ebe66245b250c48eb9d6");
        gameScore.setPlayName("no.1");
        gameScore.setScore(90);
        gameScore.setIsplay(false);
        gameScore.save(this, new SaveListener() {

            @Override
            public void onSuccess() {
                // TODO Auto-generated method stub
                Toast.makeText(
                        MainActivity.this,
                        "添加數據成功,返回objectId爲:" + gameScore.getObjectId()
                                + "數據在服務端的創建時間爲:" + gameScore.getCreatedAt(),
                        Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onFailure(int arg0, String arg1) {
                // TODO Auto-generated method stub

            }
        });
    }

}

這裏寫圖片描述
這裏寫圖片描述

Bmob官方推薦類名和表名完全一致的映射使用方式, 即如,上面的GameScore類,它在後臺對應的表名也是GameScore(區分大小寫)。

如果你希望表名和類名並不相同,如表名爲T_a_b,而類名還是GameScore,那麼你可以使用BmobObject提供的setTableName(“表名”)的方法,示例代碼如下:


public class GameScore extends BmobObject{
    private String playName;
    private Integer score;
    private Boolean isplay;
    private BmobFile pic;
    //自定義表名
    public GameScore(){
        this.setTableName("mybmob");
    }
    public String getPlayName() {
        return playName;
    }
    public void setPlayName(String playName) {
        this.playName = playName;
    }
    public Integer getScore() {
        return score;
    }
    public void setScore(Integer score) {
        this.score = score;
    }
    public Boolean getIsplay() {
        return isplay;
    }
    public void setIsplay(Boolean isplay) {
        this.isplay = isplay;
    }
    public BmobFile getPic() {
        return pic;
    }
    public void setPic(BmobFile pic) {
        this.pic = pic;
    }

}

這裏寫圖片描述

大家有興趣的話可以參考Bmob官方文檔,進行更多的開發需要。
http://www.bmob.cn/docs

發佈了27 篇原創文章 · 獲贊 6 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章