iOS之本地推送(前台模式与后台模式)

#import "AppDelegate.h"

#import "GlobalDefine.h" 

@interface AppDelegate ()

@end

@implementation AppDelegate

  

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    

    // 判断是否是8.0以上

    if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {

        UIMutableUserNotificationCategory *category = [[UIMutableUserNotificationCategory alloc] init];

        category.identifier = NotificationIdentifier;

        

        UIMutableUserNotificationAction *foregroundAction = [[UIMutableUserNotificationAction alloc] init];

        foregroundAction.identifier = foregroundActionidentifier;

        foregroundAction.title = @"前台模式";

        foregroundAction.activationMode = UIUserNotificationActivationModeForeground;

        

        UIMutableUserNotificationAction *backgroundAction = [[UIMutableUserNotificationAction alloc] init];

        

        backgroundAction.identifier = backgroundActionidentifier;

        backgroundAction.title = @"后台模式";

        backgroundAction.activationMode = UIUserNotificationActivationModeBackground;

        

        [category setActions:@[foregroundAction, backgroundAction] forContext:UIUserNotificationActionContextDefault];

        

        NSSet *set = [NSSet setWithObjects:category, nil];

        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories: set];        

        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];

    }    

    return YES;

}

- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void (^)())completionHandler {    

    if ([identifier isEqualToString:foregroundActionidentifier]) {

        NSLog(@"ios9点击了前台模式");

    }

    completionHandler();

}

@end

______________________________________华丽的分割线_________________________________________________

#import "ViewController.h"

#import "GlobalDefine.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {    

    UILocalNotification *notification = [[UILocalNotification alloc] init];

    notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:5]; // 推送时间

    notification.alertTitle = @"推送";  // 推送标题

    notification.alertBody = @"推送内容"; // 推送的内容

    notification.category = NotificationIdentifier;

    [[UIApplication sharedApplication] scheduleLocalNotification:notification];

@end

______________________________________华丽的分割线_________________________________________________

#ifndef GlobalDefine_h

#define GlobalDefine_h

#define NotificationIdentifier @"NotificationIdentifier"

#define backgroundActionidentifier @"backgroundAction.identifier"

#define foregroundActionidentifier @"foregroundAction.identifier"

#endif /* GlobalDefine_h */

PS: 最下面的 #ifndef GlobalDefine_h 头文件

可以全部复制进去运行, 

原文地址:https://www.cnblogs.com/SingCnblogs/p/5124334.html