10 preguntas para el soporte de HMS en aplicaciones híbridas, AppGallery y emulación de teléfono Huawei





¡Hola, Habr! La cantidad de servicios en el ecosistema de Huawei Mobile Services (HMS) por año. aumentó de 9 a 31, y los desarrolladores comenzaron a tener cada vez más preguntas sobre el soporte de aplicaciones híbridas, la interacción con AppGallery, el uso de servicios individuales y ballenas. Las principales plataformas para nuestra comunicación con la comunidad global son Stackoverflow , Reddit , XDA-Developers y la sección de soporte en el portal de desarrolladores de Huawei. Especialmente para aquellos que estén interesados ​​en nuestra plataforma, hemos recopilado 10 preguntas sobre cómo trabajar con los servicios móviles de Huawei en estos sitios. 



1. ¿Funcionarán React-native y Firebase SDK en teléfonos Huawei sin el servicio de Google y sin cambios de código? 



Sí, la aplicación React-native funcionará sin modificaciones, solo envíe el APK para cargarlo en la galería de aplicaciones de Huawei. El SDK de Firebase es un poco complicado. El rendimiento de su aplicación depende de los servicios que está intentando incluir en su aplicación. Por ejemplo, iniciar sesión en Google mediante el módulo de autenticación de Firebase no será compatible con teléfonos que no tengan los servicios móviles de Google, como el Huawei Mate 30 Pro.



Si desea utilizar el mismo APK para GMS y HMS, primero debe verificar la disponibilidad del servicio. 

Para GMS:



val gmsAvailable = GooglePlayServicesUtil.getInstance().isGooglePlayServicesAvailable(mContext)


Para HMS:



val hmsAvailable = HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(mContext)


Al intentar utilizar Google Login, Huawei Login o cualquier otro servicio:



if gmsAvailable {
   // execute GMS Code
} else if hmsAvailable {
   // execute HMS Code
}


2. ¿Cuáles son los costos ocultos reales de mantener un ecosistema adicional?



El costo de mantener una aplicación en un HMS depende de cómo diseñe el sistema y qué servicios requiera su aplicación. En promedio, los tiempos de integración pueden variar desde unas pocas horas hasta unas pocas semanas, según la aplicación y la cantidad de servicios de Google y Firebase en la aplicación original.



Si su aplicación no tiene GMS integrado, puede descargarla sin modificaciones: Facebook, Yandex y otros servicios funcionarán.



3. ¿Qué mashups admite HMS? 



Desde HMS Core 5.0.0, se ha incrementado el número de ballenas compatibles con plataformas de terceros:

 

Apache Cordova:





Reaccionar nativo:





Xamarin:





Aleteo:





4. ¿Puede leer los datos del sensor de profundidad (TOF) en los teléfonos Huawei?



Sí, esto es posible usando AR Engine SDK . Huawei AR Engine proporciona una representación en tiempo real de la cuadrícula de la escena y el resultado incluye la posición del teléfono móvil en el espacio. La cuadrícula 3D de la vista de la cámara actual solo es compatible con los modelos Honor V20 y P30Pro, que pueden recibir información de profundidad, y la escena de escaneo admitida es estática. 



TOF es compatible con los siguientes dispositivos:
  • P: P30 / P30Pro / P40 / P40Pro / P40Pro +

  • Mate: Mate20 / Mate20Pro / Mate20RS / Mate 20X / Mate20X (5G) / Mate30 / Mate30Pro / Mate30RS / Mate30 (5G) / Mate30Pro (5G) / Mate X / Mate XS

  • Nova: Nova6 / Nova6-5G / Nova7 / Nova7Pro

  • Honor: Honor V20 / Honor 20 / Honor 20Pro / Honor V30 / Honor V30Pro / Honor 30S / Honor 30 Pro / Honor 30 Pro +

  • : Tablet M6


Para obtener datos de TOF, use la clase ARSceneMesh usando los siguientes métodos:



public ShortBuffer getSceneDepth()
        // Get the depth image of current frame(optimized).
public int getSceneDepthHeight()
        // Get the height of the depth image.
public int getSceneDepthWidth()
        // Get the width of the depth image.


Hay otras opciones sobre cómo calcular la profundidad. Puede obtener el objeto de la clase ARFrame y usar sus métodos hitTest, generateDepthImage. El método GetSceneDepth de la clase ARSceneMesh también devuelve el mapa de profundidad procesado. Es más preciso, pero solo funciona hasta 2,5 metros.



5. ¿Cómo puedo abrir AppGallery directamente desde la aplicación?



AppGallery de la aplicación se abre de la misma manera que Google Play Store. Tenga en cuenta que AppGallery utiliza su propio esquema de appmarket: //:



  • Esquema: appmarket: //
  • Paquete: com.huawei.appmarket


Aquí hay un fragmento de AppGallery



