您当前的位置: 首页 >  服务器
  • 0浏览

    0关注

    674博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Android使用leanCloud实现和后台服务器交互

沙漠一只雕得儿得儿 发布时间:2020-03-29 18:19:24 ,浏览量:0

一、leancloud基础安装和使用:

首先我们需要去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 已经正确地执行了上述代码,安装完毕。

æ°æ®è¡¨ä¸­åºç°ä¸è¡ãwordsãå¼ä¸ºãHello world!ãçæ°æ®ã

二、leancloud前端和后台相互访问: 1、下面的代码将一个 class 为 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 不存在,它将自动创建。

以下是一些对象的内置属性,会在对象保存时自动创建,无需手动指定:

内置属性类型描述objectIdString该对象唯一的 ID 标识。ACLAVACL该对象的权限控制,实际上是一个 JSON 对象,控制台做了展现优化。createdAtDate该对象被创建的时间。updatedAtDate该对象最后一次被修改的时间。

这些属性的值会在对象被存入云端时自动填入,代码中尚未保存的 AVObject 不存在这些属性。

属性名(keys)只能包含字母、数字和下划线。自定义属性不得以双下划线(__)开头或与任何系统保留字段和内置属性(ACLclassNamecreatedAtobjectId 和 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 方法来获取各个属性的值。注意 objectIdupdatedAtcreatedAt 这三个内置属性不能通过 get 获取或通过 set 修改,只能由云端自动进行填充。尚未保存的 AVObject 不存在这些属性。

如果你试图获取一个不存在的属性,SDK 不会报错,而是会返回 null

上面两个是对leancloud的简单使用示例,官网上有很多好用的API,有兴趣的可以试试。

https://leancloud.cn/docs/leanstorage_guide-java.html#hash-618786915

关注
打赏
1657159701
查看更多评论
立即登录/注册

微信扫码登录

0.0461s