华为AppGallery Connect提供了一个云存储(CloudStorage)的服务,号称提供了一个便捷的云端存储服务,利用开发者应用的时候,能够不必关注服务器的部署,间接应用就行。

目前这个性能还在beta阶段,我先领先体验了一下。

1、环境与利用信息

AGC地址:https://developer.huawei.com/consumer/cn/service/josp/agc/index.html

SDK集成形式:在Cocos Creator中开明集成

2、在AGC上开明云存储:

PS: 云存储服务目前还处于beta状态,应用前应该发邮件去申请开明:

https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-cloudstorage-apply

我的我的项目 下抉择你的开发我的项目,在构建上面,找到云存储服务,点击开明:

没有Android我的项目的话,能够先本人创立一个。

开明服务的时候,须要先配置存储实例,这里按需配置就能够,我就轻易配置一个。

下一步,还须要配置安全策略,这里应用默认的安全策略就好:

PS:默认的状况是,只有通过身份认证的用户能力进行读写。

3、在Cocos Creator我的项目集成SDK

3.1 集成SDK

官网文档:https://docs.cocos.com/creator/manual/zh/cocos-service/agc-applinking.html

(1)在 Cocos 服务面板接入所需的云存储服务。目前 SDK 仅反对 Android 平台

(2)接入相干的服务前,须要先关联APP,在服务界面点击启用后,再点击 关联 按钮,点击创立后,会跳转到Cocos的治理台,

(3)能够依据集体须要创立一个新游戏

(4)创立实现后,就能够回到Cocos Creator界面新建,刷新和抉择进行利用的关联,

(5)而后就能够回到云存储界面,能够正式进行服务的开明了

(6)服务开明当前,须要配置默认的存储实例,此处须要填写AGC界面上的曾经开明云存储的我的项目的默认桶。

3.2 下载json文件

(1) 服务开明当前,回到我的项目设置界面,下载最新的json文件。

(2)将刚下载好json文件,放到Cocos我的项目的settings目录下

4、前置步骤

4.1 批改平安规定

默认的平安规定下,须要通过华为认证的用户,能力进行云存储文件操作。

为了集成不便,顺便批改云存储的平安规定,将平安规定批改为全副容许,此时无需通过华为认证,就能够对云存储中的文件进行操作。

// 全副容许 agc.cloud.storage[   match: /{bucket}/{path=**} {      allow read, write:  if true;   }]

4.2 界面布局

在Cocos Creator上设置几个按钮,通过点击按钮来实现性能:包含例举文件,上传,下载文件,和删除文件的按钮。

5、 性能开发:

5.1 初始化,并且在Start中创立监听

start () {              this._storage = huawei.agc.storage;                 this._storage.storageService.on("error", data => console.log("Cloud Storage", `error : ${data.errCode}:${data.errMsg}`), this);                 this._storage.storageService.on("get-file-metadata", data => console.log("Cloud Storage", JSON.stringify(data)), this);                 this._storage.storageService.on("update-file-metadata", data => console.log("Cloud Storage", JSON.stringify(data)), this);                 this._storage.storageService.on("delete-file", data => console.log("Cloud Storage", JSON.stringify(data)), this);                 this._storage.storageService.on("list-file", data => console.log("Cloud Storage", JSON.stringify(data)), this);                 this._storage.storageService.on("get-download-url", data => console.log("Cloud Storage", JSON.stringify(data)), this);                 this._storage.storageService.on("task", data => {                         console.log("Cloud Storage", JSON.stringify(data));                         if (data.task instanceof this._storage.AGCDownloadTask && data.status === 'successful') {                                  jsb.fileUtils.renameFile(jsb.fileUtils.getWritablePath() + "/output.json", jsb.fileUtils.getWritablePath() + "/output1.json");                         }                 }, this);                 // 创立根目录的援用                 this.rootReference = huawei.agc.storage.storageService.getInstance().getStorageReference();    },

5.2 例举文件

应用ListALL办法,例举所有文件:

listAll:function () {    this.rootReference.listAll();    console.log('Cloud Storage', 'ListAll file');}

5.3 下载文件

下载一个云端的,名为test.jpg的文件,并且重新命名为test1.jpg。

download:function () {// 先 delete 文件,防止文件已存在导致下载失败jsb.fileUtils.removeFile(jsb.fileUtils.getWritablePath() + "/test.jpg");this.rootReference.child("test.jpg").getFile(jsb.fileUtils.getWritablePath() + "/test1.jpg");console.log('Cloud Storage', 'download test.jpg, and reNamed test1.jpg');},

5.4 上传文件

上传刚刚下载的test1.jpg文件

 upload:function () {                 if (!jsb.fileUtils.isFileExist(jsb.fileUtils.getWritablePath() + "/test1.jpg")) {                         return console.log('Cloud Storage', 'local file test1.jpg not exist, please click Download!')                 }        this.rootReference.child("test1.jpg").putFile(jsb.fileUtils.getWritablePath() + "/test1.jpg");        console.log('Cloud Storage', 'upload test1.jpg');    },

5.5 删除文件

删除本地的,以及云端的test1.jpg文件。

 delete:function () {        this.rootReference.child("test1.jpg").delete();        console.log('Cloud Storage', 'delete test1.jpg success!')                 jsb.fileUtils.removeFile(jsb.fileUtils.getWritablePath() + "/test1.jpg");        },

6、打包测试:

应用Cocos creator的build,打包一个Android文件,并且装置到设施上,验证性能点是否正确。

android:allowBackup="false"

留神打包的时候,如果API抉择的是android-30,则须要把AndroidManifest文件中的android:allowBackup属性,批改为false。

6.1 例举文件

点击ListALL按钮,在Logcat中查看所有列举的文件:在日志中筛选查看Cloud Storage,查看后果

6.2 下载文件

点击download按钮,在日志中查看下载后果:

6.3 上传文件

点击Upload按钮,在日志中查看下载后果:

此时在AGC界面上,也能够看到刚刚上传的test1.jpg文件

6.4 删除文件

点击delete按钮,在日志中查看下载后果:

此时在AGC界面上,也能够刚刚上传的test1.jpg文件曾经被删除

7、总结

仅关注前端利用的开发,就能够在Cocos上开发一个带云端存储服务性能的游戏。再也不必为了服务器的搭建和运维放心,省时省力。而且还提供了相似于管理员模式的web控制台,能够简略直观的对服务器上的文件进行治理。

这个云存储服务,除了最一般的上传下载和删除性能,还包含有设置元数据等性能,具体能够看官网文档:

  欲了解更多详情,请参见:

  云存储服务开发指南:

https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-cloudstorage-introduction

  Cocos对于云存储的文档:
https://docs.cocos.com/creator/manual/zh/cocos-service/agc-cloudstorage.html


原文链接:
https://developer.huawei.com/consumer/cn/forum/topic/0201419625098590546?fid=0101271690375130218
作者:Jessyyyyy