本演示项目在Unity for Android Build中启用部分华为HMS和AGC服务,对应的类和函数的名称和用法相同。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

13 KiB

云数据库(AGC)

业务介绍

概述

传统的移动应用开发,开发者需要从头开始构建每一个服务,开发工作量大,门槛高。开发者在写应用逻辑之外,还需要解决数据管理、端云数据同步和服务器部署维护等难题。

Cloud DB是一款端云协同的数据库产品,提供端云数据的协同管理、统一的数据模型和丰富的数据管理API接口等能力。在保证数据的可用性、可靠性、一致性,以及安全等特性基础上,能够实现数据在客户端和云端之间的无缝同步,并为应用提供离线支持,以帮助开发者快速构建端云、多端协同的应用。同时,Cloud DB作为AppGallery Connect解决方案的一部分,为AppGallery Connect平台构建了MBaaS(Mobile Backend as a Service,移动后端即服务)能力。从而让应用开发者聚焦于应用本身的业务,极大的提升开发者的生产效率。

申请测试资格

云数据库功能当前仍处于Beta开放状态,在使用此功能前,您需要请先下载表格并填写,然后作为附件发送至agconnect@huawei.com,申请云数据库功能。

邮件标题格式:“[云数据库]-[公司名称]-[开发者帐号ID]-[应用ID]”,开发者帐号ID及项目ID查询方法可参见查询开发者帐号ID及项目ID

在收到您的申请后,华为运营人员会在1-3个工作日内给您答复。

如何收费

云数据库属于资源消耗型服务,未来会基于数据记录条数、存储空间和网络的占用情况来进行收费。目前云数据库功能处于Beta测试期间,您可以免费使用。我们会在正式收费前一个月邮件通知并公告相关策略及费率。

开通云数据库服务时,系统默认为您提供如下配额的免费云数据库服务。

服务类别 配额
云侧存储容量 2GB
最大并发连接数 150
云侧数据库每秒最大操作数 10

使用Cloud DB服务时,如果免费资源配额不能满足开发人员当前的应用程序需求 ,您可下载申请表并填写内容,然后将其发送到电子邮件地址以提交申请。 电子邮件地址和电子邮件标题格式与申请测试资格一致。

华为账号设置

使用入门

申请开通服务

云数据库功能当前仍处于Beta开放状态,在使用此功能前,您需要请先下载表格并填写,然后作为附件发送至agconnect@huawei.com,申请云数据库功能。

邮件标题格式:“[云数据库]-[公司名称]-[开发者帐号ID]-[项目ID]”,开发者帐号ID及项目ID查询方法可参见查询开发者帐号ID及项目ID

在收到您的申请后,华为运营人员会在1-3个工作日内给您答复。

注意:

本邮箱地址仅处理云数据库开通申请,其他咨询类问题请勿发送至本邮箱。

Cloud DB 概述

Cloud DB的数据同步模式包括缓存模式和本地模式,数据同步以存储区为粒度进行设置。在开发应用时,您可以根据应用需求为每个存储区选择不同的数据同步模式。应用可以仅使用缓存模式或者本地模式,也可以同时使用缓存模式和本地模式。缓存模式和本地模式的具体信息如下:

  • 缓存模式 在该模式下,您可实现数据的端云协同管理,实现端云、多端之间的数据同步。应用数据将会储存在云侧,端侧数据是云侧数据的子集,如果允许持久化,Cloud DB支持将查询的结果自动缓存至端侧。缓存数据时,不会覆盖本地未同步完成的数据。
  • 本地模式 在该模式下,用户仅可操作端侧所包含的本地数据,无法实现数据在端云、多端间的同步。

基于Cloud DB服务的应用开发流程如下图所示。

clouddb_1_cn

权限管理

Cloud DB可以验证所有用户的访问权限,以确保应用程序数据的安全性。 默认情况下,从云访问Cloud DB的用户被分配为管理员角色,即从AppGallery Connect控制台或云功能访问Cloud DB的用户默认情况下具有所有权限。 该设备是应用程序运行的地方。 设备上的数据操作受到安全规则的严格限制。设备端数据的读写权限是基于云上的权限管理表来控制的。

Cloud DB支持以缓存模式和本地模式进行应用程序开发。 数据权限管理因模式而异。

  • 在缓存模式下,在设备和云之间建立数据同步通道后,云上的权限管理表将同步到设备,以使设备控制数据权限。
  • 在本地模式下,设备上的数据操作不受云上权限管理表的影响。 设备对设备端数据具有所有操作权限。

注意:

在以下几种缓存模式的场景下,设备侧用户的数据操作权限如下:

  • 在安装应用程序之后和首次建立设备-云同步通道之前,设备侧用户没有任何权限。 设备应用从云中获取权限管理表后,会根据权限配置表分配设备侧用户权限。

  • 如果设备端用户注销了AppGallery Connect身份验证或AppGallery Connect身份验证到期(例如,脱机持续时间超过了身份验证信息的有效期限),则该用户的角色将从Authenticated user 更改为Everyone,并且用户拥有Everyone角色的所有权限。

Cloud DB定义了四个角色:每个人,经过身份验证的用户,数据创建者和管理员,以及三个权限:查询,更新(包括添加和修改)和删除。

表1-1权限配置表

