zoukankan      html  css  js  c++  java
  • Swift

    使用UILocalNotification可以很方便的实现消息的推送功能。我们可以设置这个消息的推送时间,推送内容等。

    当推送时间一到,不管用户在桌面还是其他应用中,屏幕上方会都显示出推送消息。

    1,推送消息的发送

     原文:Swift - 本地消息的推送通知(附样例)  原文:Swift - 本地消息的推送通知(附样例)

    --- AppDelegate.swift ---

     
    import UIKit
     
    @UIApplicationMain
    class AppDelegateUIResponderUIApplicationDelegate {
     
        var window: UIWindow?
     
        func application(application: UIApplication,
            didFinishLaunchingWithOptions launchOptions: [NSObjectAnyObject]?) -> Bool {
            //开启通知
            let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound],
                categories: nil)
            application.registerUserNotificationSettings(settings)
            return true
        }
     
        func applicationWillResignActive(application: UIApplication) {
        }
     
        func applicationDidEnterBackground(application: UIApplication) {
        }
     
        func applicationWillEnterForeground(application: UIApplication) {
        }
     
        func applicationDidBecomeActive(application: UIApplication) {
        }
     
        func applicationWillTerminate(application: UIApplication) {
        }
    }


    --- ViewController.swift ---

     
    import UIKit
     
    class ViewControllerUIViewController {
        override func viewDidLoad() {
            super.viewDidLoad()
             
            //发送通知消息
            scheduleNotification(12345);
            //清除所有本地推送
            //UIApplication.sharedApplication().cancelAllLocalNotifications()
        }
         
        //发送通知消息
        func scheduleNotification(itemID:Int){
            //如果已存在该通知消息,则先取消
            cancelNotification(itemID)
             
            //创建UILocalNotification来进行本地消息通知
            let localNotification = UILocalNotification()
            //推送时间(设置为30秒以后)
            localNotification.fireDate = NSDate(timeIntervalSinceNow: 30)
            //时区
            localNotification.timeZone = NSTimeZone.defaultTimeZone()
            //推送内容
            localNotification.alertBody = "来自hangge.com的本地消息"
            //声音
            localNotification.soundName = UILocalNotificationDefaultSoundName
            //额外信息
            localNotification.userInfo = ["ItemID":itemID]
            UIApplication.sharedApplication().scheduleLocalNotification(localNotification)
        }
         
        //取消通知消息
        func cancelNotification(itemID:Int){
            //通过itemID获取已有的消息推送,然后删除掉,以便重新判断
            let existingNotification = self.notificationForThisItem(itemID) as UILocalNotification?
            if existingNotification != nil {
                //如果existingNotification不为nil,就取消消息推送
                UIApplication.sharedApplication().cancelLocalNotification(existingNotification!)
            }
        }
         
        //通过遍历所有消息推送,通过itemid的对比,返回UIlocalNotification
        func notificationForThisItem(itemID:Int)-> UILocalNotification? {
            let allNotifications = UIApplication.sharedApplication().scheduledLocalNotifications
            for notification in allNotifications! {
                let info = notification.userInfo as! [String:Int]
                let number = info["ItemID"]
                if number != nil && number == itemID {
                    return notification as UILocalNotification
                }
            }
            return nil
        }
         
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }
    }


    2,点击推送消息的响应

    收到推送,如果点击推送内容,则会重新进入到App,这个时候会调用AppDelegate中的func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification)代理方法。
    在这个方法中我们可以根据推送的消息内容实现相关的功能。
    原文:Swift - 本地消息的推送通知(附样例)

     
    func application(application: UIApplication,
        didReceiveLocalNotification notification: UILocalNotification) {
            //设定Badge数目
            UIApplication.sharedApplication().applicationIconBadgeNumber = 0
                 
            let info = notification.userInfo as! [String:Int]
            let number = info["ItemID"]
                 
            let alertController = UIAlertController(title: "本地通知",
                    message: "消息内容:(notification.alertBody)用户数据:(number)",
                    preferredStyle: UIAlertControllerStyle.Alert)
            

            

                  let cancel = UIAlertAction(title: "取消", style: UIAlertActionStyle.Cancel, handler: nil);

            

                       alertController.addAction(cancel);

         
            self.window?.rootViewController!.presentViewController(alertController,
                    animated: true, completion: nil)
    }
  • 相关阅读:
    logstash 抓取IIS日志文件写入Elasticsearch
    logstash filter geoip 转换IP为详细地址等内容。
    windows2012 iis配置
    REST接口规范
    windows10后台启动redis
    Docsify生成文档网站
    IDEA类和方法注释自动生成(2019-08-31 21:47写)
    键盘注释
    使用git上传项目解决码云文件次数上传限制(2019-09-25 12:49编写)
    Electron之Hello world(一)
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/6478646.html
Copyright © 2011-2022 走看看