iOS中的UILocalNotification中不显示动作和类别

我有我从苹果文档这里相信以下是我需要有一个UILocalNotification的类别:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIMutableUserNotificationAction *acceptAction = [[UIMutableUserNotificationAction alloc] init]; // Define an ID string to be passed back to your app when you handle the action acceptAction.identifier = @"ACCEPT_IDENTIFIER"; // Localized string displayed in the action button acceptAction.title = @"Accept"; // If you need to show UI, choose foreground acceptAction.activationMode = UIUserNotificationActivationModeBackground; // Destructive actions display in red acceptAction.destructive = NO; // Set whether the action requires the user to authenticate acceptAction.authenticationRequired = NO; // First create the category UIMutableUserNotificationCategory *inviteCategory = [[UIMutableUserNotificationCategory alloc] init]; // Identifier to include in your push payload and local notification inviteCategory.identifier = @"INVITE_CATEGORY"; // Add the actions to the category and set the action context [inviteCategory setActions:@[acceptAction] forContext:UIUserNotificationActionContextDefault]; // Set the actions to present in a minimal context [inviteCategory setActions:@[acceptAction] forContext:UIUserNotificationActionContextMinimal]; NSSet *categories = [NSSet setWithObjects:inviteCategory, nil]; UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:categories]; [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings]; // Handle launching from a notification UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; if (localNotif) { NSLog(@"Recieved Notification %@",localNotif); } return YES; } 

以下是我如何构build我的本地通知:

 NSDate *dateChosen = [self.reminderDatePicker date]; NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *components = [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute) fromDate:dateChosen]; NSInteger hour = [components hour]; NSInteger minute = [components minute]; // NSCalendar *calendar = [NSCalendar currentCalendar]; // NSDateComponents *components = [[NSDateComponents alloc] init]; [components setDay: 3]; [components setMonth: 7]; [components setYear: 2012]; [components setHour: hour]; [components setMinute: minute]; [components setSecond: 0]; [calendar setTimeZone: [NSTimeZone defaultTimeZone]]; NSDate *dateToFire = [calendar dateFromComponents:components]; UILocalNotification *localNotification = [[UILocalNotification alloc] init]; localNotification.fireDate = dateToFire; [localNotification setRepeatInterval: kCFCalendarUnitDay]; NSLog(@"Notification will be shown on: %@ ",localNotification.fireDate); localNotification.userInfo = [[NSDictionary alloc] initWithObjectsAndKeys:self.dayPeriod, @"name", nil]; localNotification.timeZone = [NSTimeZone defaultTimeZone]; localNotification.alertBody = alertMessage; localNotification.alertAction = NSLocalizedString(@"View details", nil); localNotification.repeatInterval = NSDayCalendarUnit; localNotification.soundName = UILocalNotificationDefaultSoundName; localNotification.applicationIconBadgeNumber = -1; [[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 

它只是显示与解雇button,而不是我的接受button的默认通知。

我怎样才能得到这个“接受”button显示在我的本地通知?

你在UILocalNotification代码主体中遗漏的一件事就是明确地告诉它它是一个基于类别的通知。

将category属性添加到您的通知中:

 localNotification.category = @"INVITE_CATEGORY";