Role Query Upsert Delete
Everyone
Authenticated user
Data creator
Administrator
  • Everyone:所有用户,包括经过身份验证和未经身份验证的用户。默认情况下,此角色具有查询权限,并且不能被授予upsert或delete权限。
  • Authenticated user:已通过AppGallery Connect登录身份验证的用户。默认情况下,此角色具有查询权限,并且可以被授予upsert和delete权限。
  • Data creator:创建数据的authenticated user。每个数据记录都有一个对应的创建者(即应用程序用户)。数据创建者可以upsert或delete仅由他们自己创建的数据。有关数据创建者的信息存储在数据记录的系统表中。默认情况下,此角色具有所有权限,并且可以自定义权限。
  • 管理员:从AppGallery Connect控制台或Function as a Service(FaaS)访问Cloud DB的应用程序开发人员。默认情况下,此角色具有所有权限,并且可以自定义权限。管理员可以管理和配置其他角色的权限。

集成云存储SDK

在将云存储SDK集成到您的应用程序之前,您必须先集成AppGallery Connect SDK和插件。有关详细信息,请参阅AppGallery Connect快速入门

  1. 在 Project Settings 页面上,下载配置文件agconnect-services.json.

    Images/clouddb/clouddb_5.1

    拷贝agconnect-services.json文件到Assets/Plugins/Android文件夹。

    Images/clouddb/clouddb_6

  2. 将导出JAVA文件和导出JSON文件复制到Assets/Plugins/Android 文件夹。

    Images/clouddb/clouddb_7

Unity项目设置

设置 unity 自定义Android manifest and gradle

  1. 在player setting中将平台切换到android

  2. 在player setting中启用 custom manifest and gradle. 以下版本是unity 2019.4

    Images/clouddb/clouddb_8

  3. 设置Package name

    Edit -> Project Settings -> Player -> Android(icon) -> other settings -> Identification -> Package Name 中设置Package name。

    Package Name即为华为项目中应用程序的Package Name。

    Images/clouddb/clouddb_9

启用配置并将其添加到项目Gradle

打开 Edit > Project Settings > Player -> Android(icon) > Publishing Settings > Build。启用Custom Base Gradle Template并将配置添加到Maven repository,路径为Assets/Plugins/Android/baseProjectTemplate.gradle

    allprojects {
        buildscript {
            repositories {
...
                maven { url 'https://developer.huawei.com/repo/' }
            }
           dependencies {
                classpath 'com.android.tools.build:gradle:3.4.0'
                classpath 'com.huawei.agconnect:agcp:1.4.1.300'
           }
...
        }
...
        repositories {
...
            maven { url 'https://developer.huawei.com/repo/' }
...
        }
    }

启用配置并将其添加到应用程序gradle

进入 Edit -> Project Settings -> Player -> Android(icon) -> Publishing Settings -> Build,启用 Custom Launcher Gradle Template 并在 launcherTemplate.gradle 中添加依赖。路径为 Assets/Plugins/Android/LauncherTemplate.gradle

apply plugin: 'com.huawei.agconnect'

dependencies {
...
   implementation project(':unityLibrary')
   implementation 'com.android.support:appcompat-v7:28.0.0'
...
   }

添加CloudDB Kit:

  dependencies {
…
   implementation 'com.huawei.agconnect:agconnect-core:1.2.0.300'
   implementation "com.huawei.agconnect:agconnect-database:1.2.2.301"
...
}

早期版本

如果Unity版本是2019.2或更早版本,则应在 MainGradleTemplate.gradle上添加工具和其他配置。

 
buildscript {
            repositories {
...
                maven { url 'https://developer.huawei.com/repo/' }
...
            }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.4.0'
            classpath 'com.huawei.agconnect:agcp:1.4.1.300'
       }

...
        }
…
allprojects {
        repositories {
...
            maven { url 'https://developer.huawei.com/repo/' }
...
        }
    }
…
apply plugin: 'com.huawei.agconnect'

dependencies {
...
   implementation 'com.android.support:appcompat-v7:28.0.0'
   implementation 'com.android.support:appcompat-v7:28.0.0'
   implementation 'com.huawei.agconnect:agconnect-core:1.2.0.300'
   implementation "com.huawei.agconnect:agconnect-database:1.2.2.301"
...
   }

SDK集成开发

生成C#模型

进入CloudDB Kit> CloudDB Setting,输入设置参数:

  • JavaCode包名称:导出Java文件时设置的包名称

  • ObjectType JsonFile路径:您导出的json文件的路径。在本文档中,路径为Assets/Plugins/Andriod/model.json

  • 命名空间:生成的C#代码的命名空间。

  • 导出路径:创建一个新字典以放置生成的C#代码。

Images/clouddb/clouddb_10

正确设置所有参数后,单击“Generate Code”。

设置场景

  1. 新建一个场景

    Images/clouddb/clouddb_11

  2. 右键单击并选择UI,然后选择button:

    Images/clouddb/clouddb_12

  3. 将Component添加到button并开发脚本:

    Images/clouddb/clouddb_13

    Images/clouddb/clouddb_14

  4. 编辑脚本:

    Images/clouddb/clouddb_15

示例项目

如果仍有不清楚的地方,可以查看github上的演示。

https://github.com/Unity-Technologies/unity-hms_sdk/blob/master/hmsDemo/Assets/HuaweiServiceDemo/HuaweiCloudDBDemo/Scripts/CloudDBTest.cs