ios - iOS 的 UILocalNotification 中不显示操作和类别

标签 ios objective-c cocoa-touch uilocalnotification appdelegate

我相信苹果文档中有以下内容 here我只需要为 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;
}

以下是我构建本地通知的方式:

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];

它只显示带有关闭按钮的默认通知,而不是我的接受按钮。

如何让这个“接受”按钮显示在我的本地通知上?

最佳答案

UILocalNotification 代码主体中缺少的一件事是明确告诉它是基于类别的通知。

将类别属性添加到您的通知:

localNotification.category = @"INVITE_CATEGORY";

关于ios - iOS 的 UILocalNotification 中不显示操作和类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32239012/

相关文章:

iphone - UIButton仅在小范围内响应

iphone - QuartzCore.framework问题

ios - 如何在 mmdrawercontroller 打开的侧边菜单上调暗 CenterController?

ios - ios中sendEvent和Send Action的区别

iphone - 类别不识别 Ivars

ios - 在动态 TableView 中添加静态单元格

ios - 可选类型 'UIImage?' 的值未展开;您是要使用 '!' 还是 '?' ?插入 '!'

ios - 如何从 View Controller 中选择 Storyboard中的 UIImage

ios - 服务扩展写入核心数据但在应用程序中找不到任何内容

ios - 将 sqlite 文件从一个项目复制到另一个项目