Plataforma Unity | Integre rápidamente el servicio de base de datos en la nube de Huawei AGC

1. Información medioambiental y de aplicación

Nombre de la versión Entorno integrado Equipo de prueba
agconnect-database: 1.2.3.301 Unidad 2019.4.17f1c1 Honor magic2 OPPO Reno2

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

2. Preparación del entorno de Unity:

Documentos oficiales:

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

1. Descarga Unity Hub e instala 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 HuaweiServices:

Busque los servicios de Huawei en Assect Store, busque el paquete AGC y luego haga clic en Importar para importar el paquete correspondiente.

Inserte la descripción de la imagen aquí

3. Configuración del entorno AGC

1. Configure los parámetros en el AGC de Huawei: Vuelva a la consola del AGC: busque la aplicación creada anteriormente:

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

2. Elija: Mi proyecto -> Crear base de datos en la nube Haga clic en Abrir para abrir la base de datos en la nube y luego cree el tipo de objeto y el área de almacenamiento de acuerdo con los requisitos de la documentación de Huawei.

https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-clouddb-get-started#h1-1594006870043-0

En la pestaña Tipo de objeto, haga clic en Agregar para agregar un nuevo tipo de objeto llamado BookInfo, la configuración es la siguiente:

Inserte la descripción de la imagen aquí

En la página del área de almacenamiento, haga clic en Agregar para agregar un área de almacenamiento denominada QuickStartDemo

3. Una vez activado el servicio, vuelva a la interfaz de configuración del proyecto y descargue el archivo json más reciente. En Mi proyecto-Configuración del proyecto-Aplicación general, haga clic en agconnect-services.json para descargar

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

4. Configure el entorno de Android:

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/' }
        }
    }

4. Configure el gradle de nivel de aplicación, que corresponde al archivo LauncherTmeplate.gradle en la ruta Assets \ Plugins \ Android, y agregue el siguiente contenido:

apply plugin: 'com.android.application'
apply plugin: 'com.huawei.agconnect'

dependencies {
implementation project(':unityLibrary')
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.huawei.agconnect:agconnect-core:1.2.0.300'
    implementation "com.huawei.agconnect:agconnect-database:1.2.3.301"
    }

5. Regrese a la interfaz AGC y exporte el archivo de tipo de objeto:

1. Haga clic en "Exportar", seleccione json y exporte el archivo json al directorio Assets / Plugins / Android del proyecto de Unity.

2. Haga clic en "Exportar", seleccione Java, seleccione "Android", configure el nombre del paquete, exporte y descomprima el archivo zip en el directorio Assets / Plugins / Android del proyecto Unity.

6. Genere el archivo CloudDB:

En Unity, haga clic en CloudDB Kit -> Configuración de CloudDB en la barra de menú. La configuración correspondiente es la siguiente:

1. Nombre del paquete JavaCode: configure el nombre del paquete configurado al exportar archivos java

2. ObjectType JsonFile Path: seleccione el archivo json exportado correspondiente: por ejemplo, mi ruta es'Assets / Plugins / Andriod / model.json '

3. Espacio de nombres: el espacio de nombres utilizado por el archivo C # generado.

4. Ruta de exportación: la ruta de almacenamiento del archivo C # exportado

Inserte la descripción de la imagen aquí

5. Desarrollar funciones de base de datos en la nube desde cero

1. Haga clic en GameObject- UI -Button para crear varios botones:

Haga clic en el botón, luego seleccione Agregar componente a la derecha para crear y agregar un archivo de secuencia de comandos. El diseño de la interfaz correspondiente es el siguiente:

Inserte la descripción de la imagen aquí

2. Preparación del código y preparación de la integración:

using System;
using System.Collections;
using UnityEngine;
using HuaweiService;
using HuaweiService.CloudDB;
using HuaweiService.Auth;
using HuaweiServiceDemo;

public class testDBDemo : MonoBehaviour
{
    private static AGConnectCloudDB mCloudDB;
    private static CloudDBZone mCloudDBZone;
    private static CloudDBZoneConfig mConfig;
    private static CloudDBZoneQuery mQuery;
    private const string mClouudDBZoneName = "QuickStartDemo";
    private const string bookInfoClass = "com.huawei.agc.clouddb.quickstart.model.BookInfo";
    private const string testAllClass = "com.huawei.agc.clouddb.quickstart.model.TestAll";
    private static CloudDBZoneObjectList<BookInfo> mObjectList = new CloudDBZoneObjectList<BookInfo> ();

    // 成功回调
    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 delegate void FailureCallBack(HuaweiService.Exception e);
    public class HmsFailureListener : OnFailureListener
    {
        public FailureCallBack CallBack;

        public HmsFailureListener(FailureCallBack c)
        {
            CallBack = c;
        }

        public override void onFailure(HuaweiService.Exception arg0)
        {
            if (CallBack != null)
            {
                CallBack.Invoke(arg0);
            }
        }
}
    // Start is called before the first frame update
    void Start()
    {
        login();
    }

    // Update is called once per frame
    void Update()
    {

    }
}

