Olá, Habr! O número de serviços no ecossistema Huawei Mobile Services (HMS) por ano. cresceu de 9 para 31, e os desenvolvedores começaram a ter cada vez mais dúvidas sobre o suporte de aplicativos híbridos, interação com AppGallery, uso de serviços individuais e baleias. As principais plataformas para nossa comunicação com a comunidade global são Stackoverflow , Reddit , XDA-Developers e a seção de suporte no portal de desenvolvedores da Huawei. Especialmente para aqueles que estão interessados em nossa plataforma, coletamos desses sites 10 perguntas sobre como trabalhar com a Huawei Mobile Services.
1. O React nativo e o Firebase SDK funcionarão em telefones Huawei sem o serviço Google e sem alterações de código?
Sim, o aplicativo nativo do React funcionará sem modificações, basta enviar o APK para fazer o upload para a Huawei App Gallery. O Firebase SDK é um pouco mais complicado. O desempenho de seu aplicativo depende dos serviços que você está tentando incluir em seu aplicativo. Por exemplo, o login no Google usando o módulo de autenticação Firebase não será compatível com telefones que não possuem o Google Mobile Services, como o Huawei Mate 30 Pro.
Se você deseja usar o mesmo APK para GMS e HMS, primeiro é necessário verificar a disponibilidade do serviço.
Para GMS:
val gmsAvailable = GooglePlayServicesUtil.getInstance().isGooglePlayServicesAvailable(mContext)
Para HMS:
val hmsAvailable = HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(mContext)
Ao tentar usar o login do Google ou Huawei ou qualquer outro serviço:
if gmsAvailable {
// execute GMS Code
} else if hmsAvailable {
// execute HMS Code
}
2. Quais são os custos ocultos reais de apoiar um ecossistema adicional?
O custo de manutenção de um aplicativo no HMS depende de como você projeta o sistema e de quais serviços seu aplicativo requer. Em média, os tempos de integração podem variar de algumas horas a várias semanas, dependendo do aplicativo e do número de serviços do Google e Firebase no aplicativo original.
Se o seu aplicativo não possui GMS integrado, você pode baixá-lo sem nenhuma modificação - Facebook, Yandex e outros serviços funcionarão.
3. Quais mashups o HMS suporta?
Desde o HMS Core 5.0.0, o número de baleias suportadas por plataformas de terceiros aumentou:
Apache Cordova:
- Plug-ins do kit de contas para Cordova
- Plug-ins do Ads Kit para Cordova
- Plugin do Analytics Kit para Cordova
- Plug-in do kit de compras no aplicativo para Cordova
- Plugin do kit de localização para Cordova
- Plugins do Map Kit para Cordova
- Plugins do kit de ML para Cordova
- Plugin Push Kit para Cordova
- Plugins do Site Kit para Cordova
React Native:
- Plug-ins do kit de contas para React Native
- Plug-ins do Ads Kit para React Native
- Plug-in do Analytics Kit para React Native
- Plugin do Health Kit para React Native
- Plug-in do kit de compras no aplicativo para React Native
- Plugin do kit de localização para React Native
- Plug-in Map Kit para React Native
- Plug-ins do kit de ML para React Native
- Plug-in Push Kit para React Native
- Plugins do Site Kit para React Native
Xamarin:
- Plug-ins do kit de contas para Xamarin
- Plug-ins do Ads Kit para Xamarin
- Plug-ins do Analytics Kit para Xamarin
- Plugins do Map Kit para Xamarin
- Plugins do kit de localização para Xamarin
- Plugins do Push Kit para Xamarin
- Plugins do Site Kit para Xamarin
Flutter:
- Plug-ins do kit de conta para Flutter
- Plug-ins do Ads Kit para Flutter
- Plug-ins do Analytics Kit para Flutter
- Plugin do Kit de compras no aplicativo para Flutter
- Plugins do kit de localização para flutter
- Plugins do Map Kit para Flutter
- Plugins do Push Kit para Flutter
- Plugins do Site Kit para Flutter
4. Você consegue ler os dados do sensor de profundidade (TOF) nos telefones Huawei?
Sim, isso é possível usando o AR Engine SDK . O Huawei AR Engine fornece renderização em tempo real da grade de cena e o resultado inclui a posição do telefone móvel no espaço. A grade 3D da visualização da câmera atual só oferece suporte aos modelos Honor V20 e P30Pro, que podem receber informações de profundidade, e a cena de digitalização compatível é estática.
TOF é compatível com os seguintes 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 obter dados do TOF, use a classe ARSceneMesh usando os seguintes 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.
Existem outras opções de como calcular a profundidade. Você pode obter o objeto de classe ARFrame e usar seus métodos hitTest, takingDepthImage. O método GetSceneDepth da classe ARSceneMesh também retorna o mapa de profundidade processado. É mais preciso, mas só funciona até 2,5 metros.
5. Como abrir AppGallery diretamente do aplicativo?
AppGallery do aplicativo é aberto da mesma forma que a Google Play Store. Observe que AppGallery usa seu próprio esquema appmarket: //:
- Esquema: appmarket: //
- Pacote: com.huawei.appmarket
Aqui está um snippet 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. Como criar o Huawei Android Emulator?
A Huawei fornece aos desenvolvedores da Huawei a depuração em nuvem como um serviço gratuito. Se estiver usando o Huawei SDK, você deve ter uma conta de desenvolvedor Huawei. Basta fazer login no Huawei Developer Console e seguir as instruções .
O recurso de depuração em nuvem é realmente fácil de usar. Ele permite a depuração remota em dispositivos reais. No processo, você pode visualizar informações do dispositivo, baixar e instalar APKs em dispositivos remotos, receber logs de operação e salvar os logs em seu computador local para análise.
7. Como acessar a carga de notificações push HMS?
Para acessar a carga útil, você precisa implementar a classe HmsMessageService e substituir o método onMessageReceived. Você pode acessar a carga útil do objeto RemoteMessage. Para acessar o token, substitua o 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)
}
}
Certifique-se de registrar seu serviço:
<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. Quais ferramentas usar ao desenvolver aplicativos Android para telefones celulares Huawei?
Para o desenvolvimento de aplicativos, você pode usar o Android Studio e outros IDEs, como Eclipse, Intelliji IDEA. Se você já tem um aplicativo que usa GMS, use o HMS Toolkit para converter seu código que funciona com GMS para funcionar com HMS. Deve-se ter em mente que o HMS Toolkit não suporta a conversão de todos os serviços, e antes de utilizá-lo, é melhor esclarecer quais serviços ele pode transferir.
9. Como inicializar os serviços HMS sem agconnect-services.json?
O HMS ainda não oferece uma única solução de inicialização baseada em código. A inicialização sem um arquivo json é possível ao trabalhar com os seguintes serviços:
- Push Kit:
<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 do local:
SearchService searchService = SearchServiceFactory.create(this, "API key");
- Kit de ML:
MLApplication.getInstance().setApiKey("your ApiKey");
10. O que um sistema de gerenciamento de produto (PMS) pode fazer no HMS In-App Purchase?
A API do Sistema de Gerenciamento de Produto (PMS) permite que você crie e gerencie informações do produto. Através dele você pode:
- Crie produtos: incluindo assinaturas com renovação automática.
- Consulta de informações do produto: por exemplo, você pode consultar um produto específico com base na ID do aplicativo e na ID do produto, ou consultar todos os produtos que correspondem aos critérios especificados.
- Atualizar informações do produto: nome do produto , idioma, preço e status. Você pode trabalhar com um ou vários produtos ao mesmo tempo.
- Promover produtos: A API permite categorizar campanhas publicitárias por região, definir horários de promoção e preços.
Isso é tudo por agora, se você tiver alguma dúvida sobre como trabalhar com HMS, pergunte nos comentários.