はじめに
プッシュ通知について何も知らなかったのでメモです
ローカル通知とリモート通知の違い
ローカル通知:この通知はユーザーのデバイス上のアプリケーション自体から直接送信されます。例えば、特定の時間になったらリマインダーを表示するなど
リモート通知(またはプッシュ通知):これらの通知は、サーバーなどのリモートシステムからデバイスへ送信されます。例えば、新しいメールが来たとき、ソーシャルメディアで新しいいいねがあったとき、またはアプリの新機能やキャンペーンなどの情報をユーザーに知らせるときなど
ローカル通知はサーバ用意しなくても通知ができるってことです
UserNotifications Framework
UserNotifications Framework:このフレームワークを使用すると、ローカル通知やリモート通知をスケジュールし、表示することができます
できるもの
通知を許可するアラートがでて
 
Buttonをタップすると
 
5秒後にこのアプリ外で通知がでます
 
最小実装
Main.storyboard
ViewContoller
import UIKit
import UserNotifications
class ViewController: UIViewController {
    @IBOutlet private weak var button: UIButton!
    override func viewDidLoad() {
        super.viewDidLoad()
        // 通知許可を求める
        let notificationCenter = UNUserNotificationCenter.current()
        notificationCenter.requestAuthorization(options: [.alert, .sound]) { (granted, error) in
            if granted {
                print("通知許可が得られました")
            }
        }
        button.setTitle("ローカル通知", for: .normal)
        button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
        
    }
    @objc func buttonTapped() {
        // 通知内容を設定
        let content = UNMutableNotificationContent()
        content.title = "通知でーす"
        content.body = "こんちわ"
        content.sound = UNNotificationSound.default
        // 5秒後に通知する
        let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
        // 通知リクエストを作成
        let request = UNNotificationRequest(identifier: "FiveSecond", content: content, trigger: trigger)
        // 通知センターに通知リクエストを登録
        let notificationCenter = UNUserNotificationCenter.current()
        notificationCenter.add(request) { (error) in
            if let error = error {
                print("通知リクエストの追加に失敗しました: \(error.localizedDescription)")
            }
        }
    }
}
このサンプルだと大きく分けて4つの部品があります
1、通知許可を求める
let notificationCenter = UNUserNotificationCenter.current()
        notificationCenter.requestAuthorization(options: [.alert, .sound]) { (granted, error) in
            if granted {
                print("通知許可が得られました")
            }
2、通知内容を設定
let content = UNMutableNotificationContent()
        content.title = "通知でーす"
        content.body = "こんちわ"
        content.sound = UNNotificationSound.default
3、いつ通知するか決める
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
4、通知を登録
let notificationCenter = UNUserNotificationCenter.current()
        notificationCenter.add(request) { (error) in
            if let error = error {
                print("通知リクエストの追加に失敗しました: \(error.localizedDescription)")
            }
終わりに
最小実装なので全部ViewControllerに書きました。
通知許可を求めるところなんかはアプリ起動時とかにアラートがでるアプリが多そうですね!
間違ってたら教えて下さい!
参考
