我在视图控制器按钮操作中有以下代码:
- (IBAction)requestPermissions:(id)sender
{
DDLogInfo(@"Start permission requesting.");
if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerForRemoteNotifications)]){
[[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didBecomeActive:)
name:UIApplicationDidBecomeActiveNotification
object:nil];
[[UIApplication sharedApplication]
registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound];
}
}
注册完成后,会发布didBecomeActive
通知,并且我会检查用户做了什么:
-(void)didBecomeActive:(NSNotification *)notification
{
if([[UIApplication sharedApplication] enabledRemoteNotificationTypes] == UIRemoteNotificationTypeNone){
// if user decline
}
} else {
// if user accept
}
所以我的问题是:如果用户拒绝接收推送通知并稍后决定启用推送通知(设置 - >通知中心 - >我的应用),则会出现一个惊喜:警告' '徽章'和' Sound'在“设置”中启用,但应用返回UIRemoteNotificationTypeNone
。
任何想法有什么不对?
注意:我知道这些方法已被弃用,因此请不要告诉我使用registerForRemoteNotifications:
和UIUserNotificationSettings
,它已经完成。
答案 0 :(得分:2)
嗯,可能它在app重启后返回一个正确的值,你能检查一下吗?我发现当你的应用在后台时更改权限时iOS会自动杀死你的应用的情况,例如:照片供稿访问;我想在这种情况下它只是iOS中的一个错误实现,这不会让我感到惊讶。我想我已经描述了你描述的这种情况,并且在发现它重新启动之后返回无效/旧值时,我放弃了并在需要重启时进行流量计数。
无论如何,我不认为你能做些什么。