厂商通道集成文档

最新更新:2023-03-02

前提是已经集成Engagelab通道

1.libs导包和资源文件

  • 将mt-sdk-platform-x.x.x.aar导入libs目录
  • 将th-sdk-platform-x.x.x.aar导入libs目录
  • 在res/drawable/下放好命名为mtpush_notification_icon.png的通知小图标。如果没配置,sdk会取应用图标,android高版本会出现显示异常问题
  • huawei通道需要agconnect-services.json文件,配置在应用的 module 目录下,请在huawei通道控制台获取
  • google通道需要google-services.json文件,配置在应用的 module 目录下,请在google通道控制台 获取
  • meizu通道获取不到token,尝试在 gradle.properties 中添加 android.enableR8 = false 进行关闭 R8

2.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/' } } 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.8' // 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/' } } }
          // 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/' }
    }
    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.8'
        // 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/' }
    }
}

        
此代码块在浮窗中显示
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,需要与控制台上的一样 applicationId "com.engagelab.app" ...... manifestPlaceholders = [ //appKey,需要与控制台上的一样,与packageName是一对一关系 ENGAGELAB_PRIVATES_APPKEY : "您的appkey", // Engagelab appChannel,用于渠道统计 ENGAGELAB_PRIVATES_CHANNEL: "developer", // Engagelab process,Engagelabsdk工作所在的进程,注意:开头 ENGAGELAB_PRIVATES_PROCESS: ":remote", // mi client 配置,需要与小米控制台上的一样,还需要在Portal控制台配置 server 配置 XIAOMI_APPID : "MI-您的,对应平台信息", XIAOMI_APPKEY : "MI-您的,对应平台信息", // mi global client 配置,需要与小米控制台上的一样,还需要在Portal控制台配置 server 配置 XIAOMI_GLOBAL_APPID : "MI-您的,对应平台信息", XIAOMI_GLOBAL_APPKEY : "MI-您的,对应平台信息", // mz client 配置,需要与魅族控制台上的一样,还需要在Portal控制台配置 server 配置 MEIZU_APPID : "MZ-您的,对应平台信息", MEIZU_APPKEY : "MZ-您的,对应平台信息", // oppo client 配置,需要与oppo控制台上的一样,还需要在Portal控制台配置 server 配置 OPPO_APPID : "OP-您的,对应平台信息", OPPO_APPKEY : "OP-您的,对应平台信息", OPPO_APPSECRET : "OP-您的,对应平台信息", // vivo client 配置,需要与vivo控制台上的一样,还需要在Portal控制台配置 server 配置 VIVO_APPID : "您的,对应平台信息", VIVO_APPKEY : "您的,对应平台信息", HONOR_APPID : "您的,对应平台信息", ] } // 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.1.1' // huawei push need,不需要 huawei 通道,则删除 //implementation 'com.huawei.hms:push:6.7.0.300' //oppo以下依赖都需要添加,不需要 oppo 通道,则删除 // implementation 'com.google.code.gson:gson:2.6.2' // implementation 'commons-codec:commons-codec:1.6' // 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,需要与控制台上的一样
        applicationId "com.engagelab.app"
                ......

        manifestPlaceholders = [
                //appKey,需要与控制台上的一样,与packageName是一对一关系
                ENGAGELAB_PRIVATES_APPKEY : "您的appkey",
                // Engagelab appChannel,用于渠道统计
                ENGAGELAB_PRIVATES_CHANNEL: "developer",
                // Engagelab process,Engagelabsdk工作所在的进程,注意:开头
                ENGAGELAB_PRIVATES_PROCESS: ":remote",
                // mi client 配置,需要与小米控制台上的一样,还需要在Portal控制台配置 server 配置
                XIAOMI_APPID            : "MI-您的,对应平台信息",
                XIAOMI_APPKEY           : "MI-您的,对应平台信息",
                // mi global client 配置,需要与小米控制台上的一样,还需要在Portal控制台配置 server 配置
                XIAOMI_GLOBAL_APPID            : "MI-您的,对应平台信息",
                XIAOMI_GLOBAL_APPKEY           : "MI-您的,对应平台信息",
                // mz client 配置,需要与魅族控制台上的一样,还需要在Portal控制台配置 server 配置
                MEIZU_APPID             : "MZ-您的,对应平台信息",
                MEIZU_APPKEY            : "MZ-您的,对应平台信息",
                // oppo client 配置,需要与oppo控制台上的一样,还需要在Portal控制台配置 server 配置
                OPPO_APPID              : "OP-您的,对应平台信息",
                OPPO_APPKEY             : "OP-您的,对应平台信息",
                OPPO_APPSECRET          : "OP-您的,对应平台信息",
                // vivo client 配置,需要与vivo控制台上的一样,还需要在Portal控制台配置 server 配置
                VIVO_APPID              : "您的,对应平台信息",
                VIVO_APPKEY             : "您的,对应平台信息",
                HONOR_APPID             : "您的,对应平台信息",
        ]
    }
        
    // 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.1.1'

    // huawei push need,不需要 huawei 通道,则删除
    //implementation 'com.huawei.hms:push:6.7.0.300'
    
    
    //oppo以下依赖都需要添加,不需要 oppo 通道,则删除
    //    implementation 'com.google.code.gson:gson:2.6.2'
    //    implementation 'commons-codec:commons-codec:1.6'
    //    implementation 'androidx.annotation:annotation:1.1.0'

}

        
此代码块在浮窗中显示

3.不导入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、7:honor、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、7:honor、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、7:honor、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、7:honor、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、7:honor、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、7:honor、8:google)
     * @param platformMessageId 厂商消息id,可为空
     */
    public static void reportNotificationOpened(Context context, String messageId, byte platform, String platformMessageId)

        
此代码块在浮窗中显示
/** * 上传厂商token * * 需要在Engagelab长连接建立成功后再调用,否则无效。MTCommonReceiver.onConnectStatus回调结果为true时为长连接建立成功。 * * 走tcp上传 * * @param context 不为空 * @param platform 厂商,取值范围(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、7:honor、8:google) * @param token 厂商返回的token,不为空 */ public static void uploadPlatformToken(Context context, byte platform, String token)
              /**
     * 上传厂商token
     *
     * 需要在Engagelab长连接建立成功后再调用,否则无效。MTCommonReceiver.onConnectStatus回调结果为true时为长连接建立成功。
     * 
     * 走tcp上传
     *
     * @param context  不为空
     * @param platform 厂商,取值范围(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、7:honor、8:google)
     * @param token    厂商返回的token,不为空
     */
    public static void uploadPlatformToken(Context context, byte platform, String token)

        
此代码块在浮窗中显示
在文档中心打开