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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM