跳到主要内容

推送接口

合规指南:

  • 官方权限申请描述:Android 6.0 开始,对权限申请进行精细控制,每一个版本都有不同要求。其表象目前可以总结为:首次申请无限制,二次申请需理由,三次以后申请只能引导到权限设置页面,特殊权限需要跳转到特定系统界面设置。
  • 海外权限申请审核:以 Android 官方权限申请描述为标准,暂无其他限制。
  • 国内权限申请审核:增加48小时限制,时限之内不允许申请(具体规定大家都在探索中)。
危险
  • 国内:集成的第三方推送服务,设备绑定的账号为SDK账号(accountId)。一个设备只能添加一个账号,一个账号可添加多个设备。
  • 海外:默认使用Firebase推送,研发无需额外接入,开放平台打包时会自动包含。如需定制推送主题,可接入如下方法。若需要Firebase推送token,请点击前往:SDK配置文档中查询配置章节。

1、权限管理

1.1、申请权限

危险

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

权限申请流程如下:

import com.dh.DHSDKHelper;

import org.json.JSONObject;

String params = "{}";
try {
params = new JSONObject()
.put("unionsdk_type", "push")
.put("event_type", "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("unionsdk_type", "push")
.put("event_type", "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、撤销权限

危险

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

权限撤销流程如下:

import com.dh.DHSDKHelper;

import org.json.JSONObject;

String params = "{}";
try {
params = new JSONObject()
.put("unionsdk_type", "push")
.put("event_type", "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、添加标签

危险

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

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);