Bonjour, Habr! Le nombre de services dans l'écosystème Huawei Mobile Services (HMS) par an. est passé de 9 à 31, et les développeurs ont commencé à se poser de plus en plus de questions sur le support des applications hybrides, l'interaction avec AppGallery, l'utilisation de services individuels et les baleines. Les principales plates-formes de communication avec la communauté mondiale sont Stackoverflow , Reddit , XDA-Developers et la section d'assistance sur le portail des développeurs Huawei. Surtout pour ceux qui sont intéressés par notre plateforme, nous avons collecté 10 questions sur l'utilisation des services mobiles Huawei à partir de ces sites.
1. React-native et Firebase SDK fonctionneront-ils sur les téléphones Huawei sans le service Google et sans changement de code?
Oui, l'application native React fonctionnera sans modification, soumettez simplement l'APK à télécharger dans la galerie d'applications Huawei. Le SDK Firebase est un peu plus compliqué. Les performances de votre application dépendent des services que vous essayez d'inclure dans votre application. Par exemple, la connexion à Google à l'aide du module d'authentification Firebase ne sera pas prise en charge sur les téléphones ne disposant pas des services Google Mobile, tels que le Huawei Mate 30 Pro.
Si vous souhaitez utiliser le même APK pour GMS et HMS, vous devez d'abord vérifier la disponibilité du service.
Pour GMS:
val gmsAvailable = GooglePlayServicesUtil.getInstance().isGooglePlayServicesAvailable(mContext)
Pour HMS:
val hmsAvailable = HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(mContext)
Lorsque vous essayez d'utiliser Google Login, Huawei Login ou tout autre service:
if gmsAvailable {
// execute GMS Code
} else if hmsAvailable {
// execute HMS Code
}
2. Quels sont les coûts cachés réels du soutien d'un écosystème supplémentaire?
Le coût de maintenance d'une application dans un HMS dépend de la façon dont vous concevez le système et des services dont votre application a besoin. En moyenne, les délais d'intégration peuvent varier de quelques heures à plusieurs semaines, selon l'application et le nombre de services Google et Firebase dans l'application d'origine.
Si votre application n'a pas de GMS intégré, vous pouvez la télécharger sans aucune modification - Facebook, Yandex et d'autres services fonctionneront.
3. Quels mashups sont pris en charge par HMS?
Depuis HMS Core 5.0.0, le nombre de baleines prises en charge par des plates-formes tierces a été augmenté:
Apache Cordova:
- Plugins Account Kit pour Cordova
- Plugins Ads Kit pour Cordova
- Plug-in Analytics Kit pour Cordova
- Plugin du kit d'achats intégrés pour Cordova
- Plugin du kit de localisation pour Cordova
- Plugins du kit de carte pour Cordova
- Plugins ML Kit pour Cordova
- Plugin Push Kit pour Cordova
- Plugins Site Kit pour Cordova
Réagir natif:
- Plugins Account Kit pour React Native
- Plugins Ads Kit pour React Native
- Plug-in Analytics Kit pour React Native
- Plug-in Health Kit pour React Native
- Plugin du kit d'achats intégrés pour React Native
- Plug-in Location Kit pour React Native
- Plug-in Map Kit pour React Native
- Plugins ML Kit pour React Native
- Plugin Push Kit pour React Native
- Plugins Site Kit pour React Native
Xamarin:
- Plugins du kit de compte pour Xamarin
- Plugins Ads Kit pour Xamarin
- Plug-ins Analytics Kit pour Xamarin
- Plug-ins du kit de carte pour Xamarin
- Plugins du kit de localisation pour Xamarin
- Plugins Push Kit pour Xamarin
- Plugins du kit de site pour Xamarin
Battement:
- Plugins Account Kit pour Flutter
- Plugins Ads Kit pour Flutter
- Plugins Analytics Kit pour Flutter
- Plug-in Kit d'achats intégrés pour Flutter
- Plugins du kit de localisation pour Flutter
- Plugins du kit de carte pour Flutter
- Plugins Push Kit pour Flutter
- Plugins Site Kit pour Flutter
4. Pouvez-vous lire les données du capteur de profondeur (TOF) sur les téléphones Huawei?
Oui, cela est possible en utilisant le SDK AR Engine . Huawei AR Engine fournit un rendu en temps réel de la grille de la scène, et le résultat inclut la position du téléphone mobile dans l'espace. La grille 3D de la vue actuelle de la caméra ne prend en charge que les modèles Honor V20 et P30Pro, qui peuvent recevoir des informations de profondeur, et la scène de numérisation prise en charge est statique.
TOF est pris en charge sur les appareils suivants:
- 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
Pour obtenir des données à partir de TOF, utilisez la classe ARSceneMesh à l'aide des méthodes suivantes:
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.
Il existe d'autres options pour calculer la profondeur. Vous pouvez obtenir un objet de classe ARFrame et utiliser ses méthodes hitTest, AcquérirDepthImage. La méthode GetSceneDepth de la classe ARSceneMesh renvoie également la carte de profondeur traitée. Il est plus précis, mais ne fonctionne que jusqu'à 2,5 mètres.
5. Comment puis-je ouvrir AppGallery directement depuis l'application?
AppGallery de l'application s'ouvre de la même manière que le Google Play Store. Veuillez noter qu'AppGallery utilise son propre schéma appmarket: //:
- Schéma: appmarket: //
- Paquet: com.huawei.appmarket
Voici un extrait d'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. Comment créer l'émulateur Huawei Android?
Huawei fournit aux développeurs Huawei le débogage cloud en tant que service gratuit. Si vous utilisez le SDK Huawei, vous devez disposer d'un compte développeur Huawei. Connectez-vous simplement à la console développeur Huawei et suivez les instructions .
La fonction de débogage cloud est vraiment facile à utiliser. Il permet le débogage à distance sur de vrais appareils. Au cours du processus, vous pouvez afficher les informations sur l'appareil, télécharger et installer des fichiers APK sur des appareils distants, recevoir des journaux d'opération et enregistrer les journaux sur votre ordinateur local pour analyse.
7. Comment accéder à la charge utile des notifications push HMS?
Pour accéder à la charge utile, vous devez implémenter la classe HmsMessageService et remplacer la méthode onMessageReceived. Vous pouvez accéder à la charge utile à partir de l'objet RemoteMessage. Pour accéder au jeton, remplacez la méthode onNewToken.
Code 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());
}
}
}
}
Code 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)
}
}
Assurez-vous d'enregistrer votre service:
<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. Quels outils utiliser lors du développement d'une application Android pour téléphone mobile Huawei?
Pour le développement d'applications, à la fois Android Studio et d'autres IDE tels qu'Eclipse, Intelliji IDEA peut être utilisé. Si vous disposez déjà d'une application qui utilise GMS, utilisez la boîte à outils HMS pour convertir votre code qui fonctionne avec GMS pour qu'il fonctionne avec HMS. Il convient de garder à l'esprit que le HMS Toolkit ne prend pas en charge la conversion de tous les services, et avant de l'utiliser, il est préférable de clarifier les services qu'il peut transférer.
9. Comment initialiser les services HMS sans agconnect-services.json?
HMS ne fournit pas encore de solution d'initialisation basée sur un code unique. L'initialisation sans fichier json est possible lorsque vous travaillez avec les services suivants:
- Kit de poussée:
<meta-data
android:name="com.huawei.hms.client.appid"
<!-- Replace value xxx with the actual appid.-->
android:value="appid=xxx">
</meta-data>
- Kit de carte:
MapsInitializer.setApiKey("Your API Key");
- Kit de site :
SearchService searchService = SearchServiceFactory.create(this, "API key");
- Kit ML:
MLApplication.getInstance().setApiKey("your ApiKey");
10. Que peut faire un système de gestion de produit (PMS) dans les achats intégrés HMS?
L'API du système de gestion des produits (PMS) vous permet de créer et de gérer des informations sur les produits. Grâce à lui, vous pouvez:
- Créer des produits: y compris les abonnements avec renouvellement automatique.
- Rechercher des informations sur le produit: par exemple, vous pouvez rechercher un produit spécifique en fonction de l'ID d'application et de l'ID de produit, ou rechercher tous les produits qui correspondent aux critères que vous spécifiez.
- Mettre à jour les informations produit: nom du produit , langue, prix et statut. Vous pouvez travailler avec un ou plusieurs produits en même temps.
- Promouvoir les produits: l' API vous permet de classer les campagnes publicitaires par région, de définir les heures de promotion et de fixer les prix.
C'est tout pour l'instant, si vous avez des questions sur le travail avec HMS, posez-les dans les commentaires.