メーカーチャネルSDK統合ガイド
このドキュメントは、自動統合方法を使用してさまざまなメーカーチャネルのSDKを統合し、オフラインプッシュ通知を実現するためのガイドを顧客に提供することを目的としています。
SDKのダウンロードについては、リソースダウンロードを参照してください。 最新のSDKバージョン番号については、更新履歴を参照してください。
前提条件
- Engagelabチャネルがすでに統合されている。
- メーカーのSDKを統合する前に、関連するメーカーチャネルパラメータを申請する必要があります。詳細については、メーカーチャネルパラメータ申請ガイドを参照してください。
リソースファイル
mtpush_notification_icon.png
という名前の通知アイコンをres/drawable/
の下に配置します。設定されていない場合、SDKはアプリケーションアイコンを使用し、Androidの高バージョンでは表示上の問題が発生する可能性があります。
Xiaomiチャネル統合ガイド
mavenCentralのサポートを設定
Projectルートディレクトリのメインgradleファイルで、mavenCentralのサポートを設定します。(新しいプロジェクトは通常、デフォルトでこのサポートが設定されています。)
buildscript {
repositories {
mavenCentral()
}
}
allprojects {
repositories {
mavenCentral()
}
}
依存関係を設定
アプリケーションモジュールのgradle
ファイルのdependencies
セクションに、次のコードを追加します:
dependencies {
// メーカーバージョンはEngagelab SDKバージョンと一致する必要があります
implementation 'com.engagelab.plugin:mi:5.x.x'
}
パラメータを設定
アプリケーションモジュールのgradle
ファイルのdefaultConfig
セクションに、次のコードを追加します:
manifestPlaceholders = [
// manifest.xmlファイルの変数を設定
XIAOMI_APPKEY : "MI-Your Xiaomi app's APPID", // Xiaomiプラットフォームに登録されたappkey
XIAOMI_APPID : "MI-Your Xiaomi app's APPKEY", // Xiaomiプラットフォームに登録されたappid
]
コード難読化を設定
proguardを使用している場合は、設定ファイルに次の内容を追加し、誤った警告レポートによってコンパイルが失敗するのを防ぎます:
-dontwarn com.xiaomi.push.**
-keep class com.xiaomi.push.** { *; }
統合成功の検証
統合が成功した場合、ログに次の内容が表示されます:
D [MTMiBusiness] support xiaomi push
D [MTMiBusiness] onTokenSuccess:get token is Tv3KBknVcnEaXnLe89MGEH3SWVgUYdLDYzJaST30IoIGATl2tv5eu6iuT/PTO0Mj
D [MTPlatformBusiness] onPlatformTokenSuccess, rid:5, platformToken:
{
platform=1,
token=Tv3KBknVcnEaXnLe89MGEH3SWVgUYdLDYzJaST30IoIGATl2tv5eu6iuT/PTO0Mj
region=NULL
isUserSettings=false
}
Xiaomi Android 13以降の特別な注意事項
Xiaomiの公式ドキュメントによると、Android 13以降では、アプリケーションの起動方法がIntentフィルターと正確に一致する必要があり、Xiaomiデバイスでのアプリケーションの適切な動作を保証します。
Android 13以降のIntentフィルターの詳細については、Googleの公式ドキュメントを参照してください:Google公式ドキュメント - Intentフィルター
開発者のテスト推奨事項:
開発者はXiaomiデバイスの開発者オプションで「アプリケーション互換性変更」を確認し、テスト中にENFORCE_INTENTS_TO_MATCH_INTENT_FILTERSオプションを有効にして、すべてのケースでアプリが正しく動作することを保証できます。
Huaweiチャネル統合ガイド
mavenCentralのサポートを設定
Projectルートディレクトリのメインgradleファイルで、mavenCentralのサポートとagconnectの依存関係を設定します。
buildscript {
repositories {
google()
mavenCentral()
maven {url 'https://developer.huawei.com/repo/'}
}
}
buildscript {
dependencies {
classpath 'com.huawei.agconnect:agcp:1.6.0.300'
}
}
allprojects {
repositories {
google()
mavenCentral()
maven {url 'https://developer.huawei.com/repo/'}
}
}
(オプション)gradle 8.0を使用している場合は、プロジェクトレベルのgradle.properties
ファイルに次のコマンドを追加します:
注意: AGCプラグインのバージョンが1.9.1.300より低い場合は、gradle 8.0の互換性がサポートされていません。この手順を実行する必要があります。
apmsInstrumentationEnabled=false
Huaweiプラグインを追加
アプリケーションモジュールのbuild.gradle
ファイルの下部に、次の行を追加してgradleプラグインを有効にします:
apply plugin: 'com.huawei.agconnect'
依存関係を設定
アプリケーションモジュールのgradle
ファイルのdependencies
セクションに、次のコードを追加し、Huaweiのリリースに基づいて最新バージョンを選択します:
dependencies {
implementation 'com.huawei.hms:push:6.11.0.300'
// メーカーバージョンはAppPush SDKバージョンと一致する必要があります
implementation 'com.engagelab.plugin:huawei:5.x.x'
}
agconnect-services.jsonファイルを設定
メーカーチャネルパラメータ申請ガイドを参照して、agconnect-services.json
ファイルを取得し、app
ディレクトリに設定します。
署名証明書を設定
build.gradle
ファイルで、Huaweiバックエンドに追加された指紋証明書に対応する署名を設定します。
HMSサービスは、アプリが登録に成功するために署名されている必要があります。コマンド
keytool -list -v -keystore keystorefileName
を使用して、対応する指紋証明書を取得できます。
signingConfigs {
release {
storeFile file("release.keystore") // 署名ファイルへのパス
storePassword "123456"
keyAlias "android.keystore"
keyPassword "123456"
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug{
minifyEnabled false
signingConfig signingConfigs.release
}
}
コード難読化を設定
proguardを使用している場合は、設定ファイルに次の内容を追加し、誤った警告レポートによってコンパイルが失敗するのを防ぎます:
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.hianalytics.android.**{*;}
-keep class com.huawei.updatesdk.**{*;}
-keep class com.huawei.hms.**{*;}
AndResGuardを使用している場合は、難読化設定ファイルにAndResGuardホワイトリストを追加します。
"R.string.hms*",
"R.string.connect_server_fail_prompt_toast",
"R.string.getting_message_fail_prompt_toast",
"R.string.no_available_network_prompt_toast",
"R.string.third_app_*",
"R.string.upsdk_*",
"R.layout.hms*",
"R.layout.upsdk_*",
"R.drawable.upsdk*",
"R.color.upsdk*",
"R.dimen.upsdk*",
"R.style.upsdk*",
"R.string.agc*"
統合成功の検証
統合が成功した場合、ログに次の内容が表示されます:
D [MTHuaweiBusiness] support huawei push
D [MTHuaweiBusiness] onTokenSuccess:get token is IQAAAACy0aL1AABEZ3l2C7jluCGX5XriooCvoOwK9TrjG1MTpH0CD47WPXFcAbtt3DdOeOPvX6d7xfAVctoyaOCGKRllRa-0RBP7WQrYI6SxnOp1GA
D [MTPlatformBusiness] onPlatformTokenSuccess, rid:5, platformToken:
{
platform=2,
token=IQAAAACy0aL1AABEZ3l2C7jluCGX5XriooCvoOwK9TrjG1MTpH0CD47WPXFcAbtt3DdOeOPvX6d7xfAVctoyaOCGKRllRa-0RBP7WQrYI6SxnOp1GA
region=NULL
isUserSettings=false
}
Huaweiチャネルのテスト方法
- 「EngageLabコンソール」->「AppPush」->「基本設定」->「統合設定」ページに移動し、パラメータ(AppID、AppSecret)を入力し、「保存」をクリックします。
2. アプリプロセスを強制終了した後、プッシュを実行します。プッシュを受信した場合は、メーカーチャネルの統合が成功しています。
Meizuチャネル統合ガイド
mavenCentralのサポートを設定
Projectルートディレクトリのメインgradleファイルで、mavenCentralのサポートを設定します。(新しいプロジェクトは通常、デフォルトでこのサポートが設定されています。)
buildscript {
repositories {
mavenCentral()
}
}
allprojects {
repositories {
mavenCentral()
}
}
依存関係を設定
アプリケーションモジュールのgradle
ファイルのdependencies
セクションに、次のコードを追加します:
dependencies {
// メーカーバージョンはAppPush SDKバージョンと一致する必要があります
implementation 'com.engagelab.plugin:meizu:5.x.x'
}
パラメータを設定
アプリケーションモジュールのgradle
ファイルのdefaultConfig
セクションに、次のコードを追加します:
Meizuのパラメータには「MZ-」プレフィックスを付ける必要があります。
manifestPlaceholders = [
// manifest.xmlファイルの変数を設定
MEIZU_APPKEY : "MZ-Your Meizu app's APPKEY", // Meizuプラットフォームに登録されたappkey
MEIZU_APPID : "MZ-Your Meizu app's APPID", // Meizuプラットフォームに登録されたappid
]
コード難読化を設定
proguardを使用している場合は、設定ファイルに次の内容を追加し、誤った警告レポートによってコンパイルが失敗するのを防ぎます:
-dontwarn com.meizu.cloud.**
-keep class com.meizu.cloud.** { *; }
統合成功の検証
統合が成功した場合、ログに次の内容が表示されます:
D [MTMeizuBusiness] support meizu push
D [MTPlatformBusiness] onPlatformTokenSuccess, rid:5, platformToken:
{
platform=3,
token=DDI5c060475064d447b40670206756d73605705037205
region=NULL
isUserSettings=false
}
Meizuチャネルでトークンを取得できない場合は、gradle.properties
にandroid.enableR8 = false
を追加してR8を無効にしてみてください。
Meizuメーカーのテスト方法
「EngageLabコンソール」->「AppPush」->「基本設定」->「統合設定」ページに移動し、パラメータ(AppKey、AppID、AppSecret)を入力し、「保存」をクリックします。
アプリプロセスを強制終了した後、プッシュを実行します。プッシュを受信した場合は、メーカーチャネルの統合が成功しています。
Vivoチャネル統合ガイド
mavenCentralのサポートを設定
Projectルートディレクトリのメインgradleファイルで、mavenCentralのサポートを設定します。(新しいプロジェクトは通常、デフォルトでこのサポートが設定されています。)
buildscript {
repositories {
mavenCentral()
}
}
allprojects {
repositories {
mavenCentral()
}
}
依存関係を設定
アプリケーションモジュールのgradle
ファイルのdependencies
セクションに、次のコードを追加します:
dependencies{
// メーカーバージョンはAppPush SDKバージョンと一致する必要があります
implementation 'com.engagelab.plugin:vivo:5.x.x'
}
パラメータを設定
アプリケーションモジュールのgradle
ファイルのdefaultConfig
セクションに、次のコードを追加します:
manifestPlaceholders=[
VIVO_APPKEY : "Your Vivo app's APPKEY", // Vivoプラットフォームに登録されたappkey
VIVO_APPID : "Your Vivo app's APPID", // Vivoプラットフォームに登録されたappid
]
統合成功の検証
統合が成功した場合、ログに次の内容が表示されます:
D [MTVivoBusiness] support vivo push
D [MTVivoBusiness] getRegId onTokenSuccess:get token is v2-CRrhwCeK9eY77H6m_EeUqz3zGqmbh0LJPnhvsF0V-ia9OmMHQP9FGCjZ
D [MTPlatformBusiness] onPlatformTokenSuccess, rid:5, platformToken:
{
platform=5,
token=v2-CRrhwCeK9eY77H6m_EeUqz3zGqmbh0LJPnhvsF0V-ia9OmMHQP9FGCjZ
region=NULL
isUserSettings=false
}
コード難読化を設定
proguardを使用している場合は、設定ファイルに次の内容を追加し、誤った警告レポートによってコンパイルが失敗するのを防ぎます:
-dontwarn com.vivo.push.**
-keep class com.vivo.push.**{*; }
-keep class com.vivo.vms.**{*; }
Vivoチャネルのテスト方法
- 「EngageLabコンソール」->「AppPush」->「基本設定」->「統合設定」ページに移動し、パラメータ(AppKey、AppID、AppSecret)を入力し、「保存」をクリックします。
2. アプリプロセスを強制終了した後、プッシュを実行します。プッシュを受信した場合は、メーカーチャネルの統合が成功しています。
Vivoが市場に存在しない場合、プッシュをテストするには、Vivoオープンプラットフォームでプッシュテスト権限を申請する必要があります。各アプリは1日あたり1000件の公開メッセージをプッシュできます。
"options": {
"classification": 1,
"third_party_channel": {
"vivo": {
"pushMode": 1, // オプション、2020/09/21に追加。VivoのpushModeフィールドに対応し、整数値は「0」が正式プッシュ、「1」がテストプッシュで、デフォルトは0です。
"distribution_new": "pns_mtpush"
}
}
}
OPPOチャネル統合ガイド
mavenCentralのサポートを設定
Projectルートディレクトリのメインgradleファイルで、mavenCentralのサポートを設定します。(新しいプロジェクトは通常、デフォルトでこのサポートが設定されています。)
buildscript {
repositories {
mavenCentral()
}
}
allprojects {
repositories {
mavenCentral()
}
}
依存関係を設定
アプリケーションモジュールのgradle
ファイルのdependencies
セクションに、次のコードを追加します:
dependencies{
// メーカーバージョンはAppPush SDKバージョンと一致する必要があります
implementation 'com.engagelab.plugin:oppo:5.x.x'
implementation 'com.engagelab.plugin:oppo_th_push:5.x.x'
// OPPOは次の依存関係を追加する必要があります
implementation 'com.google.code.gson:gson:2.8.9'
implementation 'commons-codec:commons-codec:1.13'
implementation 'androidx.annotation:annotation:1.1.0'
}
パラメータを設定
アプリケーションモジュールのgradle
ファイルのdefaultConfig
セクションに、次のコードを追加します:
OPPOのパラメータには「OP-」プレフィックスを付ける必要があります。
manifestPlaceholders=[
OPPO_APPKEY : "OP-Your OPPO app's APPKEY", // OPPOプラットフォームに登録されたappkey
OPPO_APPID : "OP-Your OPPO app's APPID", // OPPOプラットフォームに登録されたappid
OPPO_APPSECRET: "OP-Your OPPO app's APPSECRET" // OPPOプラットフォームに登録されたappsecret
]
コード難読化を設定
proguardを使用している場合は、設定ファイルに次の内容を追加し、誤った警告レポートによってコンパイルが失敗するのを防ぎます:
-dontwarn com.coloros.mcsdk.**
-keep class com.coloros.mcsdk.** { *; }
-dontwarn com.heytap.**
-keep class com.heytap.** { *; }
-dontwarn com.mcs.**
-keep class com.mcs.** { *; }
統合成功の検証
統合が成功した場合、ログに次の内容が表示されます:
D [MTOppoBusiness] support oppo push
D [MTOppoBusiness] onTokenSuccess:get token is OnePlus_CN_0e3c2f966c9d01d4e2423cbc9e7598b6
D [MTPlatformBusiness] onPlatformTokenSuccess, rid:5, platformToken:
{
platform=4,
token=OnePlus_CN_0e3c2f966c9d01d4e2423cbc9e7598b6
region=NULL
isUserSettings=false
}
OPPOチャネルのテスト方法
- 「EngageLabコンソール」->「App
Push」->「基本設定」->「統合設定」ページに移動し、パラメータ(AppKey、AppID、AppSecret、MasterSecret)を入力し、「保存」をクリックします。
2. アプリプロセスを強制終了した後、プッシュを実行します。プッシュを受信した場合は、メーカーチャネルの統合が成功しています。
アプリが利用可能でない場合、テストにはOPPOオープンプラットフォームでプッシュテスト権限を申請する必要があります。各アプリは1日あたり1000件の公開メッセージをプッシュできます。
FCMチャネル統合ガイド
mavenCentralのサポートを設定
Projectルートディレクトリのメインgradleファイルで、mavenCentralのサポートとgoogle-servicesの依存関係を設定します。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.gms:google-services:4.3.15'
}
}
allprojects {
repositories {
mavenCentral()
maven { url "https://maven.google.com" }
}
}
FCMプラグインを追加
アプリケーションモジュールのbuild.gradle
ファイルの下部に、次の行を追加してgradleプラグインを有効にします:
apply plugin: 'com.google.gms.google-services'
依存関係を設定
アプリケーションモジュールのgradle
ファイルのdependencies
セクションに、次のコードを追加します:
dependencies {
// メーカーバージョンはAppPush SDKバージョンと一致する必要があります
implementation 'com.engagelab.plugin:google:5.x.x'
implementation 'com.google.firebase:firebase-messaging:23.2.0'
}
アプリケーションモジュールのgradle
ファイルのandroid
セクションに、次のコードを追加します:
android {
// googleプッシュにはjava 1.8が必要です
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
google-services.jsonファイルを設定
メーカーチャネルパラメータ申請ガイドを参照して、google-services.json
ファイルを取得し、app
ディレクトリに設定します。
FCM通知アイコンを設定
AndroidManifest.xmlファイルに次の設定を追加して、FCM通知アイコンを設定します。
<meta-data android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/Your notification icon" />
統合成功の検証
統合が成功した場合、ログに次の内容が表示されます:
D [MTGoogleBusiness] support google push
D [MTPlatformBusiness] onPlatformTokenSuccess, rid:5, platformToken:
{
platform=8,
token=dj793yH_RO6FqNyKImQJYV:APA91bExj3PSVv50pwtl83LXVeB_HKOCSkyB6qCE12TIwIRl-RKiqCfXjvCshcqVrqn_8htlNBa8_A_8ixq7YIxfrloxig2BryZPCkunyx_z2drz0L-C2K8R7J8Yrojs61WCsF-BZj8h
region=NULL
isUserSettings=false
}
FCMチャネルのテスト方法
- テストの前提条件:
- フォンのシステムにはGoogle Playサービスがインストールされている必要があり、バージョンは17.3.4以上です。
- テストには海外VPNに接続し、フォンのネットワークがGoogleにアクセスできることを確認する必要があります。
- 国内のフォンを使用してテストする場合、アプリはバックグラウンドに保持する必要があります。アプリを閉じるとテストは失敗します。国内のメーカーはバックグラウンドのプロセスを強制終了する可能性があるためです。
「EngageLabコンソール」->「AppPush」->「基本設定」->「統合設定」ページに移動し、パラメータ(App Secret)を入力し、「保存」をクリックします。
中国国内でテストする場合は、初期化後に国コードを設定する必要があります。
public class ExampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
MTCorePrivatesApi.configDebugMode(this, true);
// 国コードを設定する -- 本番環境ではこれを設定しないでください
MTGlobal.setCountryCode("US");
// 初期化
MTPushPrivatesApi.init(this);
}
}
- AppPushバックエンドで、プッシュがFCMチャネルまたはEngagelabチャネルを介して送信されたかどうかを確認します。
Honorチャネル統合ガイド
mavenCentralのサポートを設定
Projectルートディレクトリのメインgradleファイルで、mavenCentralのサポートを設定します。(新しいプロジェクトは通常、デフォルトでこのサポートが設定されています。)
buildscript {
repositories {
...
mavenCentral()
...
}
}
allprojets {
repositories {
...
mavenCentral()
...
}
}
パラメータと依存関係を設定
プロジェクトモジュールのbuild.gradle
ファイルに、次のコードを追加します:
defaultConfig {
...
manifestPlaceholders = [
...
HONOR_APPID : "Your Honor app's APP ID", // Honorプラットフォームに登録されたAPP ID
...
]
...
}
dependencies {
...
// メーカーバージョンはAppPush SDKバージョンと一致する必要があります
implementation 'com.engagelab.plugin:honor:5.x.x'
implementation 'com.engagelab.plugin:honor_th_push:5.x.x'
...
}
署名証明書を設定
build.gradle
ファイルで、Honorバックエンドに追加された指紋証明書に対応する署名を設定します。
Honorサービスは、アプリが登録に成功するために署名されている必要があります。 コマンド
keytool -list -v -keystore <キーストアファイルへのパス>
を使用して、対応する指紋証明書を取得できます。
統合成功の検証
統合が成功した場合、ログに次の内容が表示されます:
D [MTHonorBusiness] support honor push
D [MTHonorBusiness] onTokenSuccess:get token is s18069ps301291893q1ssro2o40s1630-n262n542r9669q62o83s390306179rro-775875632-654-6105326555582-PA-0052993947080949113-5
D [MTPlatformBusiness] onPlatformTokenSuccess, rid:5, platformToken:
{
platform=7,
token=s18069ps301291893q1ssro2o40s1630-n262n542r9669q62o83s390306179rro-775875632-654-6105326555582-PA-0052993947080949113-5
region=NULL
isUserSettings=false
}
コード難読化を設定
proguardを使用している場合は、設定ファイルに次の内容を追加し、誤った警告レポートによってコンパイルが失敗するのを防ぎます:
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.hihonor.push.**{*;}
Honorチャネルのテスト方法
- 「EngageLabコンソール」->「AppPush」->「基本設定」->「統合設定」ページに移動し、パラメータ(App ID、Client ID、Client Secret、App Secret)を入力し、「保存」をクリックします。
- アプリプロセスを強制終了した後、プッシュを実行します。プッシュを受信した場合は、メーカーチャネルの統合が成功しています。
メーカーSDKを統合していないが、依然としてEngageLabを使用してメーカーメッセージをプッシュする場合のメーカー通知の報告方法
/**
* メーカーチャネル通知到着を報告する
*
* http/httpsを介して報告する
*
* @param context 非null
* @param messageId EngageLabメッセージID、非null
* @param platform メーカー、値の範囲(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、8:google)
* @param platformMessageId メーカーメッセージID、null可
*/
public static void reportNotificationArrived(Context context, String messageId, byte platform, String platformMessageId)
/**
* メーカーチャネル通知クリックを報告する
*
* http/httpsを介して報告する
*
* @param context 非null
* @param messageId EngageLabメッセージID、非null
* @param platform メーカー、値の範囲(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、7:honor、8:google)
* @param platformMessageId メーカーメッセージID、null可
*/
public static void reportNotificationClicked(Context context, String messageId, byte platform, String platformMessageId)
/**
* メーカーチャネル通知削除を報告する
*
* http/httpsを介して報告する
*
* @param context 非null
* @param messageId EngageLabメッセージID、非null
* @param platform メーカー、値の範囲(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、7:honor、8:google)
* @param platformMessageId メーカーメッセージID、null可
*/
public static void reportNotificationDeleted(Context context, String messageId, byte platform, String platformMessageId)
/**
* メーカーチャネル通知オープンを報告する
*
* http/httpsを介して報告する
*
* @param context 非null
* @param messageId EngageLabメッセージID、非null
* @param platform メーカー、値の範囲(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、7:honor、8:google)
* @param platformMessageId メーカーメッセージID、null可
*/
public static void reportNotificationOpened(Context context, String messageId, byte platform, String platformMessageId)
/**
* メーカートークンをアップロードする
*
* EngageLabの長い接続が正常に確立された後に呼び出す必要があります。それ以外の場合は無効です。`MTCommonReceiver.onConnectStatus`コールバックがtrueを返すと、長い接続状態が正常に確立されます。
*
* TCPを介してアップロードする
*
* @param context Not null
* @param platform メーカー、値の範囲(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、7:honor、8:google)
* @param token メーカーが返すトークン、非null
*/
public static void uploadPlatformToken(Context context, byte platform, String token)