10 Fragen zur HMS-Unterstützung für Hybrid-Apps, AppGallery und Huawei Phone Emulation





Hallo Habr! Die Anzahl der Dienste im Huawei Mobile Services (HMS) -Ökosystem pro Jahr. wuchs von 9 auf 31 und Entwickler hatten immer mehr Fragen zur Unterstützung von Hybridanwendungen, zur Interaktion mit AppGallery, zur Nutzung einzelner Dienste und von Walen. Die Hauptplattformen für unsere Kommunikation mit der globalen Community sind Stackoverflow , Reddit , XDA-Developers und der Support-Bereich im Huawei-Entwicklerportal. Speziell für diejenigen, die an unserer Plattform interessiert sind, haben wir auf diesen Websites 10 Fragen zur Arbeit mit Huawei Mobile Services gesammelt. 



1. Funktionieren React-native und Firebase SDK auf Huawei-Handys ohne Google Service und ohne Codeänderungen? 



Ja, die React-native App funktioniert ohne Änderungen. Senden Sie einfach die APK, um sie in die Huawei App Gallery hochzuladen Das Firebase SDK ist etwas komplizierter. Die Leistung Ihrer Anwendung hängt von den Diensten ab, die Sie in Ihre Anwendung aufnehmen möchten. Beispielsweise wird die Anmeldung bei Google mithilfe des Firebase-Authentifizierungsmoduls auf Telefonen ohne Google Mobile Services wie dem Huawei Mate 30 Pro nicht unterstützt.



Wenn Sie dieselbe APK für GMS und HMS verwenden möchten, müssen Sie zuerst die Verfügbarkeit des Dienstes überprüfen. 

Für GMS:



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


Für HMS:



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


Wenn Sie versuchen, Google Login, Huawei Login oder andere Dienste zu verwenden:



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


2. Was sind die tatsächlichen versteckten Kosten für die Unterstützung eines zusätzlichen Ökosystems?



Die Kosten für die Wartung einer Anwendung in einem HMS hängen davon ab, wie Sie das System entwerfen und welche Dienste Ihre Anwendung benötigt. Im Durchschnitt können die Integrationszeiten je nach Anwendung und Anzahl der Google- und Firebase-Dienste in der ursprünglichen Anwendung zwischen einigen Stunden und einigen Wochen variieren.



Wenn Ihre Anwendung kein integriertes GMS hat, können Sie es ohne Änderungen herunterladen - Facebook, Yandex und andere Dienste funktionieren.



3. Welche Mashups unterstützt HMS? 



Seit HMS Core 5.0.0 wurde die Anzahl der von Plattformen von Drittanbietern unterstützten Wale erhöht:

 

Apache Cordova:





Native reagieren:





Xamarin:





Flattern:





4. Können Sie die TOF-Daten (Depth Sensor) auf Huawei-Handys lesen?



Ja, dies ist mit dem AR Engine SDK möglich . Die Huawei AR Engine bietet eine Echtzeitwiedergabe des Szenenrasters. Das Ergebnis ist die Position des Mobiltelefons im Weltraum. Das 3D-Raster der aktuellen Kameraansicht unterstützt nur Honor V20- und P30Pro-Modelle, die Tiefeninformationen empfangen können, und die unterstützte Scanszene ist statisch. 



TOF wird auf folgenden Geräten unterstützt:
  • 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


Verwenden Sie die ARSceneMesh- Klasse mit den folgenden Methoden, um Daten von TOF abzurufen :



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.


Es gibt andere Möglichkeiten zur Berechnung der Tiefe. Sie können das ARFrame-Klassenobjekt abrufen und seine Methoden hitTest, purchaseDepthImage verwenden. Die GetSceneDepth-Methode aus der ARSceneMesh-Klasse gibt auch die verarbeitete Tiefenkarte zurück. Es ist genauer, funktioniert aber nur bis zu 2,5 Meter.



