我想在我的应用首次启动时安排UILocalNotification
。在iOS 8上,这要求我通过此调用请求用户权限:
[application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
这会打开一个对话框,询问用户是否允许。
在安排通知之前,有没有办法等待用户回答?我宁愿不等待任何其他用户操作,例如按下按钮或在应用程序中查看控制器更改。
答案 0 :(得分:2)
在iOS 8及更高版本中,在AppDelegate中实现以下方法:
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings {
// You could check here [[UIApplication sharedApplication] currentUserNotificationSettings]
// This is where you set up your local notification
}
此方法是UIApplicationDelegate
方法,因此您只需在MyAppDelegate.m
文件中实现该方法。
告诉代表可以使用哪些类型的通知来引起用户的注意。
参数
应用程序:注册用户通知设置的app对象。
notificationSettings:您的应用可用的用户通知设置。
此对象中的设置可能与您最初请求的设置不同。
讨论
使用本地或远程通知提醒用户注意新信息的应用必须通过调用app对象的registerUserNotificationSettings:方法来注册他们想要使用的通知类型。 (在8.0之前的iOS版本上链接的应用程序中,当您安排本地通知时,注册也可能会隐式发生。)您的应用程序的请求与用户的当前首选项相结合,以确定允许的通知类型,并将结果传递给此notificationSettings参数中的方法。
首次注册应用程序的首选通知类型时,系统会询问用户是否应允许您的应用程序发送通知并存储用户的响应。在后续注册尝试期间,系统不会提示用户。用户始终可以使用“设置”应用更改通知首选项。
由于用户的首选项可能会更改,因此您应始终检查notificationSettings参数的内容。这些设置仅控制是否向用户通知本地或远程通知。该通知仍会在适当的时间发送给您的应用。