ハイブリッドアプリ、AppGallery、Huawei電話エミュレーションでのHMSサポートに関する10の質問





こんにちは、Habr!Huawei Mobile Services(HMS)エコシステムの1年あたりのサービス数。9から31に増加し、開発者はマッシュアップのサポート、AppGalleryとの相互作用、個々のサービスとクジラの使用についてますます多くの質問をするようになりました。グローバルコミュニティとのコミュニケーションの主なプラットフォームは、StackoverflowRedditXDA-Developers、およびHuawei開発者ポータルのサポートセクションです。特に私たちのプラットフォームに興味のある人のために、これらのサイトからHuawei MobileServicesの操作に関する10の質問を収集しました。 



1.React-nativeおよびFirebaseSDKは、Googleサービスがなく、コードが変更されていないHuawei電話で機能しますか? 



はい、React-nativeアプリは変更なしで機能します。APKを送信して、Huawei AppGalleryにアップロードするだけです。FirebaseSDKはもう少し複雑です。アプリケーションのパフォーマンスは、アプリケーションに含めようとしているサービスによって異なります。たとえば、Firebase認証モジュールを使用したGoogleへのログインは、Huawei Mate 30ProなどのGoogleモバイルサービスを備えていない電話ではサポートされません。



GMSとHMSの両方に同じAPKを使用する場合は、最初にサービスの可用性を確認する必要があります。 

GMSの場合:



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


HMSの場合:



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


Google Login、Huawei Login、またはその他のサービスを使用しようとする場合:



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


2.追加のエコシステムをサポートするための実際の隠れたコストはどれくらいですか?



HMSでアプリケーションを維持するためのコストは、システムの設計方法とアプリケーションに必要なサービスによって異なります。平均して、統合時間は、アプリケーションと、元のアプリケーションのGoogleおよびFirebaseサービスの数に応じて、数時間から数週間まで変化する可能性があります。



アプリケーションにGMSが統合されていない場合は、変更を加えずにダウンロードできます。Facebook、Yandex、その他のサービスが機能します。



3. HMSはどのマッシュアップをサポートしていますか? 



HMS Core 5.0.0以降、サードパーティのプラットフォームでサポートされるクジラの数が増えました

 

。ApacheCordova:





リアクトネイティブ:





ザマリン:





フラッター:





4. Huawei電話で深度センサー(TOF)データを読み取ることができますか?



はい、これはAR EngineSDKを使用して可能です。Huawei AR Engineは、シーングリッドのリアルタイムレンダリングを提供し、その結果には、空間内の携帯電話の位置が含まれます。現在のカメラビューの3Dグリッドは、深度情報を受信できるHonor V20およびP30Proモデルのみをサポートし、サポートされるスキャンシーンは静的です。 



TOFは、次のデバイスでサポートされています。
  • 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


TOFからデータを取得するには、次のメソッドを使用してARSceneMeshクラスを使用します。



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.


深さの計算方法には他のオプションがあります。ARFrameクラスオブジェクトを取得しそのメソッドhitTest、acquireDepthImageを使用できますARSceneMeshクラスのGetSceneDepthメソッドも、処理された深度マップを返します。より正確ですが、2.5メートルまでしか機能しません。



5.アプリケーションから直接AppGalleryを開くにはどうすればよいですか?



アプリケーションのAppGalleryは、GooglePlayストアと同じ方法で開きます。AppGalleryは独自のappmarketを使用することに注意してください://スキーム:



  • スキーム:appmarket://
  • パッケージ:com.huawei.appmarket


これが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. Huawei Android Emulatorを作成するにはどうすればよいですか?



Huaweiは、Huawei開発者に無料サービスとしてクラウドデバッグを提供します。Huawei SDKを使用している場合は、Huawei開発者アカウントが必要です。Huawei Developer Consoleにログインし、指示に従ってください



クラウドデバッグ機能は本当に使いやすいです。実際のデバイスでのリモートデバッグが可能です。その過程で、デバイス情報の表示、リモートデバイスへのAPKのダウンロードとインストール、アクティビティログの受信、および分析のためにログをローカルコンピューターに保存することができます。



7. HMSプッシュ通知のペイロードにアクセスするにはどうすればよいですか?



ペイロードにアクセスするには、HmsMessageServiceクラスを実装し、onMessageReceivedメソッドをオーバーライドする必要があります。RemoteMessageオブジェクトからペイロードにアクセスできます。トークンにアクセスするには、onNewTokenメソッドをオーバーライドします。



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


コトリンコード:



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


必ずサービスを登録してください。



<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. Huawei携帯電話用のAndroidアプリケーションを開発するときに使用するツールは何ですか?



アプリケーション開発には、Android Studioと、Eclipse、IntellijiIDEAなどの他のIDEの両方を使用できます。GMSを使用するアプリケーションがすでにある場合は、HMS Toolkitを使用して、GMSコードをHMSで動作するように変換します。HMS Toolkitはすべてのサービスの変換をサポートしているわけではないことに注意してください。使用する前に、転送できるサービスを明確にすることをお勧めします。



9. agconnect-services.jsonなしでHMSサービスを初期化する方法は? 



これまでのところ、HMSは単一のコードベースの初期化ソリューションを提供していません。次のサービスを使用する場合、jsonファイルなしで初期化できます。



  • プッシュキット:



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


  • マップキット:



MapsInitializer.setApiKey("Your API Key");


  • サイトキット:



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


  • MLキット:



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


10. HMSアプリ内購入で製品管理システム(PMS)は何ができますか?



製品管理システム(PMS)APIを使用すると、製品情報を作成および管理できます。それを通してあなたはすることができます:



  • 製品の作成:自動更新付きのサブスクリプションを含みます。

  • 製品情報のクエリ:たとえば、アプリIDと製品IDに基づいて特定の製品をクエリしたり、指定した条件に一致するすべての製品をクエリしたりできます。

  • 製品情報を更新します:製品名、言語、価格、ステータス。1つまたは複数の製品を同時に操作できます。

  • 製品の宣伝: APIを使用すると、地域ごとに広告キャンペーンを分類し、宣伝時間を設定し、価格を設定できます。



今のところこれですべてです。HMSの操作について質問がある場合は、コメントで質問してください。



All Articles