如何在应用程序处于前台时显示本地通知

如何显示本地通知,即使在前台,使用新的(从iOS 10)通知框架UserNotifications https://developer.apple.com/reference/usernotifications?language=objc ?

#import <UserNotifications/UserNotifications.h> #define SYSTEM_VERSION_GRATERTHAN_OR_EQUALTO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) //interface @interface AppDelegate : UIResponder <UIApplicationDelegate,UNUserNotificationCenterDelegate> @end //implementation -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ [self registerForRemoteNotifications]; return YES; } - (void)registerForRemoteNotifications { if(SYSTEM_VERSION_GRATERTHAN_OR_EQUALTO(@"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 { // Code for old versions } } ////...........Handling delegate methods for UserNotifications........ //Called when a notification is delivered to a foreground app. -(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler{ NSLog(@"User Info : %@",notification.request.content.userInfo); completionHandler(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge); } //Called to let your app know which action was selected by the user for a given notification. -(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler{ NSLog(@"User Info : %@",response.notification.request.content.userInfo); completionHandler(); } 

愿这能帮助你。 🙂

  You can do this way. //in Appdelegate -(void)application:(UIApplication *)application didReceiveLocalNotification(UILocalNotification *)notification { dispatch_async(dispatch_get_main_queue(),^{ NSLog(@"alertbody ..%@", notification.alertBody); NSLog(@"title ..%@", notification.alertTitle); NSLog(@"action ..%@", notification.alertAction); NSLog(@"userinfo..%@", notification.userInfo); [[NSNotificationCenter defaultCenter]postNotificationName:@"NotificationReceived" object:nil userInfo:notification.userInfo]; }); } //in present view controller -(void)viewDidLoad { [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(notificationReceivedMethod:) name:@"NotificationReceived" object:nil]; } -(void) viewWillDisappear:(BOOL)animated { { [[NSNotificationCenter defaultCenter]removeObserver:self name:@"NotificationReceived" object:nil]; } -(void)notificationReceivedMethod { //create you custom popup or view }