3. Servicio de autenticación integrado: aquí para facilitar el uso, autenticación anónima integrada

public void login()
    {
        AGConnectAuth auth = AGConnectAuth.getInstance();
        auth.signInAnonymously().addOnSuccessListener(new HuaweiOnsuccessListener<SignInResult>((signresult) =>
        {
            Debug.Log("sign in successfully." + signresult.getUser().getUid());

        })).addOnFailureListener(new HuaweiOnFailureListener((e) =>
        {
            Debug.Log("sign in failed");
        }));
    }

6. Interfaz de base de datos en la nube integrada

1. Inicializar y crear tipos de objetos

    public void CreateObjectType()
    {
        AGConnectCloudDB.initialize(new Context());
        mCloudDB = AGConnectCloudDB.getInstance();
        Debug.Log("CloudDBInstance: " + mCloudDB);
        try
        {
            mCloudDB.createObjectType(ObjectTypeInfoHelper.getObjectTypeInfo());
            Debug.Log("createObjectType:" + mCloudDB );
        }
        catch (System.Exception e)
        {
            Debug.Log("createObjectType: " + e.Message);
        }
    }

2. openCloudZOne, abre el área de almacenamiento

    public void OpenCloudDBZone()
    {
        // Debug.Log("Start OpenCloudDBZone:" + mCloudDB );
        mConfig = new CloudDBZoneConfig("QuickStartDemo",
            CloudDBZoneConfig.CloudDBZoneSyncProperty.CLOUDDBZONE_CLOUD_CACHE,
            CloudDBZoneConfig.CloudDBZoneAccessProperty.CLOUDDBZONE_PUBLIC);
        mConfig.setPersistenceEnabled(true);

        Task openDBZoneTask = mCloudDB.openCloudDBZone2(mConfig, true);
        openDBZoneTask.addOnSuccessListener(new HmsSuccessListener<CloudDBZone>((cloudDBZone) =>
        {
            mCloudDBZone = cloudDBZone;
            Debug.Log("open clouddbzone2 success");
        }))
        .addOnFailureListener(new HmsFailureListener((HuaweiService.Exception e) =>
        {
            Debug.Log("open clouddbzone2 failed " + e.toString());
        }));
    }

3. Insertar datos

    public void upsertBookInfo(){
        if (mCloudDBZone == null)
        {
             Debug.Log("CloudDBZone is null, try re-open it");
            return;
        }
        var bookInfo = new BookInfo { Id = 4, BookName = "test4" };

        Task task = mCloudDBZone.executeUpsert(bookInfo);
        task.addOnSuccessListener(new HmsSuccessListener<int>((cloudDBZoneResult) =>
        {
             Debug.Log("upsert " + cloudDBZoneResult + " records");
        }))

4. Consultar y procesar datos y visualizar

    public void testQueryInfo () {
        mQuery = CloudDBZoneQuery.where (new AndroidJavaClass (bookInfoClass)).equalTo ("shadowFlag", true);
        if (mCloudDBZone == null || mQuery == null) {
            Debug.Log("CloudDBZone or CloudDBZoneQuery is null, try re-open it");
            return;
        }
        Task queryTask = mCloudDBZone.executeQuery (mQuery, CloudDBZoneQuery.CloudDBZoneQueryPolicy.POLICY_QUERY_FROM_CLOUD_ONLY);
        queryTask.addOnSuccessListener (new HmsSuccessListener<CloudDBZoneSnapshot<BookInfo>> ((snapshot) => {
                processQueryResult (snapshot);
        }))
        .addOnFailureListener (new HmsFailureListener ((exception) => {
                Debug.Log ("Query book list from cloud failed: " + exception.toString ());
        }));
    }

    private void processQueryResult (CloudDBZoneSnapshot<BookInfo> snapshot) {
        mObjectList = snapshot.getSnapshotObjects ();
        List<BookInfo> bookInfoList = new List<BookInfo> ();
        try {
            string result = "";
            while (mObjectList.hasNext ()) {
                BookInfo bookInfo = mObjectList.next ();
                bookInfoList.add (bookInfo);
                result += $"{bookInfo.BookName} ";
            }
            Debug.Log ($"QueryResult: {result}");

        } catch (System.Exception e) {
            Debug.Log ($"QueryResult : {e.Message}");
        } finally {
            snapshot.release ();
        }
    }

7, prueba de paquete

1. Haga clic en File-Build and setting para ingresar a la página de empaquetado y cambie la plataforma Android en esta página.

2. Después de seleccionar el equipo correspondiente, haga clic en Construir y ejecutar.

3. Luego, puede ver los registros relacionados con Unity en Android Logcat.

Inserte la descripción de la imagen aquí
Entre ellos, los datos insertados y eliminados se pueden ver en la interfaz AGC.

Para obtener más detalles, consulte:

Demostración de la base de datos en la nube:https://github.com/AppGalleryConnect/agc-demos/tree/main/Android/agc-clouddb-demo-java


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

Autor: Mayism

Supongo que te gusta

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