未解决

iOS在退出登陆后,解绑和删除tag后还能收到推送 #40112个回答

push_services 红海云集团 2020-07-02

问:
正常情况下,在app调用listTagsWithCompleteHandler获取绑定tag的列表,然后调用delTag删除了tag,而且回调的result中也表示删除tag成功了。为了确保退出登陆后不再接收推送的消息,我在删除tag后,还调用unbindChannelWithCompleteHandler方法解除了绑定,解除绑定的回调也显示成功了,为什么这样的情况还可以收到后台推送过来的消息?
确认 取消
答:
我这边的逻辑是在用户登陆后, 才调用下面这些方法进行绑定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(@"解除百度推送绑定成功"); } }]; }];

红海云集团 2020-07-10

答:
可以提供具体的case看一下具体的问题

PushQA 2020-07-10