在iOS 10.3中,我将代码添加到AppDelegate
:
@interface AppDelegate () {
UNUserNotificationCenter *center;
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
center = [UNUserNotificationCenter currentNotificationCenter];
UNAuthorizationOptions options = UNAuthorizationOptionAlert + UNAuthorizationOptionSound;
[center requestAuthorizationWithOptions:options
completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (!granted) {
DLog(@"Something went wrong");
} else {
DLog(@"Access Granted")
}
}];
return YES;
}
我点按通知,但下面的方法没有被调用。
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
答案 0 :(得分:1)
注册UserNotifications/UserNotifications.h
中的通知导入AppDelegate
框架,并使用通知代理UNUserNotificationCenterDelegate
在收到通知时回复通知。
@interface AppDelegate ()<UNUserNotificationCenterDelegate>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
//Notification Setup.
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0) {
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self;
[center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
if( !error ){
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
}];
} else {
//register to receive notifications
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound) categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
}
return YES;
}
#ifdef __IPHONE_10_0
////#### iOS 10 #########//
//This is call when application is open.
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
willPresentNotification:(UNNotification *)notification
withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler
{
NSLog(@"Userinfo %@",notification.request.content.userInfo);
}
//This is call when application is in background.
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
didReceiveNotificationResponse:(UNNotificationResponse *)response
withCompletionHandler:(void(^)())completionHandler
{
NSLog(@"Userinfo %@",response.notification.request.content.userInfo);
// Must be called when finished
completionHandler();
}
#endif
////#### iOS 10 End #########//