乐趣区

关于android:Cocos快速集成华为AGC云存储服务

华为 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

退出移动版