答:
我这边的逻辑是在用户登陆后, 才调用下面这些方法进行绑定channal,删除tag,设置tag,我的tag是用的用户的标识ID
[BPush bindChannelWithCompleteHandler:^(id result, NSError *error) {
NSLog(@"绑定结果:%@", result);
if (result) {
// 确认绑定成功
if ([result[@"error_code"] intValue] != 0) {
return;
}
}
// 删除其他tag
[BPush listTagsWithCompleteHandler:^(id result, NSError *error) {
NSArray *tagList = result[@"response_params"][@"tags"];
for (NSDictionary *tagDict in tagList) {
NSString *tagName = tagDict[@"name"];
[BPush delTag:tagName withCompleteHandler:^(id result, NSError *error) {
NSLog(@"已删除百度推送标签==%@",tagName);
}];
}
// 绑定tag
[BPush setTag:[ShareObject shared].loginUser.userId withCompleteHandler:^(id result, NSError *error) {
BOOL success_amount = [result[@"response_params"][@"success_amount"] boolValue];
if (success_amount) {
NSLog(@"已设置百度推送标签==%@",[ShareObject shared].loginUser.userId);
}
}];
}];
}];
然后在用户退出登陆后,先删除tag,然后再解绑channel。但是在用户执行退出操作后,我也删除tag和解绑了,为什么还能收到我们后台推送过来的消息呢?
// 删除绑定tag
[BPush listTagsWithCompleteHandler:^(id result, NSError *error) {
NSArray *tagList = result[@"response_params"][@"tags"];
for (NSDictionary *tagDict in tagList) {
NSString *tagName = tagDict[@"name"];
[BPush delTag:tagName withCompleteHandler:^(id result, NSError *error) {
if (result) {
NSLog(@"解除百度推送tag成功");
}
}];
}
// 解除绑定
[BPush unbindChannelWithCompleteHandler:^(id result, NSError *error) {
if (result) {
NSLog(@"解除百度推送绑定成功");
}
}];
}];