8 UserNotification

Swift 3.0 // // ViewController.swift // UIKit008 // // Copyright © 2016年 FaBo, Inc. All rights reserved. // import UIKit import UserNotifications class ViewController: UIViewController { private let BUTTON_NORMAL: Int = 1 private let BUTTON_FIRE: Int = 2 override func viewDidLoad() { super.viewDidLoad() // Notificationの表示許可をもらう. let center = UNUserNotificationCenter.current() center.requestAuthorization(options: [.alert, .sound]) { (granted, error) in } // すぐにNotificationを発火するボタン. let buttonWidth: CGFloat = 200 let buttonHeight: CGFloat = 80 let posX: CGFloat = (self.view.bounds.width - buttonWidth) / 2 let posY: CGFloat = 200 let myButton: UIButton = UIButton(frame: CGRect(x: posX, y: posY, width: buttonWidth, height: buttonHeight)) myButton.backgroundColor = UIColor.orange myButton.layer.masksToBounds = true myButton.layer.cornerRadius = 20.0 myButton.tag = BUTTON_NORMAL myButton.setTitle("Notification", for: .normal) myButton.addTarget(self, action: #selector(onClickMyButton(sender:)), for: .touchDown) view.addSubview(myButton) // 時間をおいてNotificationを発火するボタン. let posFireX: CGFloat = (self.view.bounds.width - buttonWidth) / 2 let posFireY: CGFloat = 400 let myFireButton: UIButton = UIButton(frame: CGRect(x: posFireX, y: posFireY, width: buttonWidth, height: buttonHeight)) myFireButton.backgroundColor = UIColor.blue myFireButton.layer.masksToBounds = true myFireButton.layer.cornerRadius = 20.0 myFireButton.tag = BUTTON_FIRE myFireButton.setTitle("Fire Notification", for: .normal) myFireButton.addTarget(self, action: #selector(onClickMyButton(sender:)), for: .touchDown) view.addSubview(myFireButton) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } /* ボタンイベント. */ internal func onClickMyButton(sender: UIButton) { print("onClickMyButton") if sender.tag == BUTTON_NORMAL { showNotification() } else if sender.tag == BUTTON_FIRE { showNotificationFire() } } /* Notificationを表示. */ private func showNotification() { print("showNotification") // Notificationを生成. let content = UNMutableNotificationContent() // Titleを代入する. content.title = "Title1" // Bodyを代入する. content.body = "Hello Notification" // 音を設定する. content.sound = UNNotificationSound.default() // Requestを生成する. let request = UNNotificationRequest.init(identifier: "Title1", content: content, trigger: nil) // Noticationを発行する. let center = UNUserNotificationCenter.current() center.add(request) { (error) in print(error) } } /* Notificationを表示(10秒後) */ private func showNotificationFire() { // Notificationを生成. let content = UNMutableNotificationContent() // Titleを代入する. content.title = "Title1" // Bodyを代入する. content.body = "Hello Notification" // 音を設定する. content.sound = UNNotificationSound.default() // Triggerを生成する. let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: 5, repeats: false) // Requestを生成する. let request = UNNotificationRequest.init(identifier: "Title1", content: content, trigger: trigger) // Noticationを発行する. let center = UNUserNotificationCenter.current() center.add(request) { (error) in print(error) } } } Swift 2.3 // // ViewController.swift // UIKit008 // // Copyright © 2016年 FaBo, Inc. All rights reserved. // import UIKit class ViewController: UIViewController { private let BUTTON_NORMAL: Int = 1 private let BUTTON_FIRE: Int = 2 override func viewDidLoad() { super.viewDidLoad() // アラートの表示許可をもらう. let setting = UIUserNotificationSettings(forTypes: [.Sound, .Alert], categories: nil) UIApplication.sharedApplication().registerUserNotificationSettings(setting) // すぐにNotificationを発火するボタン. let buttonWidth: CGFloat = 200 let buttonHeight: CGFloat = 80 let posX: CGFloat = (self.view.bounds.width - buttonWidth) / 2 let posY: CGFloat = 200 let myButton: UIButton = UIButton(frame: CGRectMake(posX, posY, buttonWidth, buttonHeight)) myButton.backgroundColor = UIColor.orangeColor() myButton.layer.masksToBounds = true myButton.layer.cornerRadius = 20.0 myButton.tag = BUTTON_NORMAL myButton.setTitle("Notification", forState: .Normal) myButton.addTarget(self, action: #selector(onClickMyButton(_:)), forControlEvents: .TouchDown) view.addSubview(myButton) // 時間をおいてNotificationを発火するボタン. let posFireX: CGFloat = (self.view.bounds.width - buttonWidth) / 2 let posFireY: CGFloat = 400 let myFireButton: UIButton = UIButton(frame: CGRectMake(posFireX, posFireY, buttonWidth, buttonHeight)) myFireButton.backgroundColor = UIColor.blueColor() myFireButton.layer.masksToBounds = true myFireButton.layer.cornerRadius = 20.0 myFireButton.tag = BUTTON_FIRE myFireButton.setTitle("Fire Notification", forState: .Normal) myFireButton.addTarget(self, action: #selector(onClickMyButton(_:)), forControlEvents: .TouchDown) view.addSubview(myFireButton) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } /* ボタンイベント. */ internal func onClickMyButton(sender: UIButton) { print("onClickMyButton") if sender.tag == BUTTON_NORMAL { showNotification() } else if sender.tag == BUTTON_FIRE { showNotificationFire() } } /* Notificationを表示. */ private func showNotification() { print("showNotification") // Notificationを生成. let myNotification: UILocalNotification = UILocalNotification() // メッセージを代入する. myNotification.alertBody = "TEST1" // Timezoneを設定する. myNotification.timeZone = NSTimeZone.defaultTimeZone() // Noticationを発行する. UIApplication.sharedApplication().scheduleLocalNotification(myNotification) } /* Notificationを表示(10秒後) */ private func showNotificationFire() { print("showNotificationFire") // Notificationを生成. let myFireNotification: UILocalNotification = UILocalNotification() // メッセージを代入する. myFireNotification.alertBody = "TEST2" // 再生サウンドを設定する. myFireNotification.soundName = UILocalNotificationDefaultSoundName // Timezoneを設定する. myFireNotification.timeZone = NSTimeZone.defaultTimeZone() // 10秒後に設定する. myFireNotification.fireDate = NSDate(timeIntervalSinceNow: 10) // Notificationを発行する. UIApplication.sharedApplication().scheduleLocalNotification(myFireNotification) } } 2.3と3.0の差分 UILocalNotificationがDepricateにて、UNUserNotificationCenterに変更 Reference

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.