このトピックでは、Huawei プッシュを統合するための 3 つのステップについて説明します。
Huawei プッシュへの登録
Huawei Developers の公式サイトにログインし、アカウントを作成して、プッシュサービスを有効にします。詳細については、「Huawei プッシュを有効にする手順」をご参照ください。
Huawei プッシュの統合
Push SDK は、Huawei Mobile Services (HMS) 2 および HMS 5 との統合をサポートしています。これらのバージョンのうち、1 つのみを統合できます。
HMS 2 は古いバージョンです。新規に統合する場合は、HMS 5 を使用してください。
HMS 2 から HMS 5 にアップグレードする場合は、まず HMS 2 の
AndroidManifest構成を削除する必要があります。
Huawei プッシュの統合 - HMS 5.x バージョン
Push - HMS5 コンポーネントを追加します。この方法は Push SDK の追加方法と同じです。詳細については、「Push SDK の追加」をご参照ください。
説明Push - HMS5 コンポーネントにはアダプターコードのみが含まれ、HMS SDK は含まれていません。次の手順で説明するように、HMS SDK の依存関係を別途追加する必要があります。
Huawei AppGallery Connect コンソールで、
agconnect-services.json設定ファイルをダウンロードし、アプリのメインプロジェクトのassetsフォルダに配置します。プロジェクトのルートディレクトリにある
build.gradleファイルで、HMS SDK の Maven リポジトリのアドレスを設定します。allprojects { repositories { // 他のリポジトリは省略されています。 maven {url 'https://developer.huawei.com/repo/'} } }メインプロジェクトの
build.gradleファイルに、HMS SDK の依存関係を追加します。dependencies { implementation 'com.huawei.hms:push:5.0.2.300' }HMS SDK のバージョンは頻繁に更新されます。最新バージョンについては、「HMS SDK バージョン更新履歴」をご参照ください。
現在対応しているバージョンは 5.0.2.300 です。必要に応じて、後のバージョンを使用するように変更できます。ベンダーの SDK は通常、下位互換性があります。互換性の問題が発生した場合は、DingTalk グループ 145930007362 に参加して、新しいバージョンのサポートをリクエストしてください。
難読化を使用するには、必要な難読化設定を追加します:
すべての接続タイプで、Huawei プッシュの難読化ルールを追加する必要があります。
AAR 接続タイプを使用する場合は、mPaaS の難読化ルールを追加する必要もあります。
Huawei プッシュの統合 - HMS 2.x バージョン
Push - Huawei 2 コンポーネントを追加します。この方法は Push SDK の追加方法と同じです。詳細については、「SDK の追加」をご参照ください。現在組み込まれている HMS 2 SDK のバージョンは 2.5.2.201 です。
AndroidManifest.xmlファイルを設定し (コンポーネントベースの統合の場合は Portal プロジェクトに追加)、com.huawei.hms.client.appidの値を置き換えます。<activity android:name="com.huawei.hms.activity.BridgeActivity" android:configChanges="orientation|locale|screenSize|layoutDirection|fontScale" android:excludeFromRecents="true" android:exported="false" android:hardwareAccelerated="true" android:theme="@android:style/Theme.Translucent"> <meta-data android:name="hwc-theme" android:value="androidhwext:style/Theme.Emui.Translucent" /> </activity> <!-- 以前の DEX バージョンでのクラッシュを防ぐため、プロバイダーを動的に有効にします。enabled を false に設定します。--> <provider android:name="com.huawei.hms.update.provider.UpdateProvider" android:authorities="${applicationId}.hms.update.provider" android:exported="false" android:enabled="false" android:grantUriPermissions="true"> </provider> <!-- value の "appid" を、Huawei Developers ウェブサイト上のアプリケーションのサービス詳細にある実際のアプリ ID に置き換えます。注意:バックスラッシュ (\) と値のスペースは保持してください。--> <meta-data android:name="com.huawei.hms.client.appid" android:value="\ your huawei appId" /> <receiver android:name="com.huawei.hms.support.api.push.PushEventReceiver" android:exported="true" > <intent-filter> <!-- チャンネルから通知メッセージを受信します。以前の PUSH バージョンと互換性があります。 --> <action android:name="com.huawei.intent.action.PUSH" /> </intent-filter> </receiver> <receiver android:name="com.alipay.pushsdk.thirdparty.huawei.HuaweiPushReceiver" android:exported="true" android:process=":push"> <intent-filter> <!-- 必須。TOKEN の受信に使用されます。 --> <action android:name="com.huawei.android.push.intent.REGISTRATION" /> <!-- 必須。メッセージの受信に使用されます。 --> <action android:name="com.huawei.android.push.intent.RECEIVE" /> <!-- オプション。通知または通知内のボタンがクリックされたときに onEvent コールバックをトリガーします。 --> <action android:name="com.huawei.android.push.intent.CLICK" /> <!-- オプション。PUSH チャンネルが接続されているか確認します。接続を確認する必要がない場合は不要です。 --> <action android:name="com.huawei.intent.action.PUSH_STATE" /> </intent-filter> </receiver>難読化を使用するには、必要な難読化設定を追加します:
AAR 接続タイプを使用する場合は、mPaaS の難読化ルールを追加する必要があります。
他の接続タイプを使用する場合は、操作は不要です。
Huawei プッシュのテスト
Huawei プッシュを統合した後、Huawei スマートフォンでアプリケーションを起動し、初期化メソッドが呼び出されることを確認します。詳細については、「メッセージプッシュサービスの初期化」をご参照ください。Push SDK は、Huawei プッシュのベンダートークンを自動的に取得してレポートします。
アプリケーションプロセスを強制終了した後、テストメッセージを送信します:
メッセージを受信した場合、Huawei プッシュとの統合は成功です。
メッセージを受信しない場合は、以下の手順に従って問題をトラブルシューティングしてください。
トラブルシューティング
Huawei の設定とパラメーターが Huawei プッシュバックエンドのものと一致していることを確認します:
HMS 2 統合の場合、必要な設定が
AndroidManifest.xmlに追加されていること、およびcom.huawei.hms.client.appidの値が Huawei プッシュバックエンドの値と一致していることを確認します。HMS 5 統合の場合、
agconnect-services.jsonファイルが存在し、正しい場所にあることを確認します。
mPaaS コンソールで Huawei チャンネルが有効になっており、設定が Huawei プッシュバックエンドのものと一致していることを確認します。詳細については、「Huawei プッシュチャンネルの設定」をご参照ください。
logcat ログを確認して問題をトラブルシューティングします:
プッシュプロセスを選択し、
mPush.PushProxyFactoryでフィルターをかけます。次のログエントリを探します:D/mPush.PushProxyFactory: found proxy com.mpaas.push.external.hms.Creator (HMS2) D/mPush.PushProxyFactory: found proxy com.mpaas.push.external.hms5.Creator (HMS5)このログが存在しない場合、Push - Huawei 2 または Push - HMS5 コンポーネントの追加に問題がある可能性があります。コンポーネントが正しく追加されたことを確認してください。
メインプロセスを選択し、
mHMSでフィルターをかけます。Huawei プッシュのベンダートークンが取得されたかどうかを確認します。ログにget token failedと表示された場合、ベンダートークンの取得に失敗しています。エラーコードの詳細については、「Huawei プッシュのエラーコード」をご参照ください。メインプロセスを選択し、
report channel tokenでフィルターをかけます。Huawei ベンダートークンが正常にレポートされたかどうかを確認します。次のログが表示された場合:report channel token error: xxxxこのログは、ベンダートークンのレポートに失敗したことを示します。mPaaS 設定ファイル内の
base64Codeに値があること、および設定ファイルを取得した際にアップロードした APK 署名が現在のアプリケーションの署名と一致していることを確認してください。
その他の問題
EMUI および Huawei Mobile Services のバージョン制限
Huawei が Android をベースに開発したオペレーティングシステムである Emotion UI (EMUI) および Huawei Mobile Services にはバージョン制限があります。詳細なバージョン要件については、「デバイスが Huawei プッシュメッセージを受信するための条件」をご参照ください。
Huawei スマートフォンでログを印刷できない問題
スマートフォンのダイヤル画面で *#*#2846579#*#* を入力してプロジェクトメニューを開きます。[バックグラウンド設定] > [LOG 設定] に移動し、[AP ログ] を選択します。変更を有効にするには、スマートフォンを再起動する必要があります。