5. Wie kann ich AppGallery direkt in der Anwendung öffnen?



AppGallery aus der Anwendung wird auf die gleiche Weise wie der Google Play Store geöffnet. Bitte beachten Sie, dass AppGallery einen eigenen Appmarket verwendet: // Schema:



  • Schema: appmarket: //
  • Paket: com.huawei.appmarket


Hier ist ein Ausschnitt aus 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. Wie erstelle ich einen Huawei Android Emulator?



Huawei bietet Huawei-Entwicklern Cloud-Debugging als kostenlosen Service. Wenn Sie das Huawei SDK verwenden, müssen Sie über ein Huawei-Entwicklerkonto verfügen. Melden Sie sich einfach bei der Huawei Developer Console an und folgen Sie den Anweisungen .



Die Cloud-Debugging-Funktion ist sehr einfach zu bedienen. Es ermöglicht das Remote-Debugging auf realen Geräten. Dabei können Sie Geräteinformationen anzeigen, APKs herunterladen und auf Remote-Geräten installieren, Aktivitätsprotokolle empfangen und die Protokolle zur Analyse auf Ihrem lokalen Computer speichern.



7. Wie greife ich auf die Nutzdaten von HMS-Push-Benachrichtigungen zu?



Um auf Payload zuzugreifen, müssen Sie die HmsMessageService-Klasse implementieren und die onMessageReceived-Methode überschreiben. Sie können über das RemoteMessage-Objekt auf die Nutzdaten zugreifen. Um auf das Token zuzugreifen, überschreiben Sie die onNewToken-Methode.



Java-Code:



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());
            }
        }
    }
}


Kotlin-Code:



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)
        }
    }


Stellen Sie sicher, dass Sie Ihren Dienst registrieren:



<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. Welche Tools sollten bei der Entwicklung einer Android-Anwendung für ein Huawei-Mobiltelefon verwendet werden?



Für die Anwendungsentwicklung können Sie sowohl Android Studio als auch andere IDEs wie Eclipse und Intelliji IDEA verwenden. Wenn Sie bereits eine Anwendung haben, die GMS verwendet , konvertieren Sie Ihren Code, der mit GMS funktioniert, mit dem HMS Toolkit in HMS. Es ist zu beachten, dass das HMS Toolkit nicht die Konvertierung aller Dienste unterstützt. Vor der Verwendung ist es besser zu klären, welche Dienste übertragen werden können.



9. Wie initialisiere ich HMS-Dienste ohne agconnect-services.json? 



HMS bietet noch keine einzige codebasierte Initialisierungslösung an. Bei der Arbeit mit folgenden Diensten ist eine Initialisierung ohne JSON-Datei möglich:



  • Push Kit:



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


  • Karten-Kit:



MapsInitializer.setApiKey("Your API Key");


  • Site Kit:



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


  • ML Kit:



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


10. Was kann ein Produktmanagementsystem (PMS) beim HMS In-App-Kauf tun?



Mit der PMS- API ( Product Management System ) können Sie Produktinformationen erstellen und verwalten. Durch es können Sie:



  • Erstellen Sie Produkte: einschließlich Abonnements mit automatischer Verlängerung.

  • Produktinformationen abfragen : Sie können beispielsweise ein bestimmtes Produkt basierend auf der App-ID und der Produkt-ID abfragen oder alle Produkte abfragen, die den von Ihnen angegebenen Kriterien entsprechen.

  • Produktinformationen aktualisieren: Produktname , Sprache, Preis und Status. Sie können gleichzeitig mit einem oder mehreren Produkten arbeiten.

  • Produkte bewerben : Mit der API können Sie Werbekampagnen nach Regionen kategorisieren, Werbezeiten festlegen und Preise festlegen.



Das ist alles für den Moment, wenn Sie Fragen zur Arbeit mit HMS haben, stellen Sie diese in den Kommentaren.



All Articles