# 推送接口
合规指南:
- 海外权限申请审核:以 iOS 官方权限申请描述为标准,暂无其他限制。
- 国内权限申请审核:增加48小时限制,时限之内不允许申请(具体规定大家都在探索中)。
DANGER
- 国内:集成的第三方推送服务,设备绑定的账号为SDK账号(accountId)。一个设备只能添加一个账号,一个账号可添加多个设备。
- 海外:默认使用Firebase推送,研发无需额外接入,开放平台打包时会自动包含。如需定制推送主题,可接入如下方法。若需要Firebase推送token,请点击前往:接入准备文档中查询配置章节。
# 1、iOS 配置
在Target->Singing&Capabilities中点击+Capability,选择Push Notifications

然后选择Background Modes

其中Background Modes中选择remote notifications 最后效果图如下

导入推送库文件 在Targetr-Build Phases->Link Binary With Libraries中添加 UserNotifications.framework 库

代码使用 在AppDelegate.m中在系统的推送回调中添加SDK的方法
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSLog(@"deviceToken:%@",deviceToken);
[DHUnionSDK application:application didRegisterForRemoteNotificationWithDeviceToken:deviceToken];
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
[DHUnionSDK application:application didRecviveRemoteNotification:userInfo];
}
# 2、权限管理
# 2.1、申请权限
DANGER
建议游戏在登录成功后进行查询和申请,申请前建议展示对话框告知用途,被拒绝后国内须48小时内不得再次触发申请权限,海外无此限制。
权限申请流程如下:

[DHUnionSDK toolExtent:@{@"event_type":@"activePermission"} completion:^(NSError *error, NSDictionary *data) {
if(error == nil){
//申请推送权限成功
}
else{
//申请推送权限失败
}
}];
# 2.2、查询权限
[DHUnionSDK toolExtent:@{@"event_type":@"queryPermission"} completion:^(NSError *error, NSDictionary *data) {
if(error == nil){
//查询推送权限成功
NSString *result = data[@"result"]?:@"";
if([result isEqualToString:@"true"]){
//已开启推送权限
}
else{
//尚未开启推送权限
}
}
else{
//查询推送权限失败
}
}];
# 2.3、撤销权限
DANGER
建议游戏在设置界面展示撤销推送权限的入口,通过SDK接口查询是否已有权限。若已有权限则提供按钮并调用SDK接口,根据SDK回调的状态进行UI更新。
权限撤销流程如下:

[DHUnionSDK toolExtent:@{@"event_type":@"revokePermission"} completion:^(NSError *error, NSDictionary *data) {
if(error == nil){
//关闭推送权限成功
}
else{
//关闭推送权限失败
}
}];
# 3、标签管理
# 3.1、添加标签
DANGER
一个设备可以绑定不限数量的标签,一个标签也可以绑定不限数量的设备。
[DHUnionSDK pushBindTag:@"tag1"];
# 3.2、参数标签
[DHUnionSDK pushUnBindTag:@"tag1"];