廠商通道集成指南
最新更新:2022-11-29
前提是已經集成 Engagelab 通道。
libs 導包和資源文件
- 將 mt-sdk-platform-x.x.x.aar 導入 libs 目錄。
- 在 res/drawable/ 下放好命名為
mtpush_notification_icon.png
的通知小圖標。如果沒配置,sdk 會取應用程式圖標,android 高版本會出現顯示異常問題。 - 廠商通道參數申請及廠商文件獲取參考文檔 廠商通道參數申請指南。
- huawei 通道需要
agconnect-services.json
文件,配置在應用程式的 module 目錄下。 - google 通道需要
google-services.json
文件,配置在應用程式的 module 目錄下。
- huawei 通道需要
- meizu 通道獲取不到 token,嘗試在 gradle.properties 中添加 android.enableR8 = false 進行關閉 R8。
配置 build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {google()
mavenCentral()
// huawei push need,不需要 huawei 通道,則删除
maven {url 'https://developer.huawei.com/repo/'}
// oppo push need,不需要 oppo 通道,則删除
maven {
url 'https://maven.columbus.heytapmobi.com/repository/releases/'
credentials {
username 'nexus'
password 'c0b08da17e3ec36c3870fed674a0bcb36abc2e23'
}
}
maven {url 'http://nexus.os.adc.com/nexus/content/groups/public'}
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
// google push need,and google push need AndroidX,不需要 google 通道,則删除
// 請在 gradle.properties 中加入 android.useAndroidX=true
classpath 'com.google.gms:google-services:4.3.15'
// huawei push need,不需要 huawei 通道,則删除
classpath 'com.huawei.agconnect:agcp:1.6.0.300'
}
}
allprojects {
repositories {google()
mavenCentral()
// huawei push need,不需要 huawei 通道,則删除
maven {url 'https://developer.huawei.com/repo/'}
// oppo push need,不需要 oppo 通道,則删除
maven {
url 'https://maven.columbus.heytapmobi.com/repository/releases/'
credentials {
username 'nexus'
password 'c0b08da17e3ec36c3870fed674a0bcb36abc2e23'
}
}
maven {url 'http://nexus.os.adc.com/nexus/content/groups/public'}
}
}
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {google()
mavenCentral()
// huawei push need,不需要 huawei 通道,則删除
maven {url 'https://developer.huawei.com/repo/'}
// oppo push need,不需要 oppo 通道,則删除
maven {
url 'https://maven.columbus.heytapmobi.com/repository/releases/'
credentials {
username 'nexus'
password 'c0b08da17e3ec36c3870fed674a0bcb36abc2e23'
}
}
maven {url 'http://nexus.os.adc.com/nexus/content/groups/public'}
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
// google push need,and google push need AndroidX,不需要 google 通道,則删除
// 請在 gradle.properties 中加入 android.useAndroidX=true
classpath 'com.google.gms:google-services:4.3.15'
// huawei push need,不需要 huawei 通道,則删除
classpath 'com.huawei.agconnect:agcp:1.6.0.300'
}
}
allprojects {
repositories {google()
mavenCentral()
// huawei push need,不需要 huawei 通道,則删除
maven {url 'https://developer.huawei.com/repo/'}
// oppo push need,不需要 oppo 通道,則删除
maven {
url 'https://maven.columbus.heytapmobi.com/repository/releases/'
credentials {
username 'nexus'
password 'c0b08da17e3ec36c3870fed674a0bcb36abc2e23'
}
}
maven {url 'http://nexus.os.adc.com/nexus/content/groups/public'}
}
}
此代碼塊在浮窗中顯示
plugins {
id 'com.android.application'
// google push need,不需要 google 通道,則删除
id 'com.google.gms.google-services'
// huawei push need,不需要 huawei 通道,則删除
id 'com.huawei.agconnect'
}
android {
......
// google/huawei push need,it needs to be the same as the one on google/huawei console.
signingConfigs {
debug {storeFile file("android.keystore")
storePassword "123456"
keyAlias "keyAlias"
keyPassword "123456"
}
release {storeFile file("android.keystore")
storePassword "123456"
keyAlias "keyAlias"
keyPassword "123456"
}
}
defaultConfig {
// app packageName,需要與 Engagelab 控制台上的一樣
applicationId "com.engagelab.app"
......
manifestPlaceholders = [
// Engagelab appKey,需要與 Engagelab 控制台上的一樣,與 packageName 是一對一關係
ENGAGELAB_PRIVATES_APPKEY : "1c4b749a17f6aca33960a560",
// Engagelab appChannel,用於渠道統計
ENGAGELAB_PRIVATES_CHANNEL: "developer",
// Engagelab process,Engagelabsdk 工作所在的進程,注意: 開頭
ENGAGELAB_PRIVATES_PROCESS: ":remote",
// mi client 配置,需要與小米控制台上的一樣,還需要在 Engagelab 控制台配置 server 配置
XIAOMI_APPID : "MI-2882303761519903247",
XIAOMI_APPKEY : "MI-5511990317247",
// mz client 配置,需要與魅族控制台上的一樣,還需要在 Engagelab 控制台配置 server 配置
MEIZU_APPID : "MZ-141044",
MEIZU_APPKEY : "MZ-db66ddbf3caa49f5a3d61281b62f9172",
// oppo client 配置,需要與 oppo 控制台上的一樣,還需要在 Engagelab 控制台配置 server 配置
OPPO_APPID : "OP-30527975",
OPPO_APPKEY : "OP-ccaa93f426af4b05b529bb4e2a3b368b",
OPPO_APPSECRET : "OP-6da40dca7fd64279a6837ec899f2151d",
// vivo client 配置,需要與 vivo 控制台上的一樣,還需要在 Engagelab 控制台配置 server 配置
VIVO_APPID : "105481245",
VIVO_APPKEY : "8ce86005c2bc8a4db5178210b51eeb8a"
]
}
// google push need java 1.8,不需要 google 通道,則删除
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
// 引用 libs/aar 包
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
// google push need,不需要 google 通道,則刪除
// implementation 'com.google.firebase:firebase-messaging:23.2.0'
// huawei push need,不需要 huawei 通道,則刪除
//implementation 'com.huawei.hms:push:6.11.0.300'
//oppo 以下依賴都需要添加,不需要 oppo 通道,則刪除
// implementation 'com.google.code.gson:gson:2.8.9'
// implementation 'commons-codec:commons-codec:1.13'
// implementation 'androidx.annotation:annotation:1.1.0'
}
plugins {
id 'com.android.application'
// google push need,不需要 google 通道,則删除
id 'com.google.gms.google-services'
// huawei push need,不需要 huawei 通道,則删除
id 'com.huawei.agconnect'
}
android {
......
// google/huawei push need,it needs to be the same as the one on google/huawei console.
signingConfigs {
debug {storeFile file("android.keystore")
storePassword "123456"
keyAlias "keyAlias"
keyPassword "123456"
}
release {storeFile file("android.keystore")
storePassword "123456"
keyAlias "keyAlias"
keyPassword "123456"
}
}
defaultConfig {
// app packageName,需要與 Engagelab 控制台上的一樣
applicationId "com.engagelab.app"
......
manifestPlaceholders = [
// Engagelab appKey,需要與 Engagelab 控制台上的一樣,與 packageName 是一對一關係
ENGAGELAB_PRIVATES_APPKEY : "1c4b749a17f6aca33960a560",
// Engagelab appChannel,用於渠道統計
ENGAGELAB_PRIVATES_CHANNEL: "developer",
// Engagelab process,Engagelabsdk 工作所在的進程,注意: 開頭
ENGAGELAB_PRIVATES_PROCESS: ":remote",
// mi client 配置,需要與小米控制台上的一樣,還需要在 Engagelab 控制台配置 server 配置
XIAOMI_APPID : "MI-2882303761519903247",
XIAOMI_APPKEY : "MI-5511990317247",
// mz client 配置,需要與魅族控制台上的一樣,還需要在 Engagelab 控制台配置 server 配置
MEIZU_APPID : "MZ-141044",
MEIZU_APPKEY : "MZ-db66ddbf3caa49f5a3d61281b62f9172",
// oppo client 配置,需要與 oppo 控制台上的一樣,還需要在 Engagelab 控制台配置 server 配置
OPPO_APPID : "OP-30527975",
OPPO_APPKEY : "OP-ccaa93f426af4b05b529bb4e2a3b368b",
OPPO_APPSECRET : "OP-6da40dca7fd64279a6837ec899f2151d",
// vivo client 配置,需要與 vivo 控制台上的一樣,還需要在 Engagelab 控制台配置 server 配置
VIVO_APPID : "105481245",
VIVO_APPKEY : "8ce86005c2bc8a4db5178210b51eeb8a"
]
}
// google push need java 1.8,不需要 google 通道,則删除
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
// 引用 libs/aar 包
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
// google push need,不需要 google 通道,則刪除
// implementation 'com.google.firebase:firebase-messaging:23.2.0'
// huawei push need,不需要 huawei 通道,則刪除
//implementation 'com.huawei.hms:push:6.11.0.300'
//oppo 以下依賴都需要添加,不需要 oppo 通道,則刪除
// implementation 'com.google.code.gson:gson:2.8.9'
// implementation 'commons-codec:commons-codec:1.13'
// implementation 'androidx.annotation:annotation:1.1.0'
}
此代碼塊在浮窗中顯示
不導入 Engagelab 廠商 SDK
應用程式之前已經接入廠商的官方 SDK,不導入 mt-sdk-platform-x.x.x.aar,完成以下上報仍可以使用 Engagelab 平台推播廠商訊息。
上報廠商通道通知到達
/**
* 上報廠商通道通知到達
*
* 走 http/https 上報
*
* @param context 不為空
* @param messageId Engagelab 訊息 id,不為空
* @param platform 廠商,取值範圍(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、8:google)
* @param platformMessageId 廠商訊息 id,可為空
*/
public static void reportNotificationArrived(Context context, String messageId, byte platform, String platformMessageId)
/**
* 上報廠商通道通知到達
*
* 走 http/https 上報
*
* @param context 不為空
* @param messageId Engagelab 訊息 id,不為空
* @param platform 廠商,取值範圍(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、8:google)
* @param platformMessageId 廠商訊息 id,可為空
*/
public static void reportNotificationArrived(Context context, String messageId, byte platform, String platformMessageId)
此代碼塊在浮窗中顯示
上報點擊廠商通道通知
/**
* 上報廠商通道通知點擊
*
* 走 http/https 上報
*
* @param context 不為空
* @param messageId Engagelab 訊息 id,不為空
* @param platform 廠商,取值範圍(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、8:google)
* @param platformMessageId 廠商訊息 id,可為空
*/
public static void reportNotificationClicked(Context context, String messageId, byte platform, String platformMessageId)
/**
* 上報廠商通道通知點擊
*
* 走 http/https 上報
*
* @param context 不為空
* @param messageId Engagelab 訊息 id,不為空
* @param platform 廠商,取值範圍(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、8:google)
* @param platformMessageId 廠商訊息 id,可為空
*/
public static void reportNotificationClicked(Context context, String messageId, byte platform, String platformMessageId)
此代碼塊在浮窗中顯示
上報刪除廠商通道通知
/**
* 上報廠商通道通知刪除
*
* 走 http/https 上報
*
* @param context 不為空
* @param messageId Engagelab 訊息 id,不為空
* @param platform 廠商,取值範圍(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、8:google)
* @param platformMessageId 廠商訊息 id,可為空
*/
public static void reportNotificationDeleted(Context context, String messageId, byte platform, String platformMessageId)
/**
* 上報廠商通道通知刪除
*
* 走 http/https 上報
*
* @param context 不為空
* @param messageId Engagelab 訊息 id,不為空
* @param platform 廠商,取值範圍(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、8:google)
* @param platformMessageId 廠商訊息 id,可為空
*/
public static void reportNotificationDeleted(Context context, String messageId, byte platform, String platformMessageId)
此代碼塊在浮窗中顯示
上報打開廠商通道通知
/**
* 上報廠商通道通知打開
*
* 走 http/https 上報
*
* @param context 不為空
* @param messageId Engagelab 訊息 id,不為空
* @param platform 廠商,取值範圍(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、8:google)
* @param platformMessageId 廠商訊息 id,可為空
*/
public static void reportNotificationOpened(Context context, String messageId, byte platform, String platformMessageId)
/**
* 上報廠商通道通知打開
*
* 走 http/https 上報
*
* @param context 不為空
* @param messageId Engagelab 訊息 id,不為空
* @param platform 廠商,取值範圍(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、8:google)
* @param platformMessageId 廠商訊息 id,可為空
*/
public static void reportNotificationOpened(Context context, String messageId, byte platform, String platformMessageId)
此代碼塊在浮窗中顯示
上傳廠商 token
/**
* 上傳廠商 token
*
* 需要在 Engagelab 長連接建立成功後再調用,否則無效。 MTCommonReceiver.onConnectStatus 回調結果為 true 時為長連接建立成功。
*
* 走 tcp 上傳
*
* @param context 不為空
* @param platform 廠商,取值範圍(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、8:google)
* @param token 廠商返回的 token,不為空
* @param region 海外版小米和 oppo 需要設置region,根據使用地區等填如:“US” 等,非海外版的填 null
*/
public static void uploadPlatformToken(Context context, byte platform, String token, String region)
/**
* 上傳廠商 token
*
* 需要在 Engagelab 長連接建立成功後再調用,否則無效。 MTCommonReceiver.onConnectStatus 回調結果為 true 時為長連接建立成功。
*
* 走 tcp 上傳
*
* @param context 不為空
* @param platform 廠商,取值範圍(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、8:google)
* @param token 廠商返回的 token,不為空
* @param region 海外版小米和 oppo 需要設置region,根據使用地區等填如:“US” 等,非海外版的填 null
*/
public static void uploadPlatformToken(Context context, byte platform, String token, String region)
此代碼塊在浮窗中顯示