IOS开发入门之iOS 本地推送通知和接收通知及其跳转控制总结
凌雪 2018-10-10 来源 :网络 阅读 899 评论 0

摘要:本文将带你了解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频道!


本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程