当应用程序处于后台时,如何显示自定义本地通知视图或自定义警报视图?

时间:2016-05-09 10:26:36

标签: ios objective-c uilocalnotification

其实我想在我的应用中显示本地通知。但我想通过一些自定义设计来显示此通知,例如确定和取消按钮。点击确定和取消我想要执行一些操作。请提出建议。

提前致谢。

2 个答案:

答案 0 :(得分:3)

我很自豪这个自定义本地通知代码可能对您有所帮助 其中Accept是appDelegate.m

中本地通知代表所在的标识符
    NSString *idetnt = @"Accept";
    NSString *idetnt1 = @"Reject";
    NSString *idetnt2 = @"Local Notification";
    UIMutableUserNotificationAction *notificationAction1 = [[UIMutableUserNotificationAction alloc] init];
    notificationAction1.identifier = idetnt;
    notificationAction1.title = @"Snooze";
    notificationAction1.activationMode = UIUserNotificationActivationModeBackground;
    notificationAction1.destructive = NO;
    notificationAction1.authenticationRequired = NO;

    UIMutableUserNotificationAction *notificationAction2 = [[UIMutableUserNotificationAction alloc] init];
    notificationAction2.identifier = idetnt1;
    notificationAction2.title = @"Call";
    notificationAction2.activationMode = UIUserNotificationActivationModeBackground;
    notificationAction2.destructive = YES;
    notificationAction2.authenticationRequired = YES;

    UIMutableUserNotificationAction *notificationAction3 = [[UIMutableUserNotificationAction alloc] init];
    notificationAction3.identifier = @"Reply";
    notificationAction3.title = @"Reply";
    notificationAction3.activationMode = UIUserNotificationActivationModeForeground;
    notificationAction3.destructive = NO;
    notificationAction3.authenticationRequired = YES;

    UIMutableUserNotificationCategory *notificationCategory = [[UIMutableUserNotificationCategory alloc] init];
    notificationCategory.identifier = @"Email";
    [notificationCategory setActions:@[notificationAction1,notificationAction2,notificationAction3] forContext:UIUserNotificationActionContextDefault];
    [notificationCategory setActions:@[notificationAction1,notificationAction2] forContext:UIUserNotificationActionContextMinimal];

    NSSet *categories = [NSSet setWithObjects:notificationCategory, nil];
    UIUserNotificationType notificationType = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
    UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:notificationType categories:categories];
    [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];
    UILocalNotification* localNotification = [[UILocalNotification alloc] init];
    localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:600];
    localNotification.alertBody = idetnt2;
    localNotification.category = @"Email";
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

当你的app在后台然后这个方法调用

- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void(^)())completionHandler
{ 
   if ([identifier isEqualToString:@"Accept"])
   {
   }
   else if ([identifier isEqualToString:@"Reject"])
   {
   }
   else if ([identifier isEqualToString:@"Reply"])
   {

   }
   if(completionHandler != nil)
    completionHandler();
 }

当你的应用程序在前台时,这个方法调用

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)localNotification
{
}

转到功能选项,然后点击远程通知enter image description here

答案 1 :(得分:2)

您无法添加完全自定义,但您的通知可以设置category属性以指定应使用哪些通知设置,并且这些通知设置可以指定要显示的按钮以及用户选择它们。