MTPush-API

最新更新:2024-09-18

MTCorePrivatesApi

  • 主要用于信息配置
  • 所有方法都需要在主进程中调用,请不要在方法调用前判断进程将其放到子进程,否则调用出错

configAppKey

  • 需要在Application.onCreate()方法中调用
  • 请在init之前调用
/** * 配置应用key,不使用AndroidManifest.xml中的配置 * * 需要在Application.onCreate()方法中调用 * 请在[init](#init)之前调用 * * @param context 不为空 * @param appKey 不为空 */ public static void configAppKey(Context context, String appKey)
              /**
     * 配置应用key,不使用AndroidManifest.xml中的配置
     *
     * 需要在Application.onCreate()方法中调用
     * 请在[init](#init)之前调用
     *
     * @param context 不为空
     * @param appKey 不为空
     */
    public static void configAppKey(Context context, String appKey)

        
此代码块在浮窗中显示

代码示例如下

MTCorePrivatesApi.configAppKey(this,"你的appkey");
          MTCorePrivatesApi.configAppKey(this,"你的appkey");

        
此代码块在浮窗中显示

configAppChannel

  • 需要在Application.onCreate()方法中调用
  • 请在init之前调用
/** * 配置应用渠道,不使用AndroidManifest.xml中的配置 * 需要在Application.onCreate()方法中调用 * 需在init前,并要在Application.onCreate内使用 * * @param context 不为空 * @param appChannel 不为空 */ public static void configAppChannel(Context context, String appChannel)
               /**
         * 配置应用渠道,不使用AndroidManifest.xml中的配置
         * 需要在Application.onCreate()方法中调用
         * 需在init前,并要在Application.onCreate内使用
         *
         * @param context    不为空
         * @param appChannel 不为空
         */
    public static void configAppChannel(Context context, String appChannel)

        
此代码块在浮窗中显示

代码示例如下

MTCorePrivatesApi.configAppChannel(this,"你的appChannel");
          MTCorePrivatesApi.configAppChannel(this,"你的appChannel");

        
此代码块在浮窗中显示

configAppSiteName

  • 需要在Application.onCreate()方法中调用
  • 请在init之前调用
/** * 配置数据中心站点名称,不使用AndroidManifest.xml中的配置 * 目前可选的节点有Singapore、USA_Virginia、DEU_Frankfurt和HongKong。 * 需要在Application.onCreate()方法中调用 * 请在[init](#init)之前调用 * * @param context 不为空 * @param appSiteName 不为空 */ public static void configAppSiteName(Context context, String appSiteName)
              /**
     * 配置数据中心站点名称,不使用AndroidManifest.xml中的配置
     * 目前可选的节点有Singapore、USA_Virginia、DEU_Frankfurt和HongKong。
     * 需要在Application.onCreate()方法中调用
     * 请在[init](#init)之前调用
     *
     * @param context 不为空
     * @param appSiteName 不为空
     */
    public static void configAppSiteName(Context context, String appSiteName)

        
此代码块在浮窗中显示

代码示例如下

MTCorePrivatesApi.configAppSiteName(this,"你的平台数据中心站点名称");
          MTCorePrivatesApi.configAppSiteName(this,"你的平台数据中心站点名称");

        
此代码块在浮窗中显示

configHeartbeatInterval

  • 需要在Application.onCreate()方法中调用
  • 请在init之前调用
/** * 设置心跳时间间隔 * * 需要在Application.onCreate()方法中调用 * * @param context 不为空 * @param heartbeatInterval 时间单位为毫秒、必须大于0、默认值是4分50秒\ */ public static void configHeartbeatInterval(Context context, long heartbeatInterval)
              /**
     * 设置心跳时间间隔
     *
     * 需要在Application.onCreate()方法中调用
     *
     * @param context 不为空
     * @param heartbeatInterval 时间单位为毫秒、必须大于0、默认值是4分50秒\
     */
    public static void configHeartbeatInterval(Context context, long heartbeatInterval)

        
此代码块在浮窗中显示

代码示例如下

  • 演示设置心跳时间间隔为3分钟
MTCorePrivatesApi.configHeartbeatInterval(this,3 * 60 * 1000);
          MTCorePrivatesApi.configHeartbeatInterval(this,3 * 60 * 1000);

        
此代码块在浮窗中显示

configConnectRetryCount

  • 需要在Application.onCreate()方法中调用
  • 请在init之前调用
/** * 设置长连接重试次数 * * 需要在Application.onCreate()方法中调用 * * @param context 不为空 * @param connectRetryCount 重试的次数、默认值为3、最少3次 */ public static void configConnectRetryCount(Context context, int connectRetryCount)
              /**
     * 设置长连接重试次数
     *
     * 需要在Application.onCreate()方法中调用
     *
     * @param context 不为空
     * @param connectRetryCount 重试的次数、默认值为3、最少3次
     */
    public static void configConnectRetryCount(Context context, int connectRetryCount)

        
此代码块在浮窗中显示

代码示例如下

*演示设置重连次数为10次

MTCorePrivatesApi.configConnectRetryCount(this,10);
          MTCorePrivatesApi.configConnectRetryCount(this,10);

        
此代码块在浮窗中显示

setTcpSSl

  • 需要在Application.onCreate()方法中调用
  • 请在init之前调用
/** * 设置长连接是否加密,默认不加密 * * 需要在Application.onCreate()方法中调用 * * @param isSSL true加密,false不加密 */ public static void setTcpSSl(Context context, boolean isSSL)
              /**
     * 设置长连接是否加密,默认不加密
     *
     * 需要在Application.onCreate()方法中调用
     *
     * @param isSSL true加密,false不加密
     */
    public static void setTcpSSl(Context context, boolean isSSL)

        
此代码块在浮窗中显示

代码示例如下

*演示设置加密

MTCorePrivatesApi.setTcpSSl(context,true);
          MTCorePrivatesApi.setTcpSSl(context,true);

        
此代码块在浮窗中显示

configDebugMode

  • 需要在Application.onCreate()方法中调用
  • 请在init之前调用
  • Engagelab日志格式,搜索"ENGAGELAB-PRIVATES"
  • Engagelab会分别在主进程和子进程打印日志
/** * 设置是否debug模式,debug模式会打印更对详细日志 * * 需要在Application.onCreate()方法中调用 * * @param context 不为空 * @param enable 是否调试模式,true为调试模式,false不是 */ public static void configDebugMode(Context context, boolean enable)
              /**
     * 设置是否debug模式,debug模式会打印更对详细日志
     *
     * 需要在Application.onCreate()方法中调用
     * 
     * @param context 不为空 
     * @param enable 是否调试模式,true为调试模式,false不是
     */
    public static void configDebugMode(Context context, boolean enable)

        
此代码块在浮窗中显示

代码示例如下

  • sdk在两个进程工作,主进程和子进程,子进程名为MTCommonService子类service的process属性名
  • sdk的日志tag为"ENGAGELAB-PRIVATES"
  • udp/tcp/http相关操作的日志均在子进程
  • 所以遇到消息无法推送的情况,请先打开调试模式,再前往子进程获取tag为"ENGAGELAB-PRIVATES"的日志,提供给技术支持分析
// 建议应用未上线时设置为true,方便集成 MTCorePrivatesApi.configDebugMode(context.getApplicationContext(), true); // 建议应用上线后设置为false MTCorePrivatesApi.configDebugMode(context.getApplicationContext(), false);
                  // 建议应用未上线时设置为true,方便集成
        MTCorePrivatesApi.configDebugMode(context.getApplicationContext(), true);
        
        // 建议应用上线后设置为false
        MTCorePrivatesApi.configDebugMode(context.getApplicationContext(), false);

        
此代码块在浮窗中显示

configSM4

  • 需要在Application.onCreate()方法中调用
  • 请在init之前调用
/** * 配置使用国密加密 * * @param context 不为空 */ public static void configSM4(Context context)
              /**
     * 配置使用国密加密
     *
     * @param context 不为空
     */
    public static void configSM4(Context context)

        
此代码块在浮窗中显示

示例代码如下

// 开启国密加密,不调用则使用默认加密方式 MTCorePrivatesApi.configSM4(context.getApplicationContext());
              // 开启国密加密,不调用则使用默认加密方式
    MTCorePrivatesApi.configSM4(context.getApplicationContext());

        
此代码块在浮窗中显示

getUserId

返回值为空时需要注意是否配置了环境,是否调用了初始化

如果检查配置无误,可能还在连接过程中,可在onConnectStatus返回true时再获取

/** * 获取当前设备的userId,Engagelab唯一标识,可同于推送 * * @param context 不为空 * @return userId */ public static String getUserId(Context context)
              /**
     * 获取当前设备的userId,Engagelab唯一标识,可同于推送
     *
     * @param context 不为空
     * @return userId
     */
    public static String getUserId(Context context)

        
此代码块在浮窗中显示

代码示例如下

String userId = MTCorePrivatesApi.getUserId(context);
          String userId = MTCorePrivatesApi.getUserId(context);

        
此代码块在浮窗中显示

getRegistrationId

返回值为空时需要注意是否配置了环境,是否调用了初始化

如果检查配置无误,可能还在连接过程中,可在onConnectStatus返回true时再获取

/** * 获取当前设备的registrationId,Engagelab唯一标识,可同于推送 * * @param context 不为空 * @return registrationId */ public static String getRegistrationId(Context context)
              /**
     * 获取当前设备的registrationId,Engagelab唯一标识,可同于推送
     *
     * @param context 不为空
     * @return registrationId
     */
    public static String getRegistrationId(Context context)

        
此代码块在浮窗中显示

代码示例如下

String registrationId = MTCorePrivatesApi.getRegistrationId(context);
          String registrationId = MTCorePrivatesApi.getRegistrationId(context);

        
此代码块在浮窗中显示

MTPushPrivatesApi

  • 主要用于推送功能
  • 所有方法都需要在主进程中调用,请不要在方法调用前判断进程将其放到子进程,否则调用出错

configOldPushVersion

  • 后台没升级tag: V3.5.4-newportal-20210823-gamma.57版本,前端必须调用此方法,否则通知点击跳转有问题
  • 在Application.onCreate()方法中调用
  • 请在init前调用
/** * 配置push版本号为3.9.X * * @param context 不为空 */ public static void configOldPushVersion(Context context)
              /**
     * 配置push版本号为3.9.X
     *
     * @param context 不为空
     */
    public static void configOldPushVersion(Context context)

        
