# 云存储(AGC)
## 业务介绍
### 概述
云存储是专为开发者打造的可伸缩、免维护的云端存储服务,您可以用于存储图片、音频、视频或其他由用户生成的内容。
云存储具备稳定、安全、高效、易用的特点,开发者无需关心存储服务器的开发、部署、运维、扩容等事务,及可用性、可靠性、持久性等指标,降低应用使用存储的门槛,让开发者可专注于业务能力的构建、运营和提升用户口碑。
### 优势
云存储SDK提供简单、安全、高效、健壮的API接口,开发者使用支持云存储的SDK来存储图片、视频、音频或用户生成的其他类型文件。
* 全流程使用HTTPS协议对用户的传输数据进行加密保护,并采用安全的加密协议将文件加密存储在云端。
* 因网络原因或用户原因导致的操作中止,只需要简单的传入操作中止的位置,就可以尝试重新开始该操作。
* 提供EB级的数据存储,解决开发者海量数据存储的难题。
* 开发者简单的判断返回异常就可以定位出错误原因,定位快捷方便。
### 工作原理
使用云存储服务提供的SDK,可以向云存储空间上传文件,云存储服务将您上传的文件存储在默认的存储实例中,您可以通过AppGallery Connect(简称AGC)访问这些文件。当然,您还可以使用云存储SDK的API执行下载、删除、管理文件等操作。
### 申请测试资格
云存储服务当前仍处于Beta开放状态,在使用此服务前,您需要向agconnect@huawei.com发送申请邮件,申请开通云存储服务。
邮件标题请使用如下格式:“[云存储]-[_公司名称_]-[开发者帐号_ID_]-[项目_ID_]”,开发者帐号ID及项目ID查询方法可参见[查询开发者帐号ID及项目ID](https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-query-ID)。
在收到您的申请后,华为运营人员会在1-3个工作日内给您答复。
### 如何收费
云存储属于资源消耗型服务,未来会基于存储量、流量、请求操作次数等情况进行收费。目前云存储服务处于Beta测试阶段,采取限量免费的策略,您可以在一定配额内免费使用。
## 华为账号设置
注意:Beta版目前仅支持中国和新加坡站点。如有任何更改,请注意网站通告。
### 申请开通服务
云存储服务当前仍处于Beta开放状态,在使用此服务前,您需要向agconnect@huawei.com发送申请邮件,申请开通云存储服务。
邮件标题请使用如下格式:“[云存储]-[_公司名称_]-[开发者帐号_ID_]-[项目_ID_]”,开发者帐号ID及项目ID查询方法可参见[查询开发者帐号ID及项目ID](https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-query-ID)。
在收到您的申请后,华为运营人员会在1-3个工作日内给您答复。
**注意:**
本邮箱地址仅处理AGC服务开通申请,其他咨询类问题请勿发送至本邮箱。
### 创建项目和添加应用
如果您尚未添加项目,请在[AppGallery Connect 网站](https://developer.huawei.com/consumer/cn/service/josp/agc/index.html)先创建您的AGC项目并在项目下添加应用,具体请参见[Android使用入门](https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-get-started#createproject)。
### 接入认证服务
具体请参考[认证服务开发指南](https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-auth-introduction-0000001053732605)。
### 启用服务
首次使用云存储服务前,需要先启用此服务。如果您已经启用,可跳过本步骤。
1. 登录[AppGallery Connect网站](https://developer.huawei.com/consumer/cn/service/josp/agc/index.html),点击“我的项目”。
2. 在项目列表中找到您的项目,在项目下的应用列表中选择需要启用App Linking的应用。
3. 选择 **构建 > 云存储**,进入云存储页面,点击 **立即开通**。
4. 在引导界面输入存储实例名称和选择“数据存储位置”。
![Images/cloudstorage/cloudstorage_1](Images/cloudstorage/cloudstorage_1_cn.png)
5. 单击 **下一步**,进入默认安全策略设置界面。
![Images/cloudstorage/cloudstorage_2](Images/cloudstorage/cloudstorage_2_cn.png)
6. 单击 **完成**,开通存储成功。
## Unity项目设置
1. 在player setting中启用 custom manifest and gradle. 以下版本是unity **2019.4**
2. 添加配置文件并集成AppGallery Connect SDK。
有关详细信息,请参阅[集成AppGallery Connect SDK](https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/agc-get-started#agcsdk)。
注意:
启用Cloud Storage后,在集成AppGallery Connect的Cloud Storage SDK之前,请转到 **我的项目>项目设置>常规信息**,并在App信息区域中下载`agconnect-services.json`文件,然后检查是否已在该服务下设置了文件的 `default_storage ->cloudstorage`部分。否则,SDK将无法找到用于初始化的默认存储实例,您需要在文件部分添加`default_storage`以设置默认存储实例。 `default_storage`的值是在 **项目设置>构建>云存储** 页面上的存储实例框中输入的名称。
```
"cloudstorage":{
"default_storage":"Name of the storage instance to be used by default."
"storage_url":"https://agc-storage-drcn.platform.dbankcloud.cn"
}
```
3. 集成Cloud Storage SDK。
将Cloud Storage SDK的Maven存储库地址添加到app级别的`launcherTemplate.gradle`文件(通常在app目录中)。
```
implementation "com.huawei.agconnect:agconnect-storage:1.3.1.200"
implementation 'com.huawei.agconnect:agconnect-core:1.4.2.300'
implementation 'com.huawei.agconnect:agconnect-credential:1.6.1.300'
implementation 'com.huawei.agconnect:agconnect-auth:1.6.1.300'
```
4. 要读取和写入文件并访问网络,您需要在`AndroidMainfest.xml`文件中配置以下权限:
```
```
5. 如果您的应用程序用的是Android SDK 29或更高版本集成,则还需要在`AndroidMainfest.xml`的application下添加以下属性:
```
Project Settings -> Player -> Android(icon) -> other settings** 中
![Images/cloudstorage/cloudstorage_2.2](Images/cloudstorage/cloudstorage_2.2.png)
设置与您的json文件相对应的Package name,并且目标api级别应低于29。
(如果目标api级别高于29,请参考[使用入门](https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-cloudstorage-getstarted).4 )
## SDK集成开发
### 设置场景
1. 新建一个场景
![Images/cloudstorage/cloudstorage_2.3](Images/cloudstorage/cloudstorage_2.3.png)
2. 右键单击并选择UI,然后选择按钮:
![Images/cloudstorage/cloudstorage_2.4](Images/cloudstorage/cloudstorage_2.4.png)
3. 将组件添加到按钮并开发脚本:
![Images/cloudstorage/cloudstorage_2.5](Images/cloudstorage/cloudstorage_2.5.png)
![Images/cloudstorage/cloudstorage_2.6](Images/cloudstorage/cloudstorage_2.6.png)
4. 编辑脚本:
![Images/cloudstorage/cloudstorage_2.7](Images/cloudstorage/cloudstorage_2.7.png)
双击脚本文件,您将在VS code中打开它。
![Images/cloudstorage/cloudstorage_2.8](Images/cloudstorage/cloudstorage_2.8.png)
5. 使用API
```
void Start()
{
deleteFile();
}
// Update is called once per frame
void Update()
{
}
void deleteFile()
{
AGCStorageManagement mAGCStorageManagement = mAGCStorageManagement = AGCStorageManagement.getInstance();
StorageReference reference = mAGCStorageManagement.getStorageReference("addOnCompleteListenerTest.data");
reference.delete();
Debug.Log("DeleteFileTest success.");
}
```
用上述代码创建函数
6. 绑定脚本中的按钮和接口
![Images/cloudstorage/cloudstorage_2.9](Images/cloudstorage/cloudstorage_2.9.png)
- 步骤1:点击“ +”添加功能
- 步骤2:选择具有您要使用的界面的对应场景
- 步骤3:单击“No Function”以选择脚本,然后选择相应的函数
![Images/cloudstorage/cloudstorage_2.11](Images/cloudstorage/cloudstorage_2.11.png)
### 示例项目
如何使用示例项目?
1. 从以下位置创建存储库:[https://github.com/Unity-Technologies/unity-hms_sdk/tree/cloud_storage_test](https://github.com/Unity-Technologies/unity-hms_sdk/tree/cloud_storage_test) 并checkout“ cloud_storage_test”分支。
2. 从您的远程项目中替换agconnect-services.json文件并配置gradle文件,请参阅第3部分:如何将AppGallery Connect SDK集成到Unity项目中?
3. 打开Unity Hub,添加HuaweiService项目(Unity版本2019.3+)。
**注意: **
如果编辑器版本不匹配,请单击继续
![Images/cloudstorage/cloudstorage_4](Images/cloudstorage/cloudstorage_4.png)
4. 将平台切换到Android并打开性能测试场景:`Assets/HuaweiHmsDemo/HmsPerformanceSampleTest`
如果有这样的编译错误:
>Microsoft (R) Visual C# Compiler version 2.9.1.65535 (9d34608e)
>Copyright (C) Microsoft Corporation. All rights reserved.
> error CS0009: Metadata file '/Users/yanmeng/Desktop/unity_agc_new/unity-hms_sdk/hmsDemo/Library/ScriptAssemblies/Unity.Timeline.Editor.dll' could not be opened -- Image is too small.
> Assets/HuaweiHms/src/hms/Wrapper/fundation/HmsClass.cs(72,25): warning CS0693: Type parameter 'T' has the same name as the type parameter from outer type 'HmsClass'
重新打开该项目可以解决此问题。
5. 设置Android build keystore
在 **Build Settings -> Android -> PlayerSettings-> Publish Settings** 中。如下所示。 hhmm的密码为123456。
![Images/cloudstorage/cloudstorage_5](Images/cloudstorage/cloudstorage_5.png)
6. 生成android apk并在Android设备上运行。
在下载测试之前,请检查您是否已在测试设备中获得读/写权限。
![Images/cloudstorage/cloudstorage_7](Images/cloudstorage/cloudstorage_7.png)