时间表UILocalNotification

问题描述:

我希望在收到通知时采取可操作的按钮。 对于处理远程推送通知,我添加以下代码 -时间表UILocalNotification

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
UIApplication *application = [UIApplication sharedApplication]; 

if(SYSTEM_VERSION_LESS_THAN(@"10.0")) { 
    UIMutableUserNotificationAction *action1 = [[UIMutableUserNotificationAction alloc] init]; 
    [action1 setActivationMode:UIUserNotificationActivationModeForeground]; 
    [action1 setTitle:@"action1Text"]; 
    [action1 setIdentifier:@"action1id"]; 
    [action1 setDestructive:NO]; 
    [action1 setAuthenticationRequired:NO]; 

    UIMutableUserNotificationCategory *actionCategory = [[UIMutableUserNotificationCategory alloc] init]; 
    [actionCategory setIdentifier:kMTNRemindLaterCategory]; 
    [actionCategory setActions:@[action1] 
        forContext:UIUserNotificationActionContextDefault]; 

    NSSet *categories = [NSSet setWithObject:actionCategory]; 
    UIUserNotificationType types = (UIUserNotificationTypeAlert| 
            UIUserNotificationTypeSound| 
            UIUserNotificationTypeBadge); 

    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:types categories:categories]; 

    [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; 

} 
} 

它完美。我能够看到按钮并处理动作。现在,当点击该按钮并基于更多逻辑时,我想使用与上面定义的相同的可操作按钮来安排本地通知。我添加的代码(而不是在AppDelegate的文件):

NSDate *date = [NSDate dateWithTimeIntervalSinceNow:10]; 
UILocalNotification *localNotification = [[UILocalNotification alloc] init]; 
localNotification.fireDate = date; 
localNotification.timeZone = [NSTimeZone defaultTimeZone]; 
localNotification.alertBody = @"title 4"; 
localNotification.hasAction = YES; 
localNotification.alertAction = @"action"; 
localNotification.soundName = UILocalNotificationDefaultSoundName; 
localNotification.category = kRemindLaterCategory; 
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 

本地通知预定,我收到了通知。但我没有看到任何可操作的按钮。

我阅读苹果文档,其中

- (void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification; 

似乎是有用的。但是,这是通过点击通知触发的。 其他帖子中,我提到: https://www.shinobicontrols.com/blog/ios8-day-by-day-day-25-notification-actions actions and categories don't show in UILocalNotification in iOS How can I add action buttons/actions to UILocalNotification alert?

任何人都可以请点我在正确的方向?

kRemindLaterCategory值和kMTNRemindLaterCategory应该是一样的,那么你就可以看到本地通知也动按钮,如果两者不相同,动按钮可以是不可见的,因为与当地通知指定类别一直没有注册。

+0

你是最棒的!非常感谢:D –