华为AppGallery Connect提供了一个云存储(CloudStorage)的服务,号称提供了一个便捷的云端存储服务,应用开发者使用的时候,能够不用关注服务器的部署,直接使用就行。html
目前这个功能还在beta阶段,我先抢先体验了一下。前端
AGC地址:https://developer.huawei.com/consumer/cn/service/josp/agc/index.html java
SDK集成方式:在Cocos Creator中开通集成android
PS: 云存储服务目前还处于beta状态,使用前应该发邮件去申请开通:web
https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-cloudstorage-applyjson
在个人项目 下选择你的开发项目,在构建下面,找到云存储服务,点击开通:安全
没有Android项目的话,能够先本身建立一个。服务器
开通服务的时候,须要先配置存储实例,这里按需配置就能够,我就随便配置一个。app
下一步,还须要配置安全策略,这里使用默认的安全策略就好:运维
PS:默认的状况是,只有通过身份认证的用户才能进行读写。
官方文档: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界面上的已经开通云存储的项目的默认桶。
(1) 服务开通之后,回到项目设置界面,下载最新的json文件。
(2)将刚下载好json文件,放到Cocos项目的settings目录下
默认的安全规则下,须要通过华为认证的用户,才能进行云存储文件操做。
为了集成方便,特意修改云存储的安全规则,将安全规则修改成所有容许,此时无需通过华为认证,就能够对云存储中的文件进行操做。
// 所有容许 agc.cloud.storage[ match: /{bucket}/{path=**} { allow read, write: if true; } ]
在Cocos Creator上设置几个按钮,经过点击按钮来实现功能:包括例举文件,上传,下载文件,和删除文件的按钮。
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(); },
使用ListALL方法,例举全部文件:
listAll:function () { this.rootReference.listAll(); console.log('Cloud Storage', 'ListAll file'); }
下载一个云端的,名为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'); },
上传刚刚下载的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'); },
删除本地的,以及云端的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"); },
使用Cocos creator的build,打包一个Android文件,而且安装到设备上,验证功能点是否正确。
android:allowBackup="false"
注意打包的时候,若是API选择的是android-30,则须要把AndroidManifest文件中的android:allowBackup属性,修改成false。
点击ListALL按钮,在Logcat中查看全部列举的文件:在日志中筛选查看Cloud Storage,查看结果
点击download按钮,在日志中查看下载结果:
点击Upload按钮,在日志中查看下载结果:
此时在AGC界面上,也能够看到刚刚上传的test1.jpg文件
点击delete按钮,在日志中查看下载结果:
此时在AGC界面上,也能够刚刚上传的test1.jpg文件已经被删除
仅关注前端应用的开发,就能够在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