private void startHuaweiAppGallery() {
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("appmarket://details?id=" + getPackageName()));
    List<ResolveInfo> otherApps = getPackageManager().queryIntentActivities(intent, 0);

    boolean agFound = false;

    for (ResolveInfo app : otherApps) {
        if (app.activityInfo.applicationInfo.packageName.equals("com.huawei.appmarket")) {
            ComponentName psComponent = new ComponentName(app.activityInfo.applicationInfo.packageName, app.activityInfo.name);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP);
            intent.setComponent(psComponent);
            startActivity(intent);

            agFound = true;
            break;
        }
    }

    //Optional, Or copy the Google Play Store URL here (See below)
    if (!agFound) {
        //Your Huawei app ID can be found in the Huawei developer console
        final string HUAWEI_APP_ID = "100864605";

        //ex. https://appgallery.cloud.huawei.com/marketshare/app/C100864605
        intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://appgallery.cloud.huawei.com/marketshare/app/C" + HUAWEI_APP_ID));
        startActivity(intent);
    }
}


6. ¿Cómo crear un emulador de Android para Huawei?



Huawei ofrece a los desarrolladores de Huawei la depuración en la nube como un servicio gratuito. Si está utilizando el SDK de Huawei, debe tener una cuenta de desarrollador de Huawei. Simplemente inicie sesión en la Consola de desarrollador de Huawei y siga las instrucciones .



La función de depuración en la nube es realmente fácil de usar. Permite la depuración remota en dispositivos reales. En el proceso, puede ver la información del dispositivo, descargar e instalar APK en dispositivos remotos, recibir registros de actividad y guardar los registros en su computadora local para su análisis.



7. ¿Cómo acceder a la carga útil de las notificaciones push de HMS?



Para acceder a la carga útil, debe implementar la clase HmsMessageService y anular el método onMessageReceived. Puede acceder a la carga útil desde el objeto RemoteMessage. Para acceder al token, anule el método onNewToken.



Código Java:



import android.util.Log;

import com.huawei.hms.push.HmsMessageService;
import com.huawei.hms.push.RemoteMessage;

public class HService extends HmsMessageService {

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);

        if (remoteMessage != null) {
            if (!remoteMessage.getData().isEmpty()) {
                Log.d("HMS", "Payload" + remoteMessage.getData());
            }

            if (remoteMessage.getNotification() != null) {
                Log.d("HMS", "Message Notification Body: " + remoteMessage.getNotification().getBody());
            }
        }
    }
}


Código Kotlin:



override fun onMessageReceived(remoteMessage: RemoteMessage?) {
        super.onMessageReceived(remoteMessage)

        if (remoteMessage!!.data.isNotEmpty()) {
            Log.i(TAG, "Message data payload: " + remoteMessage.data)
        }

        if (remoteMessage.notification != null) {
            Log.i(TAG, "Message Notification Body: " + remoteMessage.notification.body)
        }
    }


Asegúrese de registrar su servicio:



<service
            android:name=".service.HService"
            android:enabled="true"
            android:exported="true"
            android:permission="${applicationId}.permission.PROCESS_PUSH_MSG"
            android:process=":HmsMessageService">
            <intent-filter>
                <action android:name="com.huawei.push.action.MESSAGING_EVENT" />
            </intent-filter>
   </service>


8. ¿Qué herramientas utilizar al desarrollar una aplicación de Android para teléfonos móviles Huawei?



Para el desarrollo de aplicaciones, puede usar Android Studio y otros IDE como Eclipse, Intelliji IDEA. Si ya tiene una aplicación que utiliza GMS, utilice el kit de herramientas HMS para convertir su código que funciona con GMS para que funcione con HMS. Debe tenerse en cuenta que el HMS Toolkit no admite la conversión de todos los servicios y, antes de usarlo, es mejor aclarar qué servicios puede transferir.



9. ¿Cómo inicializar los servicios HMS sin agconnect-services.json? 



Hasta ahora, HMS no proporciona una única solución de inicialización basada en código. La inicialización sin un archivo json es posible cuando se trabaja con los siguientes servicios:



  • Kit de empuje:



<meta-data        
    android:name="com.huawei.hms.client.appid"        
    <!-- Replace value xxx with the actual appid.-->         
    android:value="appid=xxx">         
</meta-data>


  • Kit de mapas:



MapsInitializer.setApiKey("Your API Key");


  • Kit de sitio:



SearchService searchService = SearchServiceFactory.create(this, "API key");


  • Kit de AA:



MLApplication.getInstance().setApiKey("your ApiKey");


10. ¿Qué puede hacer un sistema de gestión de productos (PMS) en HMS In-App Purchase?



La API del Sistema de gestión de productos (PMS) le permite crear y gestionar la información del producto. A través de él puedes:



  • Crear productos: incluidas suscripciones con renovación automática.

  • Consulta de información de producto: por ejemplo, puedes consultar un producto específico según el ID de la aplicación y el ID del producto, o consultar todos los productos que coincidan con tus criterios especificados.

  • Actualice la información del producto: nombre del producto , idioma, precio y estado. Puede trabajar con uno o varios productos al mismo tiempo.

  • Promocionar productos: la API le permite categorizar campañas publicitarias por región, establecer tiempos de promoción y fijar precios.



Eso es todo por ahora, si tiene alguna pregunta sobre cómo trabajar con HMS, pregúntele en los comentarios.



All Articles