Unity | Integre rápidamente el servicio de almacenamiento en la nube de Huawei AGC

Huawei AppGallery Connect proporciona un servicio de almacenamiento en la nube (CloudStorage), que pretende proporcionar un servicio de almacenamiento en la nube conveniente. Cuando los desarrolladores de aplicaciones lo usan, pueden usarlo directamente sin prestar atención a la implementación del servidor.

En la actualidad, esta función aún se encuentra en la etapa de bate, primero la probé.

1. Información medioambiental y de aplicación

Nombre de la versión Entorno integrado Equipo de prueba
agconnect-storage: 1.3.1.100 Unidad 2019.4.17f1c1 Magia de gloria2

Dirección AGC:https://developer.huawei.com/consumer/cn/service/josp/agc/index.html

2. Servicio de almacenamiento en la nube abierta

PD: El servicio de almacenamiento en la nube se encuentra actualmente en estado beta, debe enviar un correo electrónico para solicitar la activación antes de su uso:
https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-cloudstorage-apply

El paso de apertura es solo un clic en la interfaz. No lo presentaré en detalle aquí. Puede consultar el documento anterior.
https://developer.huawei.com/consumer/cn/forum/topic/0201411971207960391?fid=0101271690375130218

3. Importar paquete de Unity:

Documentos oficiales:
https://docs.unity.cn/cn/Packages-cn/[email protected]/manual/cloudstorage.html

1. Descargue Unity Hub e instale Unity
https://unity.cn/releases . La descarga y la instalación no se introducirán en detalle.

2. Configuración del entorno Android: consulte la captura de pantalla a continuación

Inserte la descripción de la imagen aquí

3. Importe el paquete de servicios de Huawei:
Primero descargue el paquete desde el enlace:
https://share.unity.com/receive/?thread=237D-JA9D&packageCode=DzIiMvUpSO7GsT3dPV2M8qyBaw3R5bcbRhwD5RurQNM#keyCode=lkkIcH1nco7DIoL90AOReE0hwINGMsFP7m

(Actualmente, el paquete aún no está completamente abierto al mundo exterior)

Después de descargar al local, haga clic en activos - Importar paquete en Unity
Inserte la descripción de la imagen aquí

Luego, seleccione el paquete requerido y haga clic en Importar

4. Configuración del entorno AGC

1. Configure los parámetros en Huawei AGC: Regrese a la consola AGC: Busque la aplicación creada anteriormente:

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

2. Seleccione: Mi proyecto -> Build-Cloud Storage y haga clic en Activar para activar el servicio de almacenamiento en la nube Necesita configurar el nombre de la instancia de almacenamiento predeterminado. (Configure según sea necesario)

Para facilitar la lectura y escritura de datos sin autenticación, la política de seguridad se configura de la siguiente manera:

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

3. Una vez activado el servicio, vuelva a la interfaz de configuración del proyecto y descargue el archivo json más reciente.

Inserte la descripción de la imagen aquí

4. Coloque el archivo json recién descargado en el directorio Assets / Plugins / Android del proyecto Unity:

Tenga en cuenta que si no hay un parámetro default_storage en cloudstorage en el archivo json descargado, agréguelo manualmente: el valor agregado aquí es la instancia de almacenamiento predeterminada configurada en el paso 3.

Inserte la descripción de la imagen aquí

5. Configure el entorno de Android en Unity:

1. Habilite la lista personalizada de Android y gradle en la configuración de publicación de jugador

Inserte la descripción de la imagen aquí

2. Configure el nombre del paquete en Otra configuración: tenga en cuenta que debe ser coherente con el nombre del paquete en el sitio web oficial de AG:

Inserte la descripción de la imagen aquí

3. Configure el gradle a nivel de proyecto, que corresponde al archivo baseProjectTmeplate.gradle en la ruta Assets \ Plugins \ Android, y agregue el siguiente contenido

    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. Configure el gradle a nivel de aplicación, aquí corresponde al archivo LauncherTmeplate.gradle en la ruta Assets \ Plugins \ Android, agregue el siguiente contenido:
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. Configure el archivo de manifiesto: solicite permisos de lectura y escritura para leer y escribir archivos
<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" />

    <application
        android:allowBackup="false"
        android:requestLegacyExternalStorage="true" >

6. Desarrolle funciones de almacenamiento en la nube desde cero

1. Diseño de la interfaz:

Haga clic en GameObject-UI -Button a su vez para crear un botón. Haga clic en el botón de verificación y luego seleccione Agregar componente a la derecha para crear y agregar un archivo de secuencia de comandos. Crea el método correspondiente en el archivo.

Inserte la descripción de la imagen aquí

2. Inicialice la instancia de almacenamiento en la nube y solicite permisos de lectura y escritura.

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 update
    void 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 frame
    void 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. Cargar archivos:

     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. Descarga de archivos

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. Eliminar archivos

public void deleteFile() {
        if (mAGCStorageManagement == null){
            initAGCStorageManagement();
        }

        StorageReference reference = mAGCStorageManagement.getStorageReference("testUnity.jpg");
        reference.delete();
        Debug.Log("DeleteFileTest success.");
    }

6, prueba de paquete

Una vez instalado el paquete, al hacer clic en cada botón, puede filtrar las palabras clave de Unity en el Logcat de Android y ver la salida de registros relacionados por Debug.Log.

Al cargar y descargar, preste atención sincrónicamente a los cambios de los archivos en la interfaz agc

7. Resumen

Concentrándose únicamente en el desarrollo de aplicaciones front-end, puede utilizar el servicio de almacenamiento en la nube de AGC para desarrollar un juego con funciones de servicio de almacenamiento en la nube en Unity, sin preocuparse por la construcción, operación y mantenimiento del servidor, ahorrando tiempo y esfuerzo. Además, el servicio de almacenamiento en la nube también proporciona una consola web similar al modo administrador, que puede administrar archivos en el servidor de manera simple e intuitiva.

Además de las funciones de carga, descarga y eliminación más comunes, este servicio de almacenamiento en la nube también incluye funciones como la configuración de metadatos. Para obtener más información, consulte el documento oficial:

Para obtener más detalles, consulte:

Guía de desarrollo del servicio de almacenamiento en la nube:

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

Documentación de Unity sobre almacenamiento en la nube:

https://docs.unity.cn/cn/Packages-cn/[email protected]/manual/cloudstorage.html

Codelab del servicio de almacenamiento en la nube:

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


Enlace original:https://developer.huawei.com/consumer/cn/forum/topic/0201454878602100779?fid=0101271690375130218

Autor: Mayism

Supongo que te gusta

Origin blog.51cto.com/14772288/2661131
Recomendado
Clasificación