# 推送接口

合规指南:

  • 官方权限申请描述:Android 6.0 开始,对权限申请进行精细控制,每一个版本都有不同要求。其表象目前可以总结为:首次申请无限制,二次申请需理由,三次以后申请只能引导到权限设置页面,特殊权限需要跳转到特定系统界面设置。
  • 海外权限申请审核:以 Android 官方权限申请描述为标准,暂无其他限制。
  • 国内权限申请审核:增加48小时限制,时限之内不允许申请(具体规定大家都在探索中)。

DANGER

  • 国内:集成的第三方推送服务,设备绑定的账号为SDK账号(accountId)。一个设备只能添加一个账号,一个账号可添加多个设备。
  • 海外:默认使用Firebase推送,研发无需额外接入,开放平台打包时会自动包含。如需定制推送主题,可接入如下方法。若需要Firebase推送token,请点击前往:接入准备文档中查询配置章节。

# 1、权限管理

# 1.1、申请权限

DANGER

建议游戏在登录成功后进行查询和申请,申请前建议展示对话框告知用途,被拒绝后国内须48小时内不得再次触发申请权限,海外无此限制。

权限申请流程如下:

import com.dh.DHSDKHelper;

import org.json.JSONObject;

String params = "{}";
try {
    params = new JSONObject()
        .put("pluginType", "push")
        .put("methodName", "activePermission")
        .toString();
} catch (Throwable e) {
    e.printStackTrace();
}

/**
 * @param activity    上下文
 * @param params      参数
 * @param callback    回调对象
 */
DHSDKHelper.getInstance().exec(activity, params, new IDHSDKCallback() {
    @Override
    public void onDHSDKResult(int requestCode, int resultCode, String resultData) {
        switch (requestCode) {
            // 申请权限
            case 132:
                // resultData:返回数据是文字提示
                if (resultCode == DHSDKConst.RET_OK) {
                    // 申请成功,可以推送
                } else if (resultCode == DHSDKConst.RET_FAIL) {
                    // 申请失败,无法推送
                }
                break;
            default:
                // 其他结果
                break;
        }
    }
});

# 1.2、查询权限

import com.dh.DHSDKHelper;

import org.json.JSONObject;

String params = "{}";
try {
    params = new JSONObject()
        .put("pluginType", "push")
        .put("methodName", "queryPermission")
        .toString();
} catch (Throwable e) {
    e.printStackTrace();
}

/**
 * @param activity    上下文
 * @param params      参数
 * @param callback    回调对象
 */
DHSDKHelper.getInstance().exec(activity, params, new IDHSDKCallback() {
    @Override
    public void onDHSDKResult(int requestCode, int resultCode, String resultData) {
        switch (requestCode) {
            // 查询权限
            case 133:
                // resultData:返回数据是文字提示
                if (resultCode == DHSDKConst.RET_OK) {
                    // 已有权限,可以推送
                } else if (resultCode == DHSDKConst.RET_FAIL) {
                    // 暂无权限,无法推送
                }
                break;
            default:
                // 其他结果
                break;
        }
    }
});

# 1.3、撤销权限

DANGER

建议游戏在设置界面展示撤销推送权限的入口,通过SDK接口查询是否已有权限。若已有权限则提供按钮并调用SDK接口,根据SDK回调的状态进行UI更新

权限撤销流程如下:

import com.dh.DHSDKHelper;

import org.json.JSONObject;

String params = "{}";
try {
    params = new JSONObject()
        .put("pluginType", "push")
        .put("methodName", "revokePermission")
        .toString();
} catch (Throwable e) {
    e.printStackTrace();
}

/**
 * @param activity    上下文
 * @param params      参数
 * @param callback    回调对象
 */
DHSDKHelper.getInstance().exec(activity, params, new IDHSDKCallback() {
    @Override
    public void onDHSDKResult(int requestCode, int resultCode, String resultData) {
        switch (requestCode) {
            // 撤销权限
            case 134:
                // resultData:返回数据是文字提示
                if (resultCode == DHSDKConst.RET_OK) {
                    // 撤销成功,没有权限
                } else if (resultCode == DHSDKConst.RET_FAIL) {
                    // 撤销失败,仍有权限
                }
                break;
            default:
                // 其他结果
                break;
        }
    }
});

# 2、标签管理

# 2.1、添加标签

DANGER

一个设备可以绑定不限数量的标签,一个标签也可以绑定不限数量的设备。

import com.dh.DHSDKConst;
import com.dh.DHSDKHelper;
import com.dh.callback.IDHSDKCallback;

// 标签名称
String alias = "nabo";

/**
 * @param activity    上下文
 * @param alias       主题名称
 */
DHSDKHelper.getInstance().getPush().setAlias(activity, alias, null);

# 2.2、参数标签

import com.dh.DHSDKHelper;

// 标签名称
String alias = "nabo";

/**
 * @param activity    上下文
 * @param alias       主题名称
 */
DHSDKHelper.getInstance().getPush().delAlias(activity, alias);
Last Updated: 2025/7/21 17:55:58