摘要:本文将带你了解IOS开发入门iOS 本地推送通知和接收通知及其跳转控制总结,希望本文对大家学IOS有所帮助。
本文将带你了解IOS开发入门iOS 本地推送通知和接收通知及其跳转控制总结,希望本文对大家学IOS有所帮助。
iOS 本地推送通知和接收通知及其跳转控制总结。
1. 本地通知 iOS8.0
1.1. 本地通知发送
***iOS8.0之后才能用
//本地通知
UILocalNotification *locationNo = [[UILocalNotification alloc] init];
//触发时间
locationNo.fireDate = [NSDate dateWithTimeIntervalSinceNow:10];
//通知内容
locationNo.alertBody = @"这是本地通知";
//iOS8.2之后可见,一般不用
if (@available(iOS 8.2,*)) {
locationNo.alertTitle = @"哈哈,本地推送";
}
//锁屏(黑屏状态下,"滑动来"后面的字)--iOS10.0之后,没有滑动解锁功能了,这个属性也就不存在了
locationNo.alertAction = @"查看这个本地推送";
locationNo.hasAction = YES;
//通知过来时的声音
locationNo.soundName = UILocalNotificationDefaultSoundName;
//应用图标提示--默认是0,没有改变,设置为负数,通知到达时图标提示就会消失
locationNo.applicationIconBadgeNumber = -1;
//直接设置应用图标提示为0,代表隐藏,和上面效果一致
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
//MARK: 额外信息--对于用户不重要,对于开发者很重要,用于接收通知时处理相应逻辑
locationNo.userInfo = @{@"name":@"周玉",@"job":@"iOS开发工程师"};
//加入到调度池---有可能有多个通知---取决于触发时间
[[UIApplication sharedApplication] scheduleLocalNotification:locationNo];
1.2. 本地通知接收
//#import "AppDelegate.h" 注册通知
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
/*
UIUserNotificationTypeNone = 0,
UIUserNotificationTypeBadge 徽章标记
UIUserNotificationTypeSound 声音
UIUserNotificationTypeAlert 弹出效果
*/
//注册通知
//本地通知设置
UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:setting];
//当程序被杀死的情况下,接收到通知并执行事情--
UILocalNotification *notification = launchOptions[UIApplicationLaunchOptionsLocalNotificationKey];
if (notification) {
NSLog(@"localNo = %@",notification.userInfo);//NSLog不会再打印
//用测测试是否接收到通知
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
label.backgroundColor = [UIColor redColor];
[self.window.rootViewController.view addSubview:label];
return YES;
}
// 程序没有被杀死时,接收到本地通知时调用--点击通知时会执行这个方法,如果程序被杀死时,这个方法不再走,在application: didFinishLaunchingWithOptions:方法中获取
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
NSLog(@"notification.userInfo = %@",notification.userInfo);
//锁屏(黑屏状态下,”滑动来”后面的字)–iOS10.0之后,没有滑动解锁功能了,这个属性也就不存在了
locationNo.alertAction = @”查看这个本地推送”;
locationNo.hasAction = YES;
2. 本地通知逻辑处理 iOS8.0
2.1. 发送推送通知
// 发送通知
// ViewController.m
// 本地推送
//
// Created by zhouyu on 2017/12/27.
// Copyright ? 2017年 zhouyu. All rights reserved.
//
#import "ViewController.h"
#import "RedController.h"
#import "BlueController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"本地推送";
[self setUpUI];
}
- (void)setUpUI{
UIButton *btn1 = [[UIButton alloc] initWithFrame:CGRectMake(100, 300, 150, 60)];
[btn1 setTitle:@"跳转红色控制器" forState:UIControlStateNormal];
[btn1 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[btn1 addTarget:self action:@selector(red) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn1];
UIButton *btn2 = [[UIButton alloc] initWithFrame:CGRectMake(100, 400, 150, 60)];
[btn2 setTitle:@"跳转蓝色控制器" forState:UIControlStateNormal];
[btn2 setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[btn2 addTarget:self action:@selector(blue) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn2];
}
- (void)red{
[self pushLocationNotificationWithAlertBody:@"跳转红色控制器" userInfo:@{@"key":@"red"}];
}
- (void)blue{
[self pushLocationNotificationWithAlertBody:@"跳转蓝色控制器" userInfo:@{@"key":@"blue"}];
}
- (void)pushLocationNotificationWithAlertBody:(NSString *)body userInfo:(NSDictionary *)userInfo{
//本地通知
UILocalNotification *locationNo = [[UILocalNotification alloc] init];
//触发时间
locationNo.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];
//通知内容
locationNo.alertBody = body;
//通知过来时的声音
locationNo.soundName = UILocalNotificationDefaultSoundName;
//应用图标提示--默认是0,没有改变,设置为负数,通知到达时图标提示就会消失
locationNo.applicationIconBadgeNumber = -1;
//直接设置应用图标提示为0,代表隐藏,和上面效果一致
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
//MARK: 额外信息--对于用户不重要,对于开发者很重要
locationNo.userInfo = userInfo;
//加入到调度池---有可能有多个通知---取决于触发时间
[[UIApplication sharedApplication] scheduleLocalNotification:locationNo];
}
@end
2.2. AppDelegate接收推送通知进行逻辑处理
<div class="line number64 index63
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号