此代码块在浮窗中显示

代码示例如下:

public class ExampleApplication extends Application { @Override public void onCreate() { // 打开调试模式 MTCorePrivatesApi.configDebugMode(context.getApplicationContext(), true); // 使用老版本的通知点击跳转 MTPushPrivatesApi.configOldPushVersion(context.getApplicationContext()); // 初始化 MTPushPrivatesApi.init(context.getApplicationContext()); } }
          public class ExampleApplication extends Application {

    @Override
    public void onCreate() {
        // 打开调试模式    
        MTCorePrivatesApi.configDebugMode(context.getApplicationContext(), true);
        // 使用老版本的通知点击跳转
        MTPushPrivatesApi.configOldPushVersion(context.getApplicationContext());
        // 初始化
        MTPushPrivatesApi.init(context.getApplicationContext());   
    }
}

        
此代码块在浮窗中显示

configUserLanguage

/** * 配置push通知语言,在MTPushPrivatesApi.init后使用 * * @param context 不为空 * @param pushLanguage 为空字符串时,恢复使用手机语言 */ public static void configUserLanguage(Context context, String pushLanguage)
              /**
     * 配置push通知语言,在MTPushPrivatesApi.init后使用
     *
     * @param context      不为空
     * @param pushLanguage 为空字符串时,恢复使用手机语言
     */
    public static void configUserLanguage(Context context, String pushLanguage)

        
此代码块在浮窗中显示

代码示例如下:

MTPushPrivatesApi.configUserLanguage(context,"zh_CN");
              MTPushPrivatesApi.configUserLanguage(context,"zh_CN");   

        
此代码块在浮窗中显示

setEnablePushTextToSpeech

/** * 语音播报功能设置,需要导入语音包(mt-sdk-sound-x.x.x.aar) * * @param context 不为空 * @param enable true为打开,false为关闭,默认为false */ public static void setEnablePushTextToSpeech(Context context, boolean enable)
              /**
     * 语音播报功能设置,需要导入语音包(mt-sdk-sound-x.x.x.aar)
     *
     * @param context      不为空
     * @param enable true为打开,false为关闭,默认为false
     */
    public static void setEnablePushTextToSpeech(Context context, boolean enable)

        
此代码块在浮窗中显示

代码示例如下:

MTPushPrivatesApi.setEnablePushTextToSpeech(context,true);
              MTPushPrivatesApi.setEnablePushTextToSpeech(context,true);   

        
此代码块在浮窗中显示

init

  • 建议在Application.onCreate()方法中调用
/** * MTPush初始化 * * 建议在Application.onCreate()方法中调用 * * @param context 不为空,请使用applicationContext对象 */ public static void init(Context context)
              /**
     * MTPush初始化
     *
     * 建议在Application.onCreate()方法中调用
     * 
     * @param context 不为空,请使用applicationContext对象
     */
    public static void init(Context context)

        
此代码块在浮窗中显示

代码示例如下

public class ExampleApplication extends Application { @Override public void onCreate() { // 打开调试模式 MTCorePrivatesApi.configDebugMode(context.getApplicationContext(), true); // 初始化 MTPushPrivatesApi.init(context.getApplicationContext()); } }
          public class ExampleApplication extends Application {

    @Override
    public void onCreate() {
        // 打开调试模式    
        MTCorePrivatesApi.configDebugMode(context.getApplicationContext(), true);
        // 初始化
        MTPushPrivatesApi.init(context.getApplicationContext());   
    }
}

        
此代码块在浮窗中显示

goToAppNotificationSettings

/** * 前往通知开关设置页面 * * @param context 不为空 */ public static void goToAppNotificationSettings(Context context)
              /**
     * 前往通知开关设置页面
     *
     * @param context 不为空
     */
    public static void goToAppNotificationSettings(Context context)

        
此代码块在浮窗中显示

示例代码如下

// 前往通知开关设置页面,需要客户手动打开通知开关 MTPushPrivatesApi.goToAppNotificationSettings(this); // 继承MTCommonReceiver后,复写onNotificationStatus方法,获取通知开关状态,如果enable为true说明已经开启成功 @Override public void onNotificationStatus(Context context, boolean enable) { if(enable){ // 已设置通知开关为打开 } }
              // 前往通知开关设置页面,需要客户手动打开通知开关
    MTPushPrivatesApi.goToAppNotificationSettings(this);
    
    // 继承MTCommonReceiver后,复写onNotificationStatus方法,获取通知开关状态,如果enable为true说明已经开启成功
    @Override
    public void onNotificationStatus(Context context, boolean enable) {
                if(enable){
                        // 已设置通知开关为打开
                }	    
    }

        
此代码块在浮窗中显示

turnOnPush

  • 一般用于在调用turnOffPush后,需要再开启 push 推送
  • 重复调用只会生效一次,如果已经是开启状态,不会再生效
  • 如果环境没有问题,onConnectStatus会回调结果
  • 目前支持的通道:Engagelab/华为/小米/魅族/oppo/vivo
/** * 开启 Push 推送,并持久化存储开关状态为true,默认是true * * @param context 不能为空 */ public static void turnOnPush(Context context)
              /**
     * 开启 Push 推送,并持久化存储开关状态为true,默认是true
     * 
     * @param context 不能为空
     */
    public static void turnOnPush(Context context)

        
此代码块在浮窗中显示

代码示例如下

// 开启推送,默认就是打开的 MTPushPrivatesApi.turnOnPush(context); // 继承MTCommonReceiver后,复写onConnectStatus方法,获取长连接的连接状态,如果enable为true说明已经开启成功 @Override public void onConnectStatus(Context context, boolean enable){ if(enable){ // 开启 push 推送成功 } }
          // 开启推送,默认就是打开的
MTPushPrivatesApi.turnOnPush(context);
        
// 继承MTCommonReceiver后,复写onConnectStatus方法,获取长连接的连接状态,如果enable为true说明已经开启成功
@Override
public void onConnectStatus(Context context, boolean enable){
    if(enable){
        // 开启 push 推送成功
    }				
}				

        
此代码块在浮窗中显示

turnOffPush

  • 一般用于关闭 push 推送
  • 关闭 push 推送后,再调用init不会打开推送
  • 重复调用只会生效一次
  • 如果环境没有问题,onConnectStatus会回调结果
  • 目前支持的通道:Engagelab/华为/小米/魅族/oppo/vivo
/** * 关闭 push 推送,并持久化存储开关状态为false,默认是true * * @param context 不能为空 */ public static void turnOffPush(Context context)
              /**
     * 关闭 push 推送,并持久化存储开关状态为false,默认是true
     *
     * @param context 不能为空
     */
    public static void turnOffPush(Context context)

        
此代码块在浮窗中显示

代码示例如下

// 关闭推送,需要再调用turnOnPush才能开启推送 MTPushPrivatesApi.turnOffPush(context); // 继承MTCommonReceiver后,复写onConnectStatus方法,获取长连接状态,如果enable为false说明已经关闭成功 @Override public void onConnectStatus(Context context, boolean enable){ if(!enable){ // 关闭 push 推送成功 } }
          // 关闭推送,需要再调用turnOnPush才能开启推送
MTPushPrivatesApi.turnOffPush(context);
        
// 继承MTCommonReceiver后,复写onConnectStatus方法,获取长连接状态,如果enable为false说明已经关闭成功
@Override
public void onConnectStatus(Context context, boolean enable){
    if(!enable){
        // 关闭 push 推送成功
    }
}		

        
此代码块在浮窗中显示

addTag

  • 请先init,否则调用无效
  • 如果环境没有问题,onTagMessage会回调结果
/** * 增加指定tag,累加逻辑,之前设置的标签依然存在 * * @param context 不能为空 * @param sequence 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性 * @param tags 标签数组,每个tag命名长度限制为40字节,最多支持设置1000个tag,且单次操作总长度不得超过5000字节 */ public static void addTag(Context context, int sequence, String... tags)
              /**
     * 增加指定tag,累加逻辑,之前设置的标签依然存在
     *
     * @param context  不能为空
     * @param sequence 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性
     * @param tags     标签数组,每个tag命名长度限制为40字节,最多支持设置1000个tag,且单次操作总长度不得超过5000字节
     */
    public static void addTag(Context context, int sequence, String... tags)

        
此代码块在浮窗中显示

代码示例如下

// 这里定义一个常量,代表增加指定tag操作 private static final int SEQUENCE_TAG_ADD = 1; // 增加tag:"china","guangdong","shenzhen" MTPushPrivatesApi.addTag(context,SEQUENCE_TAG_ADD,"china","guangdong","shenzhen") // 继承MTCommonReceiver后,复写onTagMessage方法,获取tag操作回调 @Override public void onTagMessage(Context context, TagMessage tagMessage){ if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){ // tag操作失败,详细错误信息可查看MTPushPrivatesApi.Code return; } if(tagMessage.getSequence() == SEQUENCE_TAG_ADD){ // 增加指定tag成功,此时可查看操作成功的tag数组 String[] tags = tagMessage.getTags(); } }
                  // 这里定义一个常量,代表增加指定tag操作
        private static final int SEQUENCE_TAG_ADD = 1;
        // 增加tag:"china","guangdong","shenzhen"
        MTPushPrivatesApi.addTag(context,SEQUENCE_TAG_ADD,"china","guangdong","shenzhen")
            
        // 继承MTCommonReceiver后,复写onTagMessage方法,获取tag操作回调
        @Override
        public void onTagMessage(Context context, TagMessage tagMessage){
                if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){
                        // tag操作失败,详细错误信息可查看MTPushPrivatesApi.Code
                        return;
                }
                if(tagMessage.getSequence() == SEQUENCE_TAG_ADD){
                        // 增加指定tag成功,此时可查看操作成功的tag数组
                        String[] tags = tagMessage.getTags();
                }
        }

        
此代码块在浮窗中显示

deleteTag

  • 请先init,否则调用无效
  • 如果环境没有问题,onTagMessage会回调结果
/** * 删除指定tag,删除逻辑,会删除指定的标签 * * @param context 不能为空 * @param sequence 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性 * @param tags 标签数组,每个tag命名长度限制为40字节,最多支持设置1000个tag,且单次操作总长度不得超过5000字节 */ public static void deleteTag(Context context, int sequence, String... tags)
              /**
     * 删除指定tag,删除逻辑,会删除指定的标签
     *
     * @param context  不能为空
     * @param sequence 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性
     * @param tags     标签数组,每个tag命名长度限制为40字节,最多支持设置1000个tag,且单次操作总长度不得超过5000字节
     */
    public static void deleteTag(Context context, int sequence, String... tags)

        
此代码块在浮窗中显示

代码示例如下:

// 这里定义一个常量,代表删除指定tag操作 private static final int SEQUENCE_TAG_DELETE = 2; // 删除tag:"china","guangdong","shenzhen" MTPushPrivatesApi.deleteTag(context,SEQUENCE_TAG_DELETE,"china","guangdong","shenzhen") // 继承MTCommonReceiver后,复写onTagMessage方法,获取tag操作回调 @Override public void onTagMessage(Context context, TagMessage tagMessage){ if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){ // tag操作失败,详细错误信息可查看MTPushPrivatesApi.Code return; } if(tagMessage.getSequence() == SEQUENCE_TAG_DELETE){ // 删除指定tag成功,此时可查看操作成功的tag数组 String[] tags = tagMessage.getTags(); } }
              // 这里定义一个常量,代表删除指定tag操作
    private static final int SEQUENCE_TAG_DELETE = 2;
    // 删除tag:"china","guangdong","shenzhen"
    MTPushPrivatesApi.deleteTag(context,SEQUENCE_TAG_DELETE,"china","guangdong","shenzhen")
    
    // 继承MTCommonReceiver后,复写onTagMessage方法,获取tag操作回调
    @Override
    public void onTagMessage(Context context, TagMessage tagMessage){
            if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){
                    // tag操作失败,详细错误信息可查看MTPushPrivatesApi.Code
                    return;
            }
            if(tagMessage.getSequence() == SEQUENCE_TAG_DELETE){
                    // 删除指定tag成功,此时可查看操作成功的tag数组
                    String[] tags = tagMessage.getTags();
            }
    }

        
此代码块在浮窗中显示

updateTag

  • 请先init,否则调用无效
  • 如果环境没有问题,onTagMessage会回调结果
/** * 更新指定tag,覆盖逻辑,之前添加的tag会清空 * * @param context 不能为空 * @param sequence 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性 * @param tags 标签数组,每个tag命名长度限制为40字节,最多支持设置1000个tag,且单次操作总长度不得超过5000字节 */ public static void updateTag(Context context, int sequence, String... tags)
              /**
     * 更新指定tag,覆盖逻辑,之前添加的tag会清空
     *
     * @param context  不能为空
     * @param sequence 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性
     * @param tags     标签数组,每个tag命名长度限制为40字节,最多支持设置1000个tag,且单次操作总长度不得超过5000字节
     */
    public static void updateTag(Context context, int sequence, String... tags)

        
此代码块在浮窗中显示

代码示例如下:

// 这里定义一个常量,代表更新指定tag操作 private static final int SEQUENCE_TAG_UPDATE = 3; // 更新tag:"beijing","shanghai","guangzhou","shenzhen",之前设置的tag会失效 MTPushPrivatesApi.updateTag(context,SEQUENCE_TAG_UPDATE,"beijing","shanghai","guangzhou","shenzhen") // 继承MTCommonReceiver后,复写onTagMessage方法,获取tag操作回调 @Override public void onTagMessage(Context context, TagMessage tagMessage){ if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){ // tag操作失败,详细错误信息可查看MTPushPrivatesApi.Code return; } if(tagMessage.getSequence() == SEQUENCE_TAG_UPDATE){ // 更新指定tag成功,此时可查看操作成功的tag数组 String[] tags = tagMessage.getTags(); } }
              // 这里定义一个常量,代表更新指定tag操作
    private static final int SEQUENCE_TAG_UPDATE = 3;
    // 更新tag:"beijing","shanghai","guangzhou","shenzhen",之前设置的tag会失效
    MTPushPrivatesApi.updateTag(context,SEQUENCE_TAG_UPDATE,"beijing","shanghai","guangzhou","shenzhen")
    
    // 继承MTCommonReceiver后,复写onTagMessage方法,获取tag操作回调
    @Override
    public void onTagMessage(Context context, TagMessage tagMessage){
            if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){
                    // tag操作失败,详细错误信息可查看MTPushPrivatesApi.Code
                    return;
            }
            if(tagMessage.getSequence() == SEQUENCE_TAG_UPDATE){
                    // 更新指定tag成功,此时可查看操作成功的tag数组
                    String[] tags = tagMessage.getTags();
            }
    }

        
此代码块在浮窗中显示

queryTag

  • 请先init,否则调用无效
  • 如果环境没有问题,onTagMessage会回调结果
/** * 查询指定tag * * @param context 不能为空 * @param sequence 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性 * @param tag 标签,每个tag命名长度限制为40字节 */ public static void queryTag(Context context, int sequence, String tag)
              /**
     * 查询指定tag
     * 
     * @param context  不能为空
     * @param sequence 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性
     * @param tag      标签,每个tag命名长度限制为40字节
     */
    public static void queryTag(Context context, int sequence, String tag)

        
此代码块在浮窗中显示

代码示例如下

// 这里定义一个常量,代表查询指定tag操作 private static final int SEQUENCE_TAG_QUERY = 4; // 查询标签 MTPushPrivatesApi.queryTag(context,SEQUENCE_TAG_QUERY,"china") // 继承MTCommonReceiver后,复写onTagMessage方法,获取tag操作回调 @Override public void onTagMessage(Context context, TagMessage tagMessage){ if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){ // tag操作失败,详细错误信息可查看MTPushPrivatesApi.Code return; } if(tagMessage.getSequence() == SEQUENCE_TAG_QUERY){ // 查询指定tag成功,此时可查看操作成功的tag和状态 String tag = tagMessage.getQueryTag(); boolean valid = tagMessage.isQueryTagValid(); } }
              // 这里定义一个常量,代表查询指定tag操作
    private static final int SEQUENCE_TAG_QUERY = 4;
    // 查询标签
    MTPushPrivatesApi.queryTag(context,SEQUENCE_TAG_QUERY,"china")
    
    // 继承MTCommonReceiver后,复写onTagMessage方法,获取tag操作回调
    @Override
    public void onTagMessage(Context context, TagMessage tagMessage){
            if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){
                    // tag操作失败,详细错误信息可查看MTPushPrivatesApi.Code
                    return;
            }
            if(tagMessage.getSequence() == SEQUENCE_TAG_QUERY){
                    // 查询指定tag成功,此时可查看操作成功的tag和状态
                    String tag = 	tagMessage.getQueryTag();
                    boolean valid = tagMessage.isQueryTagValid();
            }
    }	

        
此代码块在浮窗中显示

deleteAllTag

  • 请先init,否则调用无效
  • 如果环境没有问题,onTagMessage会回调结果
/** * 删除所有tag,清空逻辑,会删除所有的标签 * * @param context 不能为空 * @param sequence 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性 */ public static void deleteAllTag(Context context, int sequence, String... tags)
              /**
     * 删除所有tag,清空逻辑,会删除所有的标签
     *
     * @param context  不能为空
     * @param sequence 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性
     */
    public static void deleteAllTag(Context context, int sequence, String... tags)

        
此代码块在浮窗中显示

代码示例如下:

// 这里定义一个常量,代表删除所有tag操作 private static final int SEQUENCE_TAG_DELETE_ALL = 5; // 删除所有tag MTPushPrivatesApi.deleteTag(context,SEQUENCE_TAG_DELETE_ALL) // 继承MTCommonReceiver后,复写onTagMessage方法,获取tag操作回调 @Override public void onTagMessage(Context context, TagMessage tagMessage){ if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){ // tag操作失败,详细错误信息可查看MTPushPrivatesApi.Code return; } if(tagMessage.getSequence() == SEQUENCE_TAG_DELETE_ALL){ // 删除所有tag成功 } }
              // 这里定义一个常量,代表删除所有tag操作
    private static final int SEQUENCE_TAG_DELETE_ALL = 5;
    // 删除所有tag
    MTPushPrivatesApi.deleteTag(context,SEQUENCE_TAG_DELETE_ALL)
    
    // 继承MTCommonReceiver后,复写onTagMessage方法,获取tag操作回调
    @Override
    public void onTagMessage(Context context, TagMessage tagMessage){
            if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){
                    // tag操作失败,详细错误信息可查看MTPushPrivatesApi.Code
                    return;
            }
            if(tagMessage.getSequence() == SEQUENCE_TAG_DELETE_ALL){
                    // 删除所有tag成功
            }
    }

        
此代码块在浮窗中显示

queryAllTag

  • 请先init,否则调用无效
  • 如果环境没有问题,onTagMessage会回调结果
/** * 查询所有tag,获取逻辑,会获取所有标签 * * @param context 不能为空 * @param sequence 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性 */ public static void queryAllTag(Context context, int sequence, String... tags)
              /**
     * 查询所有tag,获取逻辑,会获取所有标签
     *
     * @param context  不能为空
     * @param sequence 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性
     */
    public static void queryAllTag(Context context, int sequence, String... tags)

        
此代码块在浮窗中显示

代码示例如下:

// 这里定义一个常量,代表查询所有tag操作 private static final int SEQUENCE_TAG_QUERY_ALL = 6; // 查询所有tag MTPushPrivatesApi.queryAllTag(context,SEQUENCE_TAG_QUERY_ALL) // 继承MTCommonReceiver后,复写onTagMessage方法,获取tag操作回调 @Override public void onTagMessage(Context context, TagMessage tagMessage){ if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){ // tag 操作失败,详细错误信息可查看MTPushPrivatesApi.Code return; } if(tagMessage.getSequence() == SEQUENCE_TAG_DELETE_ALL){ // 查询所有tag成功,此时可查看操作成功的tag数组 String[] tags = tagMessage.getTags(); } }
              // 这里定义一个常量,代表查询所有tag操作
    private static final int SEQUENCE_TAG_QUERY_ALL = 6;
    // 查询所有tag
    MTPushPrivatesApi.queryAllTag(context,SEQUENCE_TAG_QUERY_ALL)
    
    // 继承MTCommonReceiver后,复写onTagMessage方法,获取tag操作回调
    @Override
    public void onTagMessage(Context context, TagMessage tagMessage){
            if(tagMessage.getCode != MTPushPrivatesApi.Code.Success){
                    // tag 操作失败,详细错误信息可查看MTPushPrivatesApi.Code
                    return;
            }
            if(tagMessage.getSequence() == SEQUENCE_TAG_DELETE_ALL){
                    // 查询所有tag成功,此时可查看操作成功的tag数组
                    String[] tags = tagMessage.getTags();
            }
    }

        
此代码块在浮窗中显示

setAlias

  • 请先init,否则调用无效
  • 如果环境没有问题,onAliasMessage会回调结果
/** * 设置alias * * 同一个应用程序内,对不同的用户,建议取不同的别名。这样,尽可能根据别名来唯一确定用户 * * 不限定一个别名只能指定一个用户 * * @param context 不能为空 * @param sequence 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性 * @param alias 有效的别名组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|。限制:alias命名长度限制为 40 字节(判断长度需采用 UTF-8 编码) * */ public static void setAlias(Context context, int sequence, String alias)
              /**
     * 设置alias
     * 
     * 同一个应用程序内,对不同的用户,建议取不同的别名。这样,尽可能根据别名来唯一确定用户
     * 
     * 不限定一个别名只能指定一个用户
     *
     * @param context  不能为空
     * @param sequence 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性
     * @param alias    有效的别名组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|。限制:alias命名长度限制为 40 字节(判断长度需采用 UTF-8 编码)
     *                             
     */
    public static void setAlias(Context context, int sequence, String alias) 

        
此代码块在浮窗中显示

示例代码如下

// 这里定义一个常量,代表设置alias操作 private static final int SEQUENCE_ALIAS_SET = 7; // 设置alias:"young" MTPushPrivatesApi.setAlias(context,SEQUENCE_ALIAS_SET,"young") // 继承MTCommonReceiver后,复写onAliasMessage方法,获取alias操作回调 @Override public void onAliasMessage(Context context, AliasMessage aliasMessage){ if(aliasMessage.getCode != MTPushPrivatesApi.Code.Success){ // alias操作失败,详细错误信息可查看MTPushPrivatesApi.Code return; } if(aliasMessage.getSequence() == SEQUENCE_ALIAS_SET){ // 设置alias成功,此时可查看操作成功的alias String alias = aliasMessage.getAlias(); } }
              // 这里定义一个常量,代表设置alias操作
    private static final int SEQUENCE_ALIAS_SET = 7;
    // 设置alias:"young"
    MTPushPrivatesApi.setAlias(context,SEQUENCE_ALIAS_SET,"young")
    
    // 继承MTCommonReceiver后,复写onAliasMessage方法,获取alias操作回调
    @Override
    public void onAliasMessage(Context context, AliasMessage aliasMessage){
            if(aliasMessage.getCode != MTPushPrivatesApi.Code.Success){
                    // alias操作失败,详细错误信息可查看MTPushPrivatesApi.Code
                    return;
            }
            if(aliasMessage.getSequence() == SEQUENCE_ALIAS_SET){
                    // 设置alias成功,此时可查看操作成功的alias
                    String alias = 	aliasMessage.getAlias();
            }
    }	

        
此代码块在浮窗中显示

getAlias

  • 请先init,否则调用无效
  • 如果环境没有问题,onAliasMessage会回调结果
/** * 获取alias * * 同一个应用程序内,对不同的用户,建议取不同的别名。这样,尽可能根据别名来唯一确定用户 * * 不限定一个别名只能指定一个用户 * * @param context 不能为空 * @param sequence 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性 */ public static void getAlias(Context context, int sequence)
              /**
     * 获取alias
     * 
     * 同一个应用程序内,对不同的用户,建议取不同的别名。这样,尽可能根据别名来唯一确定用户
     * 
     * 不限定一个别名只能指定一个用户
     *
     * @param context  不能为空
     * @param sequence 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性
     */
    public static void getAlias(Context context, int sequence)

        
此代码块在浮窗中显示

示例代码如下:

// 这里定义一个常量,代表获取alias操作 private static final int SEQUENCE_ALIAS_GET = 8; // 获取alias MTPushPrivatesApi.getAlias(context,SEQUENCE_ALIAS_GET) // 继承MTCommonReceiver后,复写onAliasMessage方法,获取alias操作回调 @Override public void onAliasMessage(Context context, AliasMessage aliasMessage){ if(aliasMessage.getCode != MTPushPrivatesApi.Code.Success){ // alias 操作失败,详细错误信息可查看MTPushPrivatesApi.Code return; } if(aliasMessage.getSequence() == SEQUENCE_ALIAS_GET){ // 获取alias成功,此时可查看操作成功的alias String alias = aliasMessage.getAlias(); } }
              // 这里定义一个常量,代表获取alias操作
    private static final int SEQUENCE_ALIAS_GET = 8;
    // 获取alias
    MTPushPrivatesApi.getAlias(context,SEQUENCE_ALIAS_GET)
    
    // 继承MTCommonReceiver后,复写onAliasMessage方法,获取alias操作回调
    @Override
    public void onAliasMessage(Context context, AliasMessage aliasMessage){
            if(aliasMessage.getCode != MTPushPrivatesApi.Code.Success){
                    // alias 操作失败,详细错误信息可查看MTPushPrivatesApi.Code
                    return;
            }
            if(aliasMessage.getSequence() == SEQUENCE_ALIAS_GET){
                    // 获取alias成功,此时可查看操作成功的alias
                    String alias = 	aliasMessage.getAlias();
            }
    }	

        
此代码块在浮窗中显示

clearAlias

  • 请先init,否则调用无效
  • 如果环境没有问题,onAliasMessage会回调结果
/** * 清除alias * * 同一个应用程序内,对不同的用户,建议取不同的别名。这样,尽可能根据别名来唯一确定用户 * * 不限定一个别名只能指定一个用户 * * @param context 不能为空 * @param sequence 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性 */ public static void clearAlias(Context context, int sequence)
              /**
     * 清除alias
     *
     * 同一个应用程序内,对不同的用户,建议取不同的别名。这样,尽可能根据别名来唯一确定用户
     * 
     * 不限定一个别名只能指定一个用户
     *
     * @param context  不能为空
     * @param sequence 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性
     */
    public static void clearAlias(Context context, int sequence)

        
此代码块在浮窗中显示

示例代码如下:

// 这里定义一个常量,代表清除alias操作 private static final int SEQUENCE_ALIAS_CLEAR = 7; // 清除alias MTPushPrivatesApi.clearAlias(context,SEQUENCE_ALIAS_CLEAR) // 继承MTCommonReceiver后,复写onAliasMessage方法,获取alias操作回调 @Override public void onAliasMessage(Context context, AliasMessage aliasMessage){ if(aliasMessage.getCode != MTPushPrivatesApi.Code.Success){ // alias操作失败,详细错误信息可查看MTPushPrivatesApi.Code return; } if(aliasMessage.getSequence() == SEQUENCE_ALIAS_CLEAR){ // 清除alias成功 } }
              // 这里定义一个常量,代表清除alias操作
    private static final int SEQUENCE_ALIAS_CLEAR = 7;
    // 清除alias
    MTPushPrivatesApi.clearAlias(context,SEQUENCE_ALIAS_CLEAR)
    
    // 继承MTCommonReceiver后,复写onAliasMessage方法,获取alias操作回调
    @Override
    public void onAliasMessage(Context context, AliasMessage aliasMessage){
            if(aliasMessage.getCode != MTPushPrivatesApi.Code.Success){
                    // alias操作失败,详细错误信息可查看MTPushPrivatesApi.Code
                    return;
            }
            if(aliasMessage.getSequence() == SEQUENCE_ALIAS_CLEAR){
                    // 清除alias成功
            }
    }	

        
此代码块在浮窗中显示

setNotificationShowTime

  • 请先init,否则调用无效
  • 目前支持的通道:Engagelab通道/应用在前台时的google通道(由Engagelab展示)
/** * 设置通知展示时间,默认任何时间都展示 * * @param context 不为空 * @param beginHour 允许通知展示的开始时间( 24 小时制,范围为 0 到 23 ) * @param endHour 允许通知展示的结束时间( 24 小时制,范围为 0 到 23 ),beginHour不能大于等于endHour * @param weekDays 允许通知展示的星期数组( 7 日制,范围为 1 到 7),空数组代表任何时候都不展示通知 */ public static void setNotificationShowTime(Context context, int beginHour, int endHour, int... weekDays)
              /**
     * 设置通知展示时间,默认任何时间都展示
     *
     * @param context   不为空
     * @param beginHour 允许通知展示的开始时间( 24 小时制,范围为 0 到 23 )
     * @param endHour   允许通知展示的结束时间( 24 小时制,范围为 0 到 23 ),beginHour不能大于等于endHour
     * @param weekDays  允许通知展示的星期数组( 7 日制,范围为 1 到 7),空数组代表任何时候都不展示通知
     */
    public static void setNotificationShowTime(Context context, int beginHour, int endHour, int... weekDays)

        
此代码块在浮窗中显示

示例代码如下

// 设置通知展示时间为每周1/3/5/7的早上9点到晚上9点 MTPushPrivatesApi.setNotificationShowTime(context, 9, 21, 1,3,5,7);
              // 设置通知展示时间为每周1/3/5/7的早上9点到晚上9点
    MTPushPrivatesApi.setNotificationShowTime(context, 9, 21, 1,3,5,7);

        
此代码块在浮窗中显示

resetNotificationShowTime

  • 请先init,否则调用无效
  • 目前支持的通道:Engagelab通道/应用在前台时的google通道(由Engagelab展示)
/** * 重置通知展示时间,默认任何时间都展示 * * @param context 不为空 */ public static void resetNotificationShowTime(Context context)
              /**
     * 重置通知展示时间,默认任何时间都展示
     *
     * @param context 不为空
     */
    public static void resetNotificationShowTime(Context context)

        
此代码块在浮窗中显示

示例代码如下

// 重置通知展示时间,默认任何时间都展示 MTPushPrivatesApi.resetNotificationShowTime(context);
              // 重置通知展示时间,默认任何时间都展示
    MTPushPrivatesApi.resetNotificationShowTime(context);

        
此代码块在浮窗中显示

setNotificationSilenceTime

  • 请先init,否则调用无效
  • 目前支持的通道:Engagelab通道/应用在前台时的google通道(由Engagelab展示)
/** * 设置通知静默时间,默认任何时间都不静默 * * @param context 不为空 * @param beginHour 允许通知静默的开始时间,单位小时( 24 小时制,范围为 0 到 23 ) * @param beginMinute 允许通知静默的开始时间,单位分钟( 60 分钟制,范围为 0 到 59 ) * @param endHour 允许通知静默的结束时间,单位小时( 24 小时制,范围为 0 到 23 ) * @param endMinute 允许通知静默的结束时间,单位分钟( 60 分钟制,范围为 0 到 59 ) */ public static void setNotificationSilenceTime(Context context, int beginHour, int beginMinute, int endHour, int endMinute)
              /**
     * 设置通知静默时间,默认任何时间都不静默
     *
     * @param context     不为空
     * @param beginHour   允许通知静默的开始时间,单位小时( 24 小时制,范围为 0 到 23 )
     * @param beginMinute 允许通知静默的开始时间,单位分钟( 60 分钟制,范围为 0 到 59 )
     * @param endHour     允许通知静默的结束时间,单位小时( 24 小时制,范围为 0 到 23 )
     * @param endMinute   允许通知静默的结束时间,单位分钟( 60 分钟制,范围为 0 到 59 )
     */
    public static void setNotificationSilenceTime(Context context, int beginHour, int beginMinute, int endHour, int endMinute)

        
此代码块在浮窗中显示

示例代码如下

// 设置通知静默时间为每天晚上9点半到第二天早上9点半 MTPushPrivatesApi.setNotificationSilenceTime(context, 21, 30, 9, 30);
              // 设置通知静默时间为每天晚上9点半到第二天早上9点半
    MTPushPrivatesApi.setNotificationSilenceTime(context, 21, 30, 9, 30);

        
此代码块在浮窗中显示

resetNotificationSilenceTime

  • 请先init,否则调用无效
  • 目前支持的通道:Engagelab通道/应用在前台时的google通道(由Engagelab展示)
/** * 重置通知静默时间,默认任何时间都不静默 * * @param context 不为空 */ public static void resetNotificationSilenceTime(Context context)
              /**
     * 重置通知静默时间,默认任何时间都不静默
     *
     * @param context 不为空
     */
    public static void resetNotificationSilenceTime(Context context)

        
此代码块在浮窗中显示

示例代码如下

// 重置通知静默时间,默认任何时间都不静默 MTPushPrivatesApi.resetNotificationSilenceTime(context);
              // 重置通知静默时间,默认任何时间都不静默
    MTPushPrivatesApi.resetNotificationSilenceTime(context);

        
此代码块在浮窗中显示

setNotificationLayout

  • 请先init,否则调用无效
  • 目前支持的通道:Engagelab通道
/** * 设置自定义通知布局,默认使用系统通知布局 * * @param context 不为空 * @param builderId 构建id * @param notificationLayout 自定义通知布局的对象,不为空 */ public static void setNotificationLayout(Context context, int builderId, NotificationLayout notificationLayout)
              /**
     * 设置自定义通知布局,默认使用系统通知布局
     *
     * @param context            不为空
     * @param builderId          构建id
     * @param notificationLayout 自定义通知布局的对象,不为空
     */
    public static void setNotificationLayout(Context context, int builderId, NotificationLayout notificationLayout)

        
此代码块在浮窗中显示

示例代码如下

// 这里定义一个常量,代表构建id private static final int BUILDER_ID = 11; // 构建出一个notificationLayout NotificationLayout notificationLayout = new NotificationLayout() .setLayoutId(R.layout.custom_notification_layout) // 布局layout_id .setIconViewId(R.id.iv_notification_icon) // 通知图标view_id .setIconResourceId(R.drawable.mtpush_notification_icon) // 通知图标source_id .setTitleViewId(R.id.tv_notification_title) // 通知标题view_id .setContentViewId(R.id.tv_notification_content) // 通知内容view_id .setTimeViewId(R.id.tv_notification_time); // 通知时间view_id // 设置构建id为BUILDER_ID的自定义布局,下发通知时指定builderId为BUILDER_ID,即可改变通知布局 MTPushPrivatesApi.setNotificationLayout(this.getApplicationContext(), BUILDER_ID, notificationLayout);
                  // 这里定义一个常量,代表构建id
        private static final int BUILDER_ID = 11;
        
        // 构建出一个notificationLayout
    NotificationLayout notificationLayout = new NotificationLayout()
            .setLayoutId(R.layout.custom_notification_layout)        // 布局layout_id
            .setIconViewId(R.id.iv_notification_icon)                // 通知图标view_id
            .setIconResourceId(R.drawable.mtpush_notification_icon)   // 通知图标source_id
            .setTitleViewId(R.id.tv_notification_title)              // 通知标题view_id
            .setContentViewId(R.id.tv_notification_content)          // 通知内容view_id
            .setTimeViewId(R.id.tv_notification_time);               // 通知时间view_id
 
    // 设置构建id为BUILDER_ID的自定义布局,下发通知时指定builderId为BUILDER_ID,即可改变通知布局        
    MTPushPrivatesApi.setNotificationLayout(this.getApplicationContext(), BUILDER_ID, notificationLayout);

        
此代码块在浮窗中显示

resetNotificationLayout

  • 请先init,否则调用无效
  • 目前支持的通道:Engagelab通道
/** * 重置自定义通知布局,默认使用系统通知布局 * * @param context 不为空 * @param builderId 自定义通知布局的id */ public static void resetNotificationLayout(Context context, int builderId)
              /**
     * 重置自定义通知布局,默认使用系统通知布局
     *
     * @param context   不为空
     * @param builderId 自定义通知布局的id
     */
    public static void resetNotificationLayout(Context context, int builderId)

        
此代码块在浮窗中显示

示例代码如下

// 这里定义一个常量,代表构建id private static final int BUILDER_ID = 11; // 重置构建id为BUILDER_ID的自定义布局,下发通知时指定builderId为BUILDER_ID,将使用系统默认布局 MTPushPrivatesApi.resetNotificationLayout(context,BUILDER_ID);
                  // 这里定义一个常量,代表构建id
        private static final int BUILDER_ID = 11;
        
    // 重置构建id为BUILDER_ID的自定义布局,下发通知时指定builderId为BUILDER_ID,将使用系统默认布局
    MTPushPrivatesApi.resetNotificationLayout(context,BUILDER_ID);

        
此代码块在浮窗中显示

setNotificationCount

  • 请先init,否则调用无效
  • 目前支持的通道:Engagelab通道/应用在前台时的google通道(由Engagelab展示)
/** * 设置通知栏的通知数量,默认数量为5 * * @param context 不为空 * @param count 限制通知栏的通知数量,超出限制数量则移除最老通知,不能小于等于0 */ public static void setNotificationCount(Context context, int count)
              /**
     * 设置通知栏的通知数量,默认数量为5
     *
     * @param context 不为空
     * @param count   限制通知栏的通知数量,超出限制数量则移除最老通知,不能小于等于0
     */
    public static void setNotificationCount(Context context, int count)

        
此代码块在浮窗中显示

示例代码如下

// 设置通知栏通知数量为50 MTPushPrivatesApi.setNotificationCount(context,50);
              // 设置通知栏通知数量为50
    MTPushPrivatesApi.setNotificationCount(context,50);

        
此代码块在浮窗中显示

resetNotificationCount

  • 请先init,否则调用无效
  • 目前支持的通道:Engagelab通道/应用在前台时的google通道(由Engagelab展示)
/** * 重置通知栏的通知数量,默认数量为5 * * @param context 不为空 */ public static void resetNotificationCount(Context context)
              /**
     * 重置通知栏的通知数量,默认数量为5
     *
     * @param context 不为空
     */
    public static void resetNotificationCount(Context context)

        
此代码块在浮窗中显示

示例代码如下

// 重置通知栏的通知数量,默认数量为5 MTPushPrivatesApi.resetNotificationCount(context);
              // 重置通知栏的通知数量,默认数量为5
    MTPushPrivatesApi.resetNotificationCount(context);

        
此代码块在浮窗中显示

setNotificationBadge

  • 请先init,否则调用无效
/** * 设置应用角标数量,默认0(仅华为/荣耀生效) * * @param context 不为空 * @param badge 应用角标数量 */ public static void setNotificationBadge(Context context, int badge)
              /**
     * 设置应用角标数量,默认0(仅华为/荣耀生效)
     *
     * @param context 不为空
     * @param badge   应用角标数量
     */
    public static void setNotificationBadge(Context context, int badge)

        
此代码块在浮窗中显示

示例代码如下

// 设置应用角标数量为1 MTPushPrivatesApi.setNotificationBadge(context,1);
              // 设置应用角标数量为1
    MTPushPrivatesApi.setNotificationBadge(context,1);

        
此代码块在浮窗中显示

resetNotificationBadge

  • 请先init,否则调用无效
/** * 重置应用角标数量,默认0(仅华为/荣耀生效) * * @param context 不为空 */ public static void resetNotificationBadge(Context context) {
              /**
     * 重置应用角标数量,默认0(仅华为/荣耀生效)
     *
     * @param context 不为空
     */
    public static void resetNotificationBadge(Context context) {

        
此代码块在浮窗中显示

示例代码如下

// 重置应用角标数量,默认0 MTPushPrivatesApi.resetNotificationBadge(context);
              // 重置应用角标数量,默认0
    MTPushPrivatesApi.resetNotificationBadge(context);

        
此代码块在浮窗中显示

showNotification

  • 请先init,否则调用无效
/** * 展示通知 * * @param context 不为空 * @param notificationMessage 构建的通知对象,不为空 */ public static void showNotification(Context context, NotificationMessage notificationMessage)
              /**
     * 展示通知
     *
     * @param context             不为空
     * @param notificationMessage 构建的通知对象,不为空
     */
    public static void showNotification(Context context, NotificationMessage notificationMessage)

        
此代码块在浮窗中显示

示例代码如下

// 构建一个基础的通知,其中messageId和content是必须,否则通知无法展示 NotificationMessage notificationMessage = new NotificationMessage() .setMessageId("12345") .setNotificationId(12345) .setTitle("custom_notification_title") .setContent("custom_notification_content"); // 展示通知 MTPushPrivatesApi.showNotification(context,notificationMessage);
              // 构建一个基础的通知,其中messageId和content是必须,否则通知无法展示
    NotificationMessage notificationMessage = new NotificationMessage()
            .setMessageId("12345")
            .setNotificationId(12345)
            .setTitle("custom_notification_title")
            .setContent("custom_notification_content");    
    // 展示通知
    MTPushPrivatesApi.showNotification(context,notificationMessage);

        
此代码块在浮窗中显示

clearNotification

  • 请先init,否则调用无效
/** * 清除指定notifyId的通知 * * @param context 不为空 * @param notifyId 通知id */ public static void clearNotification(Context context, int notifyId)
              /**
     * 清除指定notifyId的通知
     *
     * @param context  不为空
     * @param notifyId 通知id
     */
    public static void clearNotification(Context context, int notifyId)

        
此代码块在浮窗中显示

示例代码如下

// 清除指定notifyId的通知 MTPushPrivatesApi.clearNotification(context,12345);
              // 清除指定notifyId的通知
    MTPushPrivatesApi.clearNotification(context,12345);

        
此代码块在浮窗中显示

reportNotificationArrived

  • 请先init,否则调用无效
  • 不集成Engagelab的厂商包,但需要Engagelab统计通知送达率,请调用此接口
/** * 上报厂商通道通知到达 * * 走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 reportNotificationArrived(Context context, String messageId, byte platform, String platformMessageId)
              /**
     * 上报厂商通道通知到达
     * 
     * 走http/https上报
     *
     * @param context           不为空
     * @param messageId         Engagelab消息id,不为空
     * @param platform          厂商,取值范围(1:mi2:huawei3:meizu4:oppo5:vivo7:honor8:google)
     * @param platformMessageId 厂商消息id,可为空
     */
    public static void reportNotificationArrived(Context context, String messageId, byte platform, String platformMessageId)

        
此代码块在浮窗中显示

示例代码如下

// 上报厂商通知到达,messageId为“12345”,厂商为小米,厂商messageId为“MI-6476RHT25” MTPushPrivatesApi.reportNotificationArrived(context,“12345”,MTPushPrivatesApi.PLATFORM_XIAOMI,"MI-6476RHT25");
              // 上报厂商通知到达,messageId为“12345”,厂商为小米,厂商messageId为“MI-6476RHT25”
    MTPushPrivatesApi.reportNotificationArrived(context,“12345”,MTPushPrivatesApi.PLATFORM_XIAOMI,"MI-6476RHT25");

        
此代码块在浮窗中显示

reportNotificationClicked

  • 请先init,否则调用无效
  • 不集成Engagelab的厂商包,但需要Engagelab统计通知点击率,请调用此接口
/** * 上报厂商通道通知点击 * * 走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:mi2:huawei3:meizu4:oppo5:vivo7:honor8:google)
     * @param platformMessageId 厂商消息id,可为空
     */
    public static void reportNotificationClicked(Context context, String messageId, byte platform, String platformMessageId)

        
此代码块在浮窗中显示

示例代码如下

// 上报厂商通知点击,messageId为“12345”,厂商为小米,厂商messageId为“MI-6476RHT25” MTPushPrivatesApi.reportNotificationClicked(context,“12345”,MTPushPrivatesApi.PLATFORM_XIAOMI,"MI-6476RHT25");
              // 上报厂商通知点击,messageId为“12345”,厂商为小米,厂商messageId为“MI-6476RHT25”
    MTPushPrivatesApi.reportNotificationClicked(context,“12345”,MTPushPrivatesApi.PLATFORM_XIAOMI,"MI-6476RHT25");

        
此代码块在浮窗中显示

reportNotificationDeleted

  • 请先init,否则调用无效
  • 不集成Engagelab的厂商包,但需要Engagelab统计通知删除率,请调用此接口
/** * 上报厂商通道通知删除 * * 走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:mi2:huawei3:meizu4:oppo5:vivo7:honor8:google)
     * @param platformMessageId 厂商消息id,可为空
     */
    public static void reportNotificationDeleted(Context context, String messageId, byte platform, String platformMessageId)

        
此代码块在浮窗中显示

示例代码如下

// 上报厂商通知删除,messageId为“12345”,厂商为mi,厂商messageId为“MI-6476RHT25” MTPushPrivatesApi.reportNotificationDeleted(context,“12345”,MTPushPrivatesApi.PLATFORM_XIAOMI,"MI-6476RHT25");
              // 上报厂商通知删除,messageId为“12345”,厂商为mi,厂商messageId为“MI-6476RHT25”
    MTPushPrivatesApi.reportNotificationDeleted(context,“12345”,MTPushPrivatesApi.PLATFORM_XIAOMI,"MI-6476RHT25");

        
此代码块在浮窗中显示

reportNotificationOpened

  • 请先init,否则调用无效
  • 不集成Engagelab的厂商包,但需要Engagelab统计通知打开率,请调用此接口
  • 有些厂商(例如:huawei/oppo/vivo)没有通知到达和通知点击回调,配置通知点击跳转的activity后,可在跳转的activity内获取参数上报,建议所有厂商通知点击跳转的activity都配置
  • MTPush4.0.0以上版本不需要
/** * 上报厂商通道通知打开 * * 走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:mi2:huawei3:meizu4:oppo5:vivo7:honor8:google)
     * @param platformMessageId 厂商消息id,可为空
     */
    public static void reportNotificationOpened(Context context, String messageId, byte platform, String platformMessageId)

        
此代码块在浮窗中显示

示例代码如下

Bundle bundle = intent.getExtras(); String platformMessage = ""; // huawei if (intent.getData() != null) { platformMessage = intent.getData().toString(); } // 其他厂商 if (TextUtils.isEmpty(platformMessage) && intent.getExtras() != null) { if (bundle.containsKey("JMessageExtra")) { platformMessage = bundle.getString("JMessageExtra"); }else { platformMessage = bundle.getString("MTMessageExtra"); } } if (TextUtils.isEmpty(platformMessage)) { return; } JSONObject messageJson = new JSONObject(platformMessage); tvMessage.setText(toLogString(messageJson)); // 解析 String messageId = messageJson.optString("msg_id"); byte platform = (byte) messageJson.optInt("rom_type"); String title = messageJson.optString("n_title"); String content = messageJson.optString("n_content"); // 上报通知点击activity打开,建议所有厂商跳转都加上,仅MTPush4.0.0以下版本需要 MTPushPrivatesApi.reportNotificationOpened(this, messageId, platform, "");
              Bundle bundle = intent.getExtras();
    String platformMessage = "";
    // huawei
    if (intent.getData() != null) {
        platformMessage = intent.getData().toString();
    }
    // 其他厂商
    if (TextUtils.isEmpty(platformMessage) && intent.getExtras() != null) {
        if (bundle.containsKey("JMessageExtra")) {
             platformMessage = bundle.getString("JMessageExtra");
        }else {
             platformMessage = bundle.getString("MTMessageExtra");
        }
    }
    if (TextUtils.isEmpty(platformMessage)) {
        return;
    }
    JSONObject messageJson = new JSONObject(platformMessage);
    tvMessage.setText(toLogString(messageJson));
    // 解析
    String messageId = messageJson.optString("msg_id");
    byte platform = (byte) messageJson.optInt("rom_type");
    String title = messageJson.optString("n_title");
    String content = messageJson.optString("n_content");
    // 上报通知点击activity打开,建议所有厂商跳转都加上,仅MTPush4.0.0以下版本需要
    MTPushPrivatesApi.reportNotificationOpened(this, messageId, platform, ""); 

        
此代码块在浮窗中显示

uploadPlatformToken

  • 请先init,否则调用无效
  • 由于走tcp上传,需要长连接成功即onConnectStatus回调结果为ture后调用此接口
  • 不集成Engagelab的厂商包,但需要Engagelab推送厂商消息
/** * 上传厂商token * * 走tcp上传 * * @param context 不为空 * @param platform 厂商,取值范围(1:mi、2:huawei、3:meizu、4:oppo、5:vivo、7:honor、8:google) * @param token 厂商返回的token,不为空 * @param region 海外版小米和oppo需要设置region,国际版填:"GLOBAL",非海外版的填:"NULL" */ public static void uploadPlatformToken(Context context, byte platform, String token, String region)
              /**
     * 上传厂商token
     * 
     * 走tcp上传
     *
     * @param context  不为空
     * @param platform 厂商,取值范围(1:mi2:huawei3:meizu4:oppo5:vivo7:honor8:google)
     * @param token    厂商返回的token,不为空
     * @param region    海外版小米和oppo需要设置region,国际版填:"GLOBAL",非海外版的填:"NULL"
     */
    public static void uploadPlatformToken(Context context, byte platform, String token, String region)

        
此代码块在浮窗中显示

示例代码如下

// 上报厂商token,厂商为mi,厂商token为“MI-6476s-afs-afs-afaR-HT25” MTPushPrivatesApi.uploadPlatformToken(context,MTPushPrivatesApi.PLATFORM_XIAOMI,"MI-6476s-afs-afs-afaR-HT25","NULL");
              // 上报厂商token,厂商为mi,厂商token为“MI-6476s-afs-afs-afaR-HT25”
    MTPushPrivatesApi.uploadPlatformToken(context,MTPushPrivatesApi.PLATFORM_XIAOMI,"MI-6476s-afs-afs-afaR-HT25","NULL");

        
此代码块在浮窗中显示

onFragmentResume

  • 请先init,否则调用无效
/** * @param context 不为空 * @param fragmentName Fragment页面完整类名(this.getClass().getCanonicalName()) */ public static void onFragmentResume(Context context, String fragmentName)
              /**
     * @param context           不为空
     * @param fragmentName      Fragment页面完整类名(this.getClass().getCanonicalName())
     */
    public static void onFragmentResume(Context context, String fragmentName)

        
此代码块在浮窗中显示

onFragmentPause

  • 请先init,否则调用无效
/** * @param context 不为空 * @param fragmentName Fragment页面完整类名(this.getClass().getCanonicalName() */ public static void onFragmentPause(Context context, String fragmentName)
              /**
     * @param context           不为空
     * @param fragmentName      Fragment页面完整类名(this.getClass().getCanonicalName()
     */
    public static void onFragmentPause(Context context, String fragmentName)

        
此代码块在浮窗中显示

使用说明: 因为 Android 添加 Fragment 方式共有四种,而每种不同的添加方式,需要对Fragment的处理方式也有不一样。下面就针对 Fragment 的四种方式,指定在指定 Fragment 展示 in app 控制方式,分别进行说明。

fragment使用方式 是否可以监听到Fragment生命周期 极光动态指定展示页面接口调用方式
方式一:add/show/hide 无法监听生命周期 Fragment 内的 onFragmentResume 与 onHiddenChaned 回调调用
方式二:ViewPager 无法监听生命周期 Fragment 内的 setUserVisibleHint 回调调用
方式三:replace 可以监听生命周期 Fragment 内的生命周期回调 onResume与onPause 调用
方式四:attach/detach 可以监听生命周期 Fragment 内的生命周期回调 onResume 与 onPause 调用
  • add/show/hide方式

    1)在 Fragment的onCreateView 回调函数中调用动态控制接口,并要求传入参数。 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { String classname = this.getClass().getCanonicalName(); JPushInterface.onFragmentResumed(MyApplication.gContext, classname); return inflater.inflate(R.layout.black_fragment, container, false); } 2)在 Fragment 的 onHiddenChaned 回调接口中,调用动态控制接口,并按要求传入参数。 @Override public void onHiddenChanged(boolean hidden) { String classname = this.getClass().getCanonicalName(); if(!hidden){//context传application context JPushInterface.onFragmentResumed(MyApplication.gContext, classname); }else{//hide JPushInterface.onFragmentPaused(MyApplication.gContext, classname); } super.onHiddenChanged(hidden); }
              1)在 Fragment的onCreateView 回调函数中调用动态控制接口,并要求传入参数。
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        String classname = this.getClass().getCanonicalName();
        JPushInterface.onFragmentResumed(MyApplication.gContext, classname);
        return inflater.inflate(R.layout.black_fragment, container, false);
    }  
    
    2)在 Fragment 的 onHiddenChaned 回调接口中,调用动态控制接口,并按要求传入参数。
    
    @Override
    public void onHiddenChanged(boolean hidden) {
        String classname = this.getClass().getCanonicalName();
        if(!hidden){//context传application context
            JPushInterface.onFragmentResumed(MyApplication.gContext, classname);
        }else{//hide
            JPushInterface.onFragmentPaused(MyApplication.gContext, classname);  
        } 
        
        super.onHiddenChanged(hidden);
    }  
    
            
    此代码块在浮窗中显示
  • ViewPager方式

    1)在 Fragment 的 setUserVisibleHint 回调接口中,调用动态控制接口,并按要求传入参数。 @Override public void setUserVisibleHint(boolean isVisibleToUser) { String classname = this.getClass().getCanonicalName(); if(isVisibleToUser){ //传application context JPushInterface.onFragmentResumed(MyApplication.gContext, classname); }else{//hide JPushInterface.onFragmentPause(MyApplication.gContext, classname); } super.setUserVisibleHint(isVisibleToUser); }
              1)在 Fragment 的 setUserVisibleHint 回调接口中,调用动态控制接口,并按要求传入参数。
    
    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        String classname = this.getClass().getCanonicalName();
        if(isVisibleToUser){
            //传application context
            JPushInterface.onFragmentResumed(MyApplication.gContext, classname);
        }else{//hide
            JPushInterface.onFragmentPause(MyApplication.gContext, classname);  
        } 
        
        super.setUserVisibleHint(isVisibleToUser);
    }    
    
            
    此代码块在浮窗中显示
  • replace 方式或 attach/detach 方式

    在添加Fragment内的生命周期回调接口中,调用动态页面配置接口。 @Override public void onResume() {//传application context String classname = this.getClass().getCanonicalName(); JPushInterface.onFragmentResumed(MyApplication.gContext, classname); super.onResume(); } @Override public void onPause() { String classname = this.getClass().getCanonicalName(); JPushInterface.onFragmentPause(MyApplication.gContext, classname); super.onPause(); }
              在添加Fragment内的生命周期回调接口中,调用动态页面配置接口。
    
    @Override
    public void onResume() {//传application context
        String classname = this.getClass().getCanonicalName();
        JPushInterface.onFragmentResumed(MyApplication.gContext, classname);
        super.onResume();
    }
    
    @Override
    public void onPause() {
        String classname = this.getClass().getCanonicalName();
        JPushInterface.onFragmentPause(MyApplication.gContext, classname);  
        super.onPause();
    }
    
            
    此代码块在浮窗中显示

MTCommonReceiver

  • 主要用于方法回调
  • 此类中所有方法回调均在主进程

onNotificationStatus

  • 每次启动sdk后都会回调当前通知开关状态
  • 后续通知开关有变化时才会回调
/** * 应用通知开关状态回调 * * @param context 不为空 * @param enable 通知开关是否开,true为打开,false为关闭 */ @Override public void onNotificationStatus(Context context, boolean enable)
              /**
     * 应用通知开关状态回调
     *
     * @param context 不为空
     * @param enable  通知开关是否开,true为打开,false为关闭
     */
    @Override
    public void onNotificationStatus(Context context, boolean enable)

        
此代码块在浮窗中显示

onConnectStatus

/** * 长连接是否连接成功 * * 在初始化后会进行长连接,连接成功/失败均会回调此方法 * * @param context 不为空 * @param enable 长连接是否连接成功,true为成功;false为失败 */ public void onConnectStatus(Context context, boolean enable)
              /**
     * 长连接是否连接成功
     *
     * 在初始化后会进行长连接,连接成功/失败均会回调此方法
     *
     * @param context 不为空
     * @param enable  长连接是否连接成功,true为成功;false为失败   
     */		
        public void onConnectStatus(Context context, boolean enable)

        
此代码块在浮窗中显示

onNotificationArrived

  • Engagelab/小米/魅族通道会有此方法回调(google通道需要应用在前台才会有回调)
  • notificationMessage详情查看NotificationMessage
/** * 通知消息送达 * * 推送的通知消息送达会回调此方法 * * @param context 不为空 * @param notificationMessage 通知消息 */ public void onNotificationArrived(Context context, NotificationMessage notificationMessage)
              /**
     * 通知消息送达
     *
     * 推送的通知消息送达会回调此方法
     *
     * @param context 						不为空
     * @param notificationMessage 通知消息  
     */				
    public void onNotificationArrived(Context context, NotificationMessage notificationMessage)

        
此代码块在浮窗中显示

onNotificationUnShow

  • 后台下发前台不显示通知,且手机app在前台时回调该方法
/** * 通知消息在前台不显示 * * @param context 不为空 * @param notificationMessage 通知消息 */ @Override public void onNotificationUnShow(Context context, NotificationMessage notificationMessage)
              /**
     * 通知消息在前台不显示
     *
     * @param context             不为空
     * @param notificationMessage 通知消息
     */
    @Override
    public void onNotificationUnShow(Context context, NotificationMessage notificationMessage)

        
此代码块在浮窗中显示

onNotificationClicked

  • Engagelab/小米/魅族通道会有此方法回调(google通道需要应用在前台才会有回调)
  • notificationMessage详情查看NotificationMessage
/** * 通知消息点击 * * 推送的通知消息点击会回调此方法 * * @param context 不为空 * @param notificationMessage 通知消息 */ public void onNotificationClicked(Context context, NotificationMessage notificationMessage)
              /**
     * 通知消息点击
     *
         * 推送的通知消息点击会回调此方法
         *
     * @param context 						不为空
     * @param notificationMessage 通知消息  
     */				
    public void onNotificationClicked(Context context, NotificationMessage notificationMessage)

        
此代码块在浮窗中显示

onNotificationDeleted

  • 只有Engagelab通道的通知消息删除才会触发
  • notificationMessage详情查看NotificationMessage
  • 应用在死亡状态时无法回调
/** * 通知消息删除 * * 推送的通知消息删除会回调此方法 * * @param context 不为空 * @param notificationMessage 通知消息 */ public void onNotificationDeleted(Context context, NotificationMessage notificationMessage)
              /**
     * 通知消息删除
     * 
         * 推送的通知消息删除会回调此方法
         *
     * @param context 						不为空
     * @param notificationMessage 通知消息  
     */				
    public void onNotificationDeleted(Context context, NotificationMessage notificationMessage)

        
此代码块在浮窗中显示

onCustomMessage

  • 自定义消息不会展示在通知栏
  • 只有Engagelab通道的通知消息删除才会触发
  • customMessage详情查看CustomMessage
/** * 自定义消息送达 * * 自定义消息送达时会回调此方法 * * @param context 不为空 * @param customMessage 自定义消息 */ public void onCustomMessage(Context context, CustomMessage customMessage)
              /**
     * 自定义消息送达
     *
     * 自定义消息送达时会回调此方法
     *
     * @param context 			不为空
     * @param customMessage 自定义消息  
     */				
    public void onCustomMessage(Context context, CustomMessage customMessage)

        
此代码块在浮窗中显示

onTagMessage

/** * tag操作消息 * * @param context 不为空 * @param tagMessage 标签信息 */ public void onTagMessage(Context context, TagMessage tagMessage)
              /**
     * tag操作消息
     *
     * @param context    不为空
     * @param tagMessage 标签信息
     */		
    public void onTagMessage(Context context, TagMessage tagMessage)

        
此代码块在浮窗中显示

onAliasMessage

/** * alias操作消息 * * @param context ApplicationContext对象 * @param aliasMessage 别名消息 */ public void onAliasMessage(Context context, AliasMessage aliasMessage)
              /**
     * alias操作消息
     *
     * @param context      ApplicationContext对象
     * @param aliasMessage 别名消息
     */
    public void onAliasMessage(Context context, AliasMessage aliasMessage)

        
此代码块在浮窗中显示

onPlatformToken

  • 厂商token消息回调
/** * 厂商操作消息 * * @param context ApplicationContext对象 * @param platformMessage 厂商token消息 */ public void onPlatformToken(Context context, PlatformTokenMessage platformMessage)
              /**
     * 厂商操作消息
     *
     * @param context         ApplicationContext对象
     * @param platformMessage 厂商token消息
     */
    public void onPlatformToken(Context context, PlatformTokenMessage platformMessage)

        
此代码块在浮窗中显示

onInAppMessageShow

  • 应用内消息展示回调
/** * * * @param context ApplicationContext对象 * @param inAppMessage 应用内消息 */ public void onInAppMessageShow(Context context, InAppMessage inAppMessage)
              /**
     * 
     *
     * @param context         ApplicationContext对象
     * @param inAppMessage 应用内消息
     */
    public void onInAppMessageShow(Context context, InAppMessage inAppMessage)

        
此代码块在浮窗中显示

onInAppMessageClick

  • 应用内消息点击回调
/** * * * @param context ApplicationContext对象 * @param inAppMessage 应用内消息 */ public void onInAppMessageClick(Context context, InAppMessage inAppMessage)
              /**
     * 
     *
     * @param context         ApplicationContext对象
     * @param inAppMessage 应用内消息
     */
    public void onInAppMessageClick(Context context, InAppMessage inAppMessage)

        
此代码块在浮窗中显示

NotificationChannel 配置

支持的版本

开始支持的版本:MTPush SDK v3.3.0

功能说明

Android8.0 以后通知都走 NotificationChannel 了。开发者可以自行定义 NotificationChannel,然后在 API 推送的时候可以指定 channelId 推送; 在 Android8.0 及以上的机型,通知会先查找对应 channelId 的 channel,通知的重要等级、声音、震动、呼吸灯由 channel 决定; 如果没有找到 channelId,或者处于静默时间内,则走默认的engagelab channel。

自定义 NotificationChannel 示例

private void initChannel(){if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); if (nm != null){NotificationChannelGroup notificationChannelGroup = new NotificationChannelGroup("MyGroupId", "自定义通知组"); nm.createNotificationChannelGroup(notificationChannelGroup); NotificationChannel notificationChannel = new NotificationChannel("MyChannelId", "自定义通知", NotificationManager.IMPORTANCE_HIGH); notificationChannel.setGroup("MyGroupId"); notificationChannel.enableLights(true); notificationChannel.enableVibration(true); notificationChannel.setSound("android.resource:// 包名 /raw/ 铃声文件", null); // 设置自定义铃声 nm.createNotificationChannel(notificationChannel); } } }
              private void initChannel(){if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            if (nm != null){NotificationChannelGroup notificationChannelGroup = new NotificationChannelGroup("MyGroupId", "自定义通知组");
                nm.createNotificationChannelGroup(notificationChannelGroup);

                NotificationChannel notificationChannel = new NotificationChannel("MyChannelId", "自定义通知", NotificationManager.IMPORTANCE_HIGH);
                notificationChannel.setGroup("MyGroupId");
                notificationChannel.enableLights(true);
                notificationChannel.enableVibration(true);
                notificationChannel.setSound("android.resource:// 包名 /raw/ 铃声文件", null);    // 设置自定义铃声

                nm.createNotificationChannel(notificationChannel);
            }
        }
    }

        
此代码块在浮窗中显示

NotificationMessage

  • 通知消息
属性 类型 说明
messageId String 必须,EngagelabmessageId,用于消息跟踪和统计,不能为空,为空不展示通知
overrideMessageId String EngagelaboverrideMessageId,用于消息跟踪和统计
platform byte 厂商类型,默认Engagelab,MTPushPrivatesApi.PLATFORM_DEFAULT:0
小米,MTPushPrivatesApi.PLATFORM_XIAOMI:1
华为,MTPushPrivatesApi.PLATFORM_HUAWEI:2
魅族,MTPushPrivatesApi.PLATFORM_MEIZU:3
oppo,MTPushPrivatesApi.PLATFORM_OPPO:4
vivo,MTPushPrivatesApi.PLATFORM_VIVO:5
honor,MTPushPrivatesApi.PLATFORM_HONOR:7
google,MTPushPrivatesApi.PLATFORM_GOOGLE:8
platformMessageId String 厂商messageId,用于厂商消息跟踪和统计
notificationId int 通知id,可调用clearNotification取消通知
smallIcon String 小图标,默认使用drawable/mtpush_notification_icon.png
largeIcon String 大图标,一般位于通知右边
title String 通知标题,为空时取应用名
content String 必须,通知内容,不能为空,为空不展示通知
extras Bundle 额外字段,key/value格式均为String
builderId int 通知样式id,可调用setNotificationLayout设置通知样式,默认使用系统样式
style int 通知风格,默认值为0
大文本风格NOTIFICATION_STYLE_BIG_TEXT:1
收件箱风格NOTIFICATION_STYLE_INBOX:2
大图片风格NOTIFICATION_STYLE_BIG_PICTURE:3
bigText String 大文本,style为NOTIFICATION_STYLE_BIG_TEXT生效
inbox String[] 收件箱,style为NOTIFICATION_STYLE_INBOX生效
bigPicture String 大图片,style为NOTIFICATION_STYLE_BIG_PICTURE生效
priority int 通知的紧急程度,默认值为0
低级,通知没有led灯、震动和铃声,Notification.PRIORITY_LOW:-1
普通,通知可以led灯、震动和铃声,Notification.PRIORITY_DEFAULT:0
高级,通知可以led灯、震动和铃声,还可以悬浮窗弹出,Notification.PRIORITY_HIGH:1
defaults int 通知用于铃声、震动、led灯,默认值为Notification.DEFAULT_ALL:-1
铃声,Notification.DEFAULT_SOUND:1
震动,Notification.DEFAULT_VIBRATE:2
led灯,Notification.DEFAULT_LIGHTS:4
三种场景可自由组合,例如为7时,代表铃声、震动、led灯都有
Android8.0开始此属性跟随channel
category String 通知类型,用于通知栏的排序或者过滤,
种类繁多,类似Notification.CATEGORY_ALARM、Notification#CATEGORY_CALL
sound String 通知附带的铃声,需要提前在res/raw目录存在铃声文件
Android8.0开始,铃声跟随channel,如果通知使用的channel没有设置铃声,此通知不会对自定义铃声生效
建议提前将铃声设置在channel中,后续下发通知时的sound和channelId中的铃声保持一致,即可通知铃声效果保持一致性
channelId String 从Android8.0开始需要,如果没有提前设置sdk会帮忙设置(仅限Engagelab通道和应用在前台时的google通道)
intentUri String 点击通知之后的跳转,目前仅支持activity,activity跳转使用Intent.toURI()转换得到
badge int 此通知添加的角标数,属于累加逻辑,数值需要大于0,否则无效,建议填1
仅华为和小米生效
小米点击通知后,角标数会自动减1
华为点击通知后,角标数不会自动减1,建议调用setNotificationBadge设置

CustomMessage

  • 自定义消息
属性 类型 说明
messageId String 必须,EngagelabmessageId,用于消息跟踪和统计,不能为空
platform byte 厂商类型,默认Engagelab,MTPushPrivatesApi.PLATFORM_DEFAULT:0
小米,MTPushPrivatesApi.PLATFORM_XIAOMI:1
华为,MTPushPrivatesApi.PLATFORM_HUAWEI:2
魅族,MTPushPrivatesApi.PLATFORM_MEIZU:3
oppo,MTPushPrivatesApi.PLATFORM_OPPO:4
vivo,MTPushPrivatesApi.PLATFORM_VIVO:5
honor,MTPushPrivatesApi.PLATFORM_HONOR:7
google,MTPushPrivatesApi.PLATFORM_GOOGLE:8
platformMessageId String 厂商messageId,用于厂商消息跟踪和统计
title String 消息标题
content String 消息标题
contentType String 消息类型
extras Bundle 额外字段,key/value格式均为String

TagMessage

  • 标签消息
属性 类型 说明
sequence int 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性
code int 操作结果,详细请查看code
tags String[] 标签数组, 以下操作会返回
addTag
deleteTag
updateTag
queryAllTag
queryTag String 标签,以下操作会返回
queryTag
queryTagValid boolean 标签状态,以下操作会返回
queryTag

AliasMessage

  • 别名消息
属性 类型 说明
sequence int 用户自定义的操作序列号,同操作结果一起返回,用来标识一次操作的唯一性
code int 操作结果,详细请查看code
alias String 别名,以下操作会返回
setAlias
getAlias

PlatformTokenMessage

  • 厂商token消息
属性 类型 说明
platform byte 厂商类型,默认Engagelab,MTPushPrivatesApi.PLATFORM_DEFAULT:0
小米,MTPushPrivatesApi.PLATFORM_XIAOMI:1
华为,MTPushPrivatesApi.PLATFORM_HUAWEI:2
魅族,MTPushPrivatesApi.PLATFORM_MEIZU:3
oppo,MTPushPrivatesApi.PLATFORM_OPPO:4
vivo,MTPushPrivatesApi.PLATFORM_VIVO:5
honor,MTPushPrivatesApi.PLATFORM_HONOR:7
google,MTPushPrivatesApi.PLATFORM_GOOGLE:8
token String 厂商返回的token

InAppMessage

  • 应用内消息
属性 类型 说明
messageId String 必须,EngagelabmessageId,用于消息跟踪和统计,不能为空,为空不展示
overrideMessageId String EngagelaboverrideMessageId,用于消息跟踪和统计
target String 应用内消息展示目标页路径
imageUrl String 应用内消息图片地址
extras String 透传的额外信息
content String 应用内消息具体内筒
expired long 过期时间
delay long 延迟展示时间
interval long 应用内消息间隔展示时间
duration long 应用内消息展示时长
msgTime long SDK接收到应用内消息时间

code

code int值 说明
SUCCESS 0 成功
NULL_TAG_AND_ALIAS 6001 无效的设置
TIMEOUT 6002 设置超时,建议重试,一般出现在网络不佳、初始化尚未完成时
INVALID_ALIAS 6003 alias字符串不合法,有效的别名、标签组成:字母(区分大小写)、数字、下划线、汉字、特殊字符( 2.1.6 支持)@!#$&*+=.|
TOO_LONG_ALIAS 6004 alias超长。最多 40 个字节,中文 UTF-8 是 3 个字节
INVALID_TAGS 6005 某一个tag字符串不合法,有效的别名、标签组成:字母(区分大小写)、数字、下划线、汉字、特殊字符( 2.1.6 支持)@!#$&*+=.|
TOO_LONG_TAG 6006 某一个tag超长。一个tag最多40个字节,中文UTF-8是3个字节
TOO_MANY_TAGS 6007 tags数量超出限制。最多1000个,这是一台设备的限制。一个应用全局的标签数量无限制。
TOO_LONG_TAGS 6008 tags操作单次长度超过5000
UNKNOWN_ERROR 6009 未知错误
INVALID_JSON 6010 非法json
INVOKE_TOO_SOON 6012 tag/alias操作频繁
CONNECT_NOT_ENABLE 6013 CONNECT_NOT_ENABLE
INVALID_MOBILE_NUMBER 6023 无效手机号
在文档中心打开
icon
Contact Sales