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

时间:2023-12-24 19:37:55

#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 头文件

可以全部复制进去运行,