iOS开发,本地推送的使用

作者: KennyHito | 来源:发表于2017-03-06 19:27 被阅读4581次
个人链接
微信公众号.jpg
功能部分:</br>
本地推送分析图

一.iOS8本地推送注册

//创建本地通知
- (void)requestAuthor
{
    if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {
    // 设置通知的类型可以为弹窗提示,声音提示,应用图标数字提示
        UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];
        // 授权通知
        [[UIApplication sharedApplication] registerUserNotificationSettings:setting];
    }
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //本地推送
    [self requestAuthor];
    return YES;
}
二.假设在ViewController中添加touchesBegan方法,具体UILocalNotification的基本属性请往下看!
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    // 1.创建通知
    UILocalNotification *localNotification = [[UILocalNotification alloc] init];
    // 2.设置通知的必选参数
    // 设置通知显示的内容
    localNotification.alertBody = @"本地通知测试";
    // 设置通知的发送时间,单位秒
    localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:10];
    //解锁滑动时的事件
    localNotification.alertAction = @"别磨蹭了!";
    //收到通知时App icon的角标
    localNotification.applicationIconBadgeNumber = 1;
    //推送是带的声音提醒,设置默认的字段为UILocalNotificationDefaultSoundName
    localNotification.soundName = UILocalNotificationDefaultSoundName;
    // 3.发送通知(🐽 : 根据项目需要使用)
    // 方式一: 根据通知的发送时间(fireDate)发送通知
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
    
    // 方式二: 立即发送通知
    // [[UIApplication sharedApplication] presentLocalNotificationNow:localNotification];
}

注意:UILocalNotification的基本属性

fireDate:启动时间
timeZone:启动时间参考的时区
repeatInterval:重复推送时间(NSCalendarUnit类型),0代表不重复
repeatCalendar:重复推送时间(NSCalendar类型)
alertBody:通知内容
alertAction:解锁滑动时的事件
alertLaunchImage:启动图片,设置此字段点击通知时会显示该图片
alertTitle:通知标题,适用iOS8.2之后
applicationIconBadgeNumber:收到通知时App icon的角标
soundName:推送是带的声音提醒,设置默认的字段为UILocalNotificationDefaultSoundName
userInfo:发送通知时附加的内容
category:此属性和注册通知类型时有关联,(有兴趣的同学自己了解,不详细叙述)适用iOS8.0之后

region:带有定位的推送相关属性,具体使用见下面【带有定位的本地推送】适用iOS8.0之后
regionTriggersOnce:带有定位的推送相关属性,具体使用见下面【带有定位的本地推送】适用iOS8.0之后
三.注意一点. 当再次进入app中,通知栏的通知需要不显示,并且app的角标也要没有,所以需要在appDelegate设置一个属性.
- (void)applicationWillEnterForeground:(UIApplication *)application {
    //设置应用程序图片右上角的数字(如果想要取消右上角的数字, 直接把这个参数值为0)
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
}
四.运行效果图
  • 注意: 运行程序后,点击ViewController空白区域之后,必须推到后台才能看到通知的运行效果.
  • 首次运行会弹出让用户选择授权!!!
首次运行会弹出让用户选择授权 在桌面顶部弹出效果
五.代码下载

https://github.com/NSLog-YuHaitao/Localpush

分析appDelegate(作为总结,可以不看!)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    #pragma mark --  NSLog(@"\n ===> 程序开始 !");

    return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application {
    #pragma mark -->NSLog(@"\n ===> 程序挂起 !");  比如:当有电话进来或者锁屏,这时你的应用程会挂起,在这时,UIApplicationDelegate委托会收到通知,调用 applicationWillResignActive 方法,你可以重写这个方法,做挂起前的工作,比如关闭网络,保存数据。
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
    #pragma mark --> NSLog(@"\n ===> 程序进入后台 !");
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
    #pragma mark --> NSLog(@"\n ===> 程序进入前台 !");
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
    #pragma mark -->  NSLog(@"\n ===> 程序重新激活 !"); 应用程序在启动时,在调用了 applicationDidFinishLaunching 方法之后也会调用 applicationDidBecomeActive 方法,所以你要确保你的代码能够分清复原与启动,避免出现逻辑上的bug。(大白话就是说:只要启动app就会走此方法)。
}
- (void)applicationWillTerminate:(UIApplication *)application {
    #pragma mark --> 当用户按下按钮,或者关机,程序都会被终止。当一个程序将要正常终止时会调用 applicationWillTerminate 方法。但是如果长主按钮强制退出,则不会调用该方法。这个方法该执行剩下的清理工作,比如所有的连接都能正常关闭,并在程序退出前执行任何其他的必要的工作.
}

声明

  • 所有文章出自 Kenny Hito 的博客 !
  • 未经本人允许不得转载, 转载请标明来源与作者, 谢谢合作!

相关文章

  • iOS开发,本地推送的使用

    个人链接 博客园主页 : 博客园主页 GitHub : 我的GitHub iOS程序猿(媛)~~ : 这是我个人整...

  • iOS远程推送之(一):APNs原理和基本配置

    一、前言 iOS中消息推送有两种方式,本地推送和远程推送。本地推送在iOS中使用本地通知为你的APP添加提示用户功...

  • 本地推送的相关知识点

    本地推送 iOS10 在iOS10 中,推送授权方法做了很大改变,下面是授权和注册方法,要使用本地推送,首先要进行...

  • iOS8-推送(本地和远程)的简单使用

    参考文章:本地推送:一、iOS推送之本地推送(iOS Notification Of Local Notifica...

  • iOS开发本地推送

    最近有个小需求,做一个本地的事件通知,要求选择起始时间和推送的时间间隔,并且要每天推送。借着这个机会把本地推送方面...

  • 本地推送闹钟功能实现

    本地推送闹钟功能实现 在ios10下使用UserNotifications用本地推送实现闹钟功能,只是实现了简单的...

  • iOS 本地通知提醒

    一. iOS10以前使用 UILocalNotification 二.iOS10 本地推送 (详细) htt...

  • UNUserNotificationCenter本地推送

    iOS10不推荐使用UILocalNotification进行本地推送了,UNUserNotificationCe...

  • iOS 7,8,9 推送通知

    iOS app Push 使用Houston在本地调试远程通知 参考iOS推送小结 Ruby的运行 houst...

  • APNS

    在iOS开发中,消息推送有两种形式,一种是本地推送,一种是远程推送。 本地推送相对来说比较简单,不要要联网就可实现...

网友评论

  • 神一样的男人卫:楼主看你的代码请问如果进入APP内有弹框的话,而我不是点击通知的横幅进入,直接点击APP icon进入APP内,如何让弹框也显示出来???
  • SaxonRen:为何我下载的demo点击推送之后没有消息通知,本地推送不需要配置推送证书吧?

本文标题:iOS开发,本地推送的使用

本文链接:https://www.haomeiwen.com/subject/ulpugttx.html