プッシュ通知の取得
手順1
info.plistに Privacy - User Notifications Usage Description を追記する。
※追記理由:Alertの文言をわかりやすいものに変更する為。
手順2
AppDelegate.swiftにUserNotificationsをインポートする
import UserNotifications
手順3
フォアグラウンド(アプリが起動状態)で受け取れるようにする
※いらない人はスキップ
extension AppDelegate: UNUserNotificationCenterDelegate {
// フォアグラウンドの場合でも通知を表示する
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler([.list, .sound,])
}
}
手順4
アプリのバッジの更新、サウンド、アラートの通知に関してユーザへ確認するためのアラートを表示する
delegate忘れずに。
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) {(granted, error) in
if granted {
print("許可する")
UNUserNotificationCenter.current().delegate = self
} else {
print("許可しない")
}
}
ローカルプッシュ通知の送信
説明
インスタンス生成
let content = UNMutableNotificationContent()
各項目を入力(初期値のままでいい場合、一部省略可能)
content.title = "タイトル"
content.subtitle = "サブタイトル"
content.body = "タップしてアプリを開いてください"
content.sound = UNNotificationSound.default
トリガー作成
timeInterval : (Int)何秒後に発火させるかを定義
repeats : (bool)リピート
参考:
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 10,
repeats: false)
request作成
identifier:(String)通知毎に一意の文字が好ましい。Date()とか。
content:(UNMutableNotificationContent)
trigger:(UNTimeIntervalNotificationTrigger)
let request = UNNotificationRequest(identifier: "Timer",
content: content,
trigger: trigger)
UNUserNotificationCenterにrequest
UNUserNotificationCenter.current().add(request) { (error) in
if let error = error {
print(error.localizedDescription)
}
}
以下全文
// タイトル、本文、サウンド設定の保持
let content = UNMutableNotificationContent()
content.title = "タイトル"
content.subtitle = "サブタイトル"
content.body = "タップしてアプリを開いてください"
content.sound = UNNotificationSound.default
// seconds後に起動するトリガーを保持
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 10,
repeats: false)
// 識別子とともに通知の表示内容とトリガーをrequestに内包する
let request = UNNotificationRequest(identifier: "Timer",
content: content,
trigger: trigger)
// UNUserNotificationCenterにrequest
UNUserNotificationCenter.current().add(request) { (error) in
if let error = error {
print(error.localizedDescription)
}
}
サンプルプロジェクト
最後に
iOSアプリ開発をしています。
主にSwiftですが、最近は熱が入ってきてFlutterも🦾
色々やってます。もし良かったら見てってください。