免费服务器,个人开发者的福利

2013020735 发布于 2016/09/06 18:39
阅读 3K+
收藏 3

对于很多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

http://click.bmob.cn/?sid=ae089e0fda5c23ea4362

加载中
1
aboutibm
aboutibm
刚开始是全免费的,而且一直强调不会收费,后来转成限制条件下免费了,其实就是和试用一样,如果这也能叫免费,那么基本网上所有付费的东西都可以叫免费了
aboutibm
aboutibm
回复 @2013020735 : 可以收费,但是不能先说永久不收费吸引大家用后突然说有条件的免费,估计你不是最早那批用户,没看到他们那永久免费的宣传
2013020735
2013020735
没有吧,bmob是有个人免费版的,个人专业版,企业版这样的。我们用个人免费版是完全够用的,而且群里好多朋友的app都用户量很大了。况且我想说如果你的应用做大了收入多了给点钱能怎么样啊,人家给你免费验证市场了还不够么,我们这些免费用户都很感激人家的,都想着他们雪中送炭以后我们应用做起来了一定给他们回报
0
geeksuperwoman
geeksuperwoman
当时就是看中bmob的方便免费才用的哈哈
0
刘大神
刘大神
66666,然而只能是用于移动应用
2013020735
2013020735
h5好像也能用
0
张金富
张金富
我用greenDAO
0
2013020735
2013020735

引用来自“geeksuperwoman”的评论

当时就是看中bmob的方便免费才用的哈哈
用过之后发现很棒
0
雨翔河
雨翔河
想拿来当文件存储外链用
0
geeksuperwoman
geeksuperwoman

引用来自“geeksuperwoman”的评论

当时就是看中bmob的方便免费才用的哈哈

引用来自“2013020735”的评论

用过之后发现很棒
en 
0
0
2013020735
2013020735
我顶我顶我顶顶顶
返回顶部
顶部