bigmac-jp blog

web開発関連のメモ

ios10のローカル通知

ios10から追加されたUserNotificationsを使ってローカル通知を試しに実装してみた。
ちなみにUILocalNotificationはiso10から非推奨になった。

import UIKit
import UserNotifications

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        
        //通知許可設定
        let center = UNUserNotificationCenter.current()
        center.requestAuthorization(options: [.alert, .sound]){
            (granted, error)in
        }
    
        //contentの設定
        let content = UNMutableNotificationContent()
        content.title = "ローカル通知タイトル"
        content.body = "ローカル通知ボディ"
        content.sound = UNNotificationSound.default()
        
        //通知トリガー
        let trigger = UNTimeIntervalNotificationTrigger(timeInterval: (10), repeats: false)
        
        //identifier
        let requestIdentifier = "sampleRequest"
        
        let request = UNNotificationRequest(identifier: requestIdentifier, content: content, trigger: trigger)
        
        center.add(request)
        
    }
}

通知トリガーでrepeats: true にした場合にtimeIntervalが60sより早い場合(10sとか50s)はエラーになってしまうのは不明。
特に、ドキュメントには記載されていない感じだった。

上のサンプルコードは、基本的にはUILocalNotificationでも実装できたことUserNotificationsで実装されているだけ。

アプリがバックグラウンドにいる時にローカル通知がされるから、フォアグラウンドの場合は通知されない。
フォアグラウンド状態でも通知したい場合は、別途実装が必要になる。次の機会にその辺を調査する。