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

目前这个功能还在bate阶段,我先抢先体验了一下。

1、 环境与应用信息

版本名称 集成环境 测试设备
agconnect-storage:1.3.1.100 Unity 2019.4.17f1c1 荣耀magic2

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

2、开通云存储服务

PS: 云存储服务目前还处于beta状态,使用前应该发邮件去申请开通:
https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-cloudstorage-apply

开通步骤也就是界面点击而已,此处就不详细介绍了,大家可以参考之前的文档
https://developer.huawei.com/consumer/cn/forum/topic/0201411971207960391?fid=0101271690375130218

3、导入Unity Package:

官方文档:
https://docs.unity.cn/cn/Packages-cn/com.unity.huaweiservice@1.3/manual/cloudstorage.html

1、 下载Unity Hub,安装Unity
https://unity.cn/releases。 下载安装就不详细介绍了。

2、 Android环境配置:可参考如下截图

3、导入HuaweiServices的Package包:
首先从链接下载package:
https://share.unity.com/receive/?thread=237D-JA9D&packageCode=DzIiMvUpSO7GsT3dPV2M8qyBaw3R5bcbRhwD5RurQNM#keyCode=lkkIcH1nco7DIoL90AOReE0hwINGMsFP7mjwBAkg4_c

(当前该包还未完全对外开放)

下载到本地以后,在Unity中点击assets – Import package

然后,然后选择需要的包,点击Import即可

4、AGC环境配置

1、 配置华为AGC上的参数:回到AGC控制台:找到之前创建的App:

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

2、选择:我的项目-> 构建 – 云存储 点击开通,开通云存储服务,需要配置默认的存储实例名称。(按需配置即可)

为方便无需认证即可读写数据,安全策略配置为:

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

3、 服务开通以后,回到项目设置界面,下载最新的json文件。

4、 将刚下载好json文件,放到Unity项目Assets / Plugins / Android目录下:

注意,如果下载的json文件中,cloudstorage下没有default_storage参数,请手动添加:此处添加的值即为步骤三中配置的默认存储实例。

5、设置Unity中的Android环境:

1、在Player-Publish Setting中启用Android的自定义清单和gradle

2、在Other Setting中配置包名:注意需要和AG官网的包名保持一致:

3、配置项目级gradle,此处对应Assets\Plugins\Android路径下的baseProjectTmeplate.gradle文件,添加如下内容

    allprojects {buildscript {repositories {maven { url 'https://developer.huawei.com/repo/' }}}dependencies {classpath 'com.android.tools.build:gradle:3.4.0'classpath 'com.huawei.agconnect:agcp:1.4.2.301'**BUILD_SCRIPT_DEPS**}}repositories {maven { url 'https://developer.huawei.com/repo/' }}}
  1. 配置应用级gradle,此处对应Assets\Plugins\Android路径下的LauncherTmeplate.gradle文件,添加如下内容:
apply plugin: 'com.android.application'
apply plugin: 'com.huawei.agconnect'dependencies {implementation project(':unityLibrary')
implementation "com.huawei.agconnect:agconnect-storage:1.3.1.100"
implementation 'com.huawei.agconnect:agconnect-auth:1.4.2.301'
  1. 配置Manifest文件:申请读写权限,用于读写文件
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><applicationandroid:allowBackup="false"android:requestLegacyExternalStorage="true" >

6、从零开发云存储功能

1、界面布局:

依次点击GameObject- UI –Button, 创建一个按钮。 点击选中按钮,然后在右侧选择 Add Component, 创建并且添加一个Script文件。在文件中创建对应的方法

2、初始化云存储实例、并且申请读写权限。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HuaweiService;
using HuaweiService.CloudStorage;
using System;public delegate void SuccessCallBack<T>(T o);
public class HmsSuccessListener<T>:OnSuccessListener{public SuccessCallBack<T> CallBack;public HmsSuccessListener(SuccessCallBack<T> c){CallBack = c;}public void onSuccess(T arg0){Debug.Log("OnSuccessListener onSuccess");if(CallBack != null){CallBack.Invoke(arg0);}}public override void onSuccess(AndroidJavaObject arg0){Debug.Log("OnSuccessListener onSuccess");if(CallBack !=null){Type type = typeof(T);IHmsBase ret = (IHmsBase)Activator.CreateInstance(type);ret.obj = arg0;CallBack.Invoke((T)ret);}}
}public class testStorageDemo : MonoBehaviour
{private AGCStorageManagement mAGCStorageManagement;private string[] permissions ={"android.permission.WRITE_EXTERNAL_STORAGE","android.permission.READ_EXTERNAL_STORAGE",};// Start is called before the first frame updatevoid Start(){AndroidJavaClass javaUnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");AndroidJavaObject currentActivity = javaUnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");Activity aaa = HmsUtil.GetHmsBase<Activity>(currentActivity);ActivityCompat.requestPermissions(aaa, permissions, 1);}// Update is called once per framevoid Update(){}public void initAGCStorageManagement() {mAGCStorageManagement = AGCStorageManagement.getInstance("9105385871708601205-ffeon");Debug.Log("Instance is: "+ mAGCStorageManagement);}public class MySuccessListener : OnSuccessListener{private string m_name;public MySuccessListener(string name){m_name = name;}public MySuccessListener(){m_name = "default";}public override void onSuccess(AndroidJavaObject ex){Debug.Log("download success: " + m_name);}}}

3、上传文件:

     public void uploadFile() {if (mAGCStorageManagement == null){initAGCStorageManagement();}string fileName = "testUnity.jpg";StorageReference reference = mAGCStorageManagement.getStorageReference(fileName);string FileFolder = "/storage/emulated/0/AGCSdk/";string FilePath = FileFolder + fileName;Debug.Log("FilePath = " + FilePath);File file = new File(FilePath);Debug.Log("UploadFile = " + file);UploadTask task = reference.putFile(file);task.addOnSuccessListener(new MySuccessListener());Debug.Log("UploadFile done:");}

4、下载文件

public void downloadFile() {if (mAGCStorageManagement == null){initAGCStorageManagement();}StorageReference reference = mAGCStorageManagement.getStorageReference("test.jpg");string FileFolder = "/storage/emulated/0/AGCSdk/";string FilePath = FileFolder + "test.jpg";Debug.Log("FilePath = " + FilePath);File file = new File(FilePath);Debug.Log("File = " + file);DownloadTask task = reference.getFile(file);task.addOnSuccessListener(new MySuccessListener("NormalListener"));Debug.Log("DownloadTask Result:");}

5、删除文件

public void deleteFile() {if (mAGCStorageManagement == null){initAGCStorageManagement();}StorageReference reference = mAGCStorageManagement.getStorageReference("testUnity.jpg");reference.delete();Debug.Log("DeleteFileTest success.");}

6、打包测试

打包的安装好以后,点击每个按钮的同时,可以在Android Logcat中,筛选Unity关键字,查看Debug.Log输出的相关日志。

上传和下载时,同步关注agc界面上文件的变化

7、总结

仅关注前端应用的开发,就可以利用AGC云存储服务在unity上开发一个带云端存储服务功能的游戏,不用为了服务器的搭建和运维担心,省时省力。而且云存储服务还提供了类似于管理员模式的web控制台,可以简单直观的对服务器上的文件进行管理。

这个云存储服务,除了最普通的上传下载和删除功能,还包括有设置元数据等功能,具体可以看官方文档:

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

云存储服务开发指南:

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

Unity关于云存储的文档:

https://docs.unity.cn/cn/Packages-cn/com.unity.huaweiservice@1.3/manual/cloudstorage.html

云存储服务codelab:

https://github.com/AppGalleryConnect/agc-android-demos/tree/master/agc-cloudstorage-demo-java


原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0201454878602100779?fid=0101271690375130218

原作者:Mayism

Unity | 快速集成华为AGC云存储服务相关推荐

  1. 快速集成华为AGC云存储服务-Web

    华为AppGallery Connect提供了一个云存储(CloudStorage)的服务,号称提供了一个便捷的云端存储服务,应用开发者使用的时候,可以不用关注服务器的部署,直接使用就行. 这个服务近 ...

  2. 在快应用中集成华为AGC云存储服务

    目前华为AGC云存储服务已经支持在快应用中集成了,你可以使用云存储服务存储图片.视频.音频等,集成的Demo可以参考Github. 1.安装Node.js环境: 1.下载Node.js安装包:http ...

  3. Unity平台 | 快速集成华为AGC云数据库服务

    1.环境与应用信息 版本名称 集成环境 测试设备 agconnect-database:1.2.3.301 Unity 2019.4.17f1c1 荣耀magic2 OPPO Reno2 AGC地址: ...

  4. Web | 快速集成华为AGC认证服务

    目前,华为AGC认证服务已经支持Web平台了,我这边按照官方文档进行了如下集成,有需要的小伙伴可以参考,也可以自行下载Demo研究. 集成步骤 1. 开通服务 a) 在AGC创建JS应用 b)  开通 ...

  5. 使用docker快速部署owncloud私有云存储服务

    点击在我的博客 xuxusheng.com 中查看,有更好的排版哦~ owncloud 是个好东西,不管是作为私有云来存储文件,或者是分享文件给其他人.多人协作.本地文件夹映射都是非常好用的功能,在各 ...

  6. 华为云存储服务分享文件的方法

    近期项目决定集成使用华为AGC的云存储服务,用来存储用户上传的数据文件,其功能类似于用户的个人云盘,可以将用户数据或者应用内预置贴图等数据,存放在AGC云侧的数据服务器中. 按需下载,可以大幅减小应用 ...

  7. 华为云对象存储OBS,安全可靠的云存储服务,让企业轻松上云

    随着时代的不断发展,不管是个人还是企业对数据的存储要求也越来越高,对于普通人来说,我们可以把文件.视频.图片等等存储到电脑.手机或者U盘等硬件设备中,但对于企业来说,庞大的数据量必须依靠专业的存储设备 ...

  8. SpringBoot集成腾讯云存储COS服务

    前言 该文章会先简单的介绍一下腾讯云的COS存储,然后演示如何在SpringBoot项目中集成COS,每一步都有记录,保证初学者也能看懂. 文章目录 前言 1.腾讯云对象存储介绍 1.1.开通&quo ...

  9. AWS S3云存储服务

    AWS S3云存储服务 1 S3概念及基础知识 2 S3的基本操作 3 S3数据安全 4 S3数据加密以及命令行CLI 4.1 S3加密工作原理 4.1.1 server端的加密 4.1.2 clie ...

最新文章

  1. mysql 5.1 备份_mysql 5.1备份到5.0 USING BTREE
  2. 水仙花python代码_「每日一练」巧用python打印出所有的水仙花数
  3. Source Generator:C# 9 将迎来编译时元编程
  4. STM32位带操作实现过程解析
  5. 今天是 OSChina 上线 6 周年!
  6. [渝粤教育] 西南科技大学 财务会计 在线考试复习资料
  7. 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载 【转】...
  8. 【图文说明】屏幕录像专家如何安装、录制小文件的录像
  9. 2021-04-20
  10. 读后感:救黑熊重要,还是救助失学儿童重要?
  11. Ubuntu用apt-get下载csh
  12. 深度学习之一---什么是神经网络
  13. Android平台下JNI调用第三方so库
  14. freeswitch配置软电话
  15. 学习日常英语(每天更新10+—)
  16. Docker中定制镜像的两种方法
  17. android删除本地图片,Android中结合contentResolver.delete和file.delete实现本地图片的删除...
  18. 20X20 FCPX插件数字信息化故障干扰像素损坏风格英文标题模板GlitchAnimatedTypeface
  19. 微服务是去ESB总线、去中心化和分布式
  20. Ubuntu中编写C语言程序

热门文章

  1. uCOS-III学习笔记(10)----等待多个内核对象
  2. react-router如何传参
  3. [NOI2008] 志愿者招募 (费用流)
  4. win7,如何把文件夹和文件,视图改成平铺,默认是列表
  5. 「蓝桥杯」直线(Java)
  6. Visual Studio如何自动或手动加载康耐视VisionPro控件
  7. [BJDCTF 2nd] web题-假猪套天下第一
  8. sxd文件约束xml,测试xml是否符合规范
  9. 防火墙策略管理-firewalld
  10. shell开启飞行模式_用了这么多年手机才知道,飞行模式还藏着这6个功能