SWIFT推送之本地推送(UILocalNotification)

摘要:
要实现本地化推送,可以在AppDelegate.swift中添加代码。这种情况是在应用程序进入后台时向用户推送消息。
SWIFT推送之本地推送(UILocalNotification)

本地推送通知是通过实例化UILocalNotification实现的。要实现本地化推送可以在AppDelegate.swift中添加代码实现,本事例是一个当App进入后台时推送一条消息给用户。

1.首先在didFinishLaunchingWithOptions方法内添加代码,IOS8推送消息首先要获得用户的同意,在初次安装App时会提示用户是否允许程序推送消息,此方法是App第一次运行的时候被执行一次,每次从后台激活时不执行该方法.

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        if (UIDevice.currentDevice().systemVersion as NSString).floatValue >= 8 {

            //APService.registerForRemoteNotificationTypes(

                //UIUserNotificationType.Badge.rawValue |

                //UIUserNotificationType.Sound.rawValue |

                //UIUserNotificationType.Alert.rawValue,

                //categories: nil)

            

            application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes:

                UIUserNotificationType.Badge |

                UIUserNotificationType.Sound |

                UIUserNotificationType.Alert, categories: nil))

        

        }

        

        APService.setupWithOption(launchOptions)

        return true

    }

 2.有几个方法要说一下,

   1.func applicationWillResignActive(application: UIApplication){} 当App既将进入后台、锁屏、有电话进来时会触发此事件

   2.func applicationDidEnterBackground(application: UIApplication) {} 当App进入后台时触发此事件

   3.func applicationWillEnterForeground(application: UIApplication) {} 当App从后台即将回到前台时触发此事件

   4.func applicationDidBecomeActive(application: UIApplication) {}当App变成活动状态时触发此事件

   5.func applicationWillTerminate(application: UIApplication) {} 当App退出时触发此方法,一般用于保存某些特定的数据

此时在applicationDidEnterBackground方法内写入以下代码:

func applicationDidEnterBackground(application: UIApplication) {

        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.

        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.

        UIApplication.sharedApplication().cancelAllLocalNotifications()

        

        var notification = UILocalNotification()

        //notification.fireDate = NSDate().dateByAddingTimeInterval(1)

        //setting timeZone as localTimeZone

        notification.timeZone = NSTimeZone.localTimeZone()

        notification.repeatInterval = NSCalendarUnit.CalendarUnitDay

        notification.alertTitle = "This is a local notification"

        notification.alertBody = "Hey,It‘s great to see you again"

        notification.alertAction = "OK"

        notification.soundName = UILocalNotificationDefaultSoundName

        //setting app‘s icon badge

        notification.applicationIconBadgeNumber = 1

        

        var userInfo:[NSObject : AnyObject] = [NSObject : AnyObject]()

        userInfo["kLocalNotificationID"] = "LocalNotificationID"

        userInfo["key"] = "Attention Please"

        notification.userInfo = userInfo

        

        //UIApplication.sharedApplication().scheduleLocalNotification(notification)

        //UIApplication.sharedApplication().presentLocalNotificationNow(notification)

        application.presentLocalNotificationNow(notification)

    }

 此时将按Home键将App切换到后台时会有一条推送消息,App角标变为了“1”

 

 

3.当用户点击消息时会触发didReceiveLocalNotification事件,在这个事件内写些代码:

func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {

        UIApplication.sharedApplication().cancelAllLocalNotifications()

        let userInfo = notification.userInfo!

        let title = userInfo["key"] as! String

        

        var alert = UIAlertView()

        alert.title = title

        alert.message = notification.alertBody

        alert.addButtonWithTitle(notification.alertAction!)

        alert.cancelButtonIndex = 0

        alert.show()

            

        //APService.showLocalNotificationAtFront(notification, identifierKey: nil)

    }

 

4.当程序处于活动状态的时候清除ICON的角标

func applicationDidBecomeActive(application: UIApplication) {

        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.

        //setting the desk top application icon‘s badge as zero

        //application.applicationIconBadgeNumber = 0

        application.cancelAllLocalNotifications()

        application.applicationIconBadgeNumber = 0

        

    }

免责声明:文章转载自《SWIFT推送之本地推送(UILocalNotification)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇了不起的 tsconfig.json 指南ASP.NET Core MVC获取请求的参数方法示例下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ROS学习之日志消息

ROS学习之日志消息 ROS日志系统的核心思想,就是使程序生成一些简短的文本字符流,这些字符流便是日志消息。 0.1严重级别        ROS中,日志消息分为五个不同的严重级别,也可简称为严重性或者级别。按照严重性程度递增,这些级别有       DEBUG       INFO       WARN       ERROR       FATAL 0...

JAX-WS HandlerChain使用详解

JAX-WS的Handler和Servlet的Filter相似,可以对所有WebServicer进行拦截,在Handler中可以记录日志、权限控制、对请求的SOAP消息进行加密,解密等。JAX-WS提供两个Handler接口,LogicalHandler和SOAPHandler。LogicalHandler处理的是Message Payload,只能够访...

window消息机制

剖析Windows消息处理机制 前一段,帮人写了个小控件,又温习了一遍Windows消息处理机制,现在把一些知识点总结出来,供大家参考.1.窗口 Windows程序是由一系列的窗口构成的,每个窗口都有自己的窗口过程,窗口过程就是一个拥有有固定 Signature 的 C函数,具体格式如下: LRESULT CALLBACK WindowProc(HWND...

frameset框架弹出层

     前段时间做项目,有个功能是消息提醒。 我相信很多大牛都做过。下面来分享我遇到的问题和解决方案。      首先我们的项目是用frameset框架,main代码。 <frameset name="myFrame" cols="85,*" frameborder="no" border="0" framespacing="0">...

前端er们如何最快开发h5移动端页面?

声明在前:本文原创,一字一字手打,转载还请消息M我一下,求伸手党手下留情。   一直以来对web移动端的东西做的比较多,总是在做确从来没总结过,于是想对移动端的框架选择到相关技巧,进行一个归纳。首先声明,我也是只萌新,不是大神,肯定会有写得不够严谨的地方,欢迎指正~互相交流,若有忍不了的地方,求轻喷,轻喷,喷.....   以下为正文:   互联网已经进入...

搭建一套完整的ELK系统

ELK日志收集系统介绍   一  简单介绍             ELK部署搭建有很多成型的方案,这里推荐一种比较中规中矩的方案,它整合了logstash比较消耗资源以及当服务端临时宕机的时候出现数据丢失的问题,主要由filebeat+redis+logstash+elasticsearch+kibana构成,在每个需要收集日志的机器上面下发filebe...