移動后端云平臺Bmob介紹
來源:程序員人生 發布時間:2015-06-19 08:25:53 閱讀次數:4970次
對移動真個獨立開發者來講,最痛苦的事情莫過于搭建后臺服務器。沒有基礎的還得從頭學起,有技術的又要搭建保護后臺,非常麻煩。而移動后端云平臺的出現,簡直是每一個獨立開發者的福音,它可以避免費提供論文服務器,有數據文件服務,還有社交功能等。國內主流的有友盟、極光推送,Bmob,AVOS Cloud等,下面介紹老少咸宜的Bmob
如何鏈接到Bmob的服務器開發文檔都有,開發文檔有沒具體介紹的是文件下載功能。文件下載,首先是通過數據查詢取得
BmobFile對象 ,然后通過該對象的getFileUrl()方法取得下載鏈接,最后通過鏈接下載。下面是1個實現了添加數據、查詢數據、文件上傳、文件下載、推送功能的例子:
package com.example.bombexample;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONObject;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import cn.bmob.push.BmobPush;
import cn.bmob.v3.Bmob;
import cn.bmob.v3.BmobInstallation;
import cn.bmob.v3.BmobPushManager;
import cn.bmob.v3.BmobQuery;
import cn.bmob.v3.datatype.BmobFile;
import cn.bmob.v3.listener.FindListener;
import cn.bmob.v3.listener.GetCallback;
import cn.bmob.v3.listener.GetListener;
import cn.bmob.v3.listener.SaveListener;
import cn.bmob.v3.listener.UploadFileListener;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
private List<User> users=new ArrayList<User>();
private HttpUtils httpUtils=null;
BmobFile bmobFile =null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bmob.initialize(this, "3b728750d1755e56dd680fa76c4a8386");
// 使用推送服務時的初始化操作
BmobInstallation.getCurrentInstallation(this).save();
// 啟動推送服務
BmobPush.startWork(this, "3b728750d1755e56dd680fa76c4a8386");
httpUtils=new HttpUtils();
}
// 向服務期添加數據
public void add(View view)
{
for(int i=0;i<10;i++)
{
User user=new User();
user.setName("gaigai"+i);
user.setPassword("hlb"+i);
users.add(user);
}
for(final User user:users)
{
user.save(this, new SaveListener() {
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this, "添加數據成功"+user.getObjectId(), Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int arg0, String arg1) {
Toast.makeText(MainActivity.this, "添加數據失敗", Toast.LENGTH_SHORT).show();
}
});
}
}
// 查詢
服務器數據
public void query(View view)
{
BmobQuery<User> query=new BmobQuery<User>();
query.getObject(this,"f69efc2ca8",new GetListener<User>() {
@Override
public void onSuccess(User arg0) {
Toast.makeText(MainActivity.this,
arg0.getName()+" "+arg0.getPassword(), Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int arg0, String arg1) {
}
});
}
// 查詢
服務器所有數據
public void queryAll(View view)
{
BmobQuery<User> query=new BmobQuery<User>();
query.findObjects(this, new FindListener<User>() {
@Override
public void onSuccess(List<User> arg0) {
Toast.makeText(MainActivity.this, arg0.size()+"", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(int arg0, String arg1) {
// TODO Auto-generated method stub
}
});
}
// 推送功能
public void data_push(View view)
{
BmobPushManager bmobPush = new BmobPushManager(this);
bmobPush.pushMessageAll("哈哈哈哈.");
}
// 文件上傳
public void upload(View v) throws IOException
{
InputStream in=getAssets().open("byx.jpg");
File file=new File(Environment.getExternalStorageDirectory()+"/byx.jpg");
if(!file.exists())
{
file.createNewFile();
}
FileOutputStream out=new FileOutputStream(file);
int len=0;
byte []buffer=new byte[1024];
while((len=in.read(buffer))!=⑴)
{
out.write(buffer, 0, len);
}
out.close();
in.close();
bmobFile = new BmobFile(file);
bmobFile.upload(this, new UploadFileListener() {
@Override
public void onSuccess() {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, bmobFile.getFileUrl(MainActivity.this)+"", Toast.LENGTH_SHORT).show();
Log.i("Url", bmobFile.getFileUrl(MainActivity.this));
}
@Override
public void onFailure(int arg0, String arg1) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "上傳文件失敗", Toast.LENGTH_SHORT).show();
}
});
}
// 文件下載
public void download(View v)
{
BmobQuery<Test> query=new BmobQuery<Test>();
query.getObject(this, "nt7rAAAG", new GetListener<Test>() {
@Override
public void onSuccess(Test arg0) {
arg0.getThumbnail().getFileUrl(MainActivity.this);
Log.i("url",arg0.getThumbnail().getFileUrl(MainActivity.this));
downloadPic(arg0.getThumbnail().getFileUrl(MainActivity.this),arg0.getThumbnail().getFilename());
}
@Override
public void onFailure(int arg0, String arg1) {
// TODO Auto-generated method stub
}
});
}
public void downloadPic(String url,String filename)
{
httpUtils.download(url, Environment.getExternalStorageDirectory()+"/"+filename, new RequestCallBack<File>() {
@Override
public void onSuccess(ResponseInfo<File> responseInfo) {
Log.i("download","文件存儲路徑"+responseInfo.result.getPath());
}
@Override
public void onFailure(HttpException error, String msg) {
// TODO Auto-generated method stub
}
});
}
}
項目下載地址:http://download.csdn.net/detail/aehaojiu/8653135
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