如果用户允许本地通知,是否没有简单的测试方法?在我拒绝发送本地通知后,我在控制台中发现了警告.当相关事件发生时,它表示该应用程序尝试发送通知,即使用户不允许它.我想在尝试显示通知之前检查是否允许它.在我的情况下看评论,我该怎么做?
我的代码是:
app = [UIApplication sharedApplication]; -(void)showBackgroundNotification:(NSString *) message { //check if app is in background and check if local notifications are allowed. if (app.applicationState == UIApplicationStateBackground /*&& LocalNotificationsAreAllowed*/){ UILocalNotification *note = [[UILocalNotification alloc]init]; note.alertBody = message; note.fireDate = [NSDate dateWithTimeIntervalSinceNow:0.0]; [app scheduleLocalNotification :note]; } }
我得到用户的提示,如下所示:
UIUserNotificationSettings *settings; if ([app respondsToSelector:@selector(registerUserNotificationSettings:)]) { settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge|UIUserNotificationTypeAlert|UIUserNotification TypeSound) categories:nil]; [app registerUserNotificationSettings:settings]; }
我不能使用设置对象?
编辑:我想我已经解决了.这似乎有效.
-(void)showBackgroundNotification:(NSString *) message { if (app.applicationState == UIApplicationStateBackground && [app currentUserNotificationSettings].types != UIUserNotificationTypeNone){ UILocalNotification *note = [[UILocalNotification alloc]init]; note.alertBody = message; note.fireDate = [NSDate dateWithTimeIntervalSinceNow:0.0]; [app scheduleLocalNotification :note]; } }
解决方法
这是我在不太具体的情况下使用的内容:
+ (BOOL)notificationsEnabled { UIUserNotificationSettings *settings = [[UIApplication sharedApplication] currentUserNotificationSettings]; return settings.types != UIUserNotificationTypeNone; }
我通常在通知管理器中保留一组这些类型的方法.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。