推送接口
合规指南:
- 官方权限申请描述: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);