首先我们需要去leancloud官网更新下载SDK
对于Android项目来说就是在gradle中添加依赖如下:
/**
* 添加的leanCloud依赖
*/
implementation ('cn.leancloud:storage-android:6.4.4'){
exclude group: 'com.alibaba', module: 'fastjson'
exclude group: 'org.ligboy.retrofit2', module: 'converter-fastjson'
}
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'com.alibaba:fastjson:1.1.71.android'
implementation 'org.ligboy.retrofit2:converter-fastjson-android:2.1.0'
去官网申请我们自己的APP key和APP id,首先进入 控制台 > 设置 > 应用 Key 来获取 App ID,App Key 。
如果是一个 Android 项目,则向 Application
类的 onCreate
方法添加
import cn.leancloud.AVOSCloud;
public class MyLeanCloudApp extends Application {
@Override
public void onCreate() {
super.onCreate();
// 提供 this、App ID、App Key、Server Host 作为参数
// 注意这里千万不要调用 cn.leancloud.core.AVOSCloud 的 initialize 方法,否则会出现 NetworkOnMainThread 等错误。
AVOSCloud.initialize(this, "{{appid}}", "{{appkey}}", "https://xxx.example.com");
}
}
然后指定 SDK 需要的权限并在 AndroidManifest.xml
里面声明 MyLeanCloudApp
类:
然后在项目中编写如下测试代码,然后运行Android程序后,
AVObject testObject = new AVObject("TestObject");
testObject.put("words", "Hello world!");
testObject.saveInBackground().blockingSubscribe();
上面这段代码就是在服务端创建了名为TestObject为表名,查看自己的后台,然后打开 控制台 > 存储 > 数据 > TestObject
,如果看到如下内容,说明 SDK 已经正确地执行了上述代码,安装完毕。
Todo
的对象存入云端:
// 构建对象
AVObject todo = new AVObject("Todo");
// 为属性赋值
todo.put("title", "马拉松报名");
todo.put("priority", 2);
// 将对象保存到云端
todo.saveInBackground().subscribe(new Observer() {
public void onSubscribe(Disposable disposable) {}
public void onNext(AVObject todo) {
// 成功保存之后,执行其他逻辑
System.out.println("保存成功。objectId:" + todo.getObjectId());
}
public void onError(Throwable throwable) {
// 异常处理
}
public void onComplete() {}
});
为了确认对象已经保存成功,我们可以到 控制台 > 存储 > 数据 > Todo
里面看一下,应该会有一行新的数据产生。点一下这个数据的 objectId
,应该能看到类似这样的内容:
{
"title": "马拉松报名",
"priority": 2,
"ACL": {
"*": {
"read": true,
"write": true
}
},
"objectId": "582570f38ac247004f39c24b",
"createdAt": "2017-11-11T07:19:15.549Z",
"updatedAt": "2017-11-11T07:19:15.549Z"
}
无需在 控制台 > 存储 > 数据 里面创建新的 Todo
class 即可运行前面的代码。如果 class 不存在,它将自动创建。
以下是一些对象的内置属性,会在对象保存时自动创建,无需手动指定:
内置属性类型描述objectId
String
该对象唯一的 ID 标识。ACL
AVACL
该对象的权限控制,实际上是一个 JSON 对象,控制台做了展现优化。createdAt
Date
该对象被创建的时间。updatedAt
Date
该对象最后一次被修改的时间。
这些属性的值会在对象被存入云端时自动填入,代码中尚未保存的 AVObject
不存在这些属性。
属性名(keys)只能包含字母、数字和下划线。自定义属性不得以双下划线(__
)开头或与任何系统保留字段和内置属性(ACL
、className
、createdAt
、objectId
和 updatedAt
)重名,无论大小写。
属性值(values)可以是字符串、数字、布尔值、数组或字典(任何能以 JSON 编码的数据)。参见 数据类型。
我们推荐使用驼峰式命名法(CamelCase)为类和属性来取名。类,采用大驼峰法,如 CustomData
。属性,采用小驼峰法,如 imageUrl
。
如何从服务端获取后台数据到前端展示判断呢?https://leancloud.cn/docs/leanstorage_guide-java.html#hash632314851
2、对于已经保存到云端的AVObject
,可以通过它的 objectId
将其取回:
AVQuery query = new AVQuery("Todo");
query.getInBackground("582570f38ac247004f39c24b").subscribe(new Observer() {
public void onSubscribe(Disposable disposable) {}
public void onNext(AVObject todo) {
// todo 就是 objectId 为 582570f38ac247004f39c24b 的 Todo 实例
String title = todo.getString("title");
int priority = todo.getInt("priority");
// 获取内置属性
String objectId = todo.getObjectId();
Date updatedAt = todo.getUpdatedAt();
Date createdAt = todo.getCreatedAt();
}
public void onError(Throwable throwable) {}
public void onComplete() {}
});
对象拿到之后,可以通过 get
方法来获取各个属性的值。注意 objectId
、updatedAt
和createdAt
这三个内置属性不能通过 get
获取或通过 set
修改,只能由云端自动进行填充。尚未保存的 AVObject
不存在这些属性。
如果你试图获取一个不存在的属性,SDK 不会报错,而是会返回 null
。
上面两个是对leancloud的简单使用示例,官网上有很多好用的API,有兴趣的可以试试。
https://leancloud.cn/docs/leanstorage_guide-java.html#hash-618786915