#はじめに
iOS15からNotification Summaryという機能が追加される。
それに伴い、設定アプリの通知設定画面に「時刻指定要約」という項目が追加された。
「時刻指定要約」をONにした場合、↓のように通知許可ダイアログに「時刻指定要約で許可」という項目が表示されるようになる。
時刻指定要約ON | 時刻指定要約OFF |
---|---|
ユーザが「時刻指定要約で許可」をタップしたかどうかで処理を分岐する場合もあるため、その判定方法を記載する。
#判定方法
UNNotificationSettings
にiOS15から追加されたscheduledDeliverySetting
を使用する。
let notificationCenter = UNUserNotificationCenter.current()
notificationCenter.requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in
if error != nil {
// エラー
}
if granted {
// 通知許可
}
notificationCenter.getNotificationSettings { settings in
switch settings.scheduledDeliverySetting {
case .enabled:
print("許可")
case .disabled:
print("許可されてない")
case .notSupported:
print("サポートされてない")
}
}
}
#注意点
- 「時刻指定要約で許可」をタップしない限り
.enabled
にならず、通常の「許可」をタップした場合は.disabled
になる。 - 「時刻指定要約で許可」をタップしても
UNNotificationSettings.authorizationStatus
は.authorized
となっており、処理を分ける場合は注意が必要である。
#終わりに
ユーザが誤って「時刻指定要約で許可」を押した場合、通知によっては即時に届かなくなるため、通知許可ダイアログを表示する際に何かしら配慮をした方がいいかもしれない。
また、「時刻指定要約で許可」を選択した状態でInterruption levels
がActive
(defaultのlevel)の通知だと常に即時通知されないようになってしまう。そのため、必要に応じてInterruption levels
をTime Sensitive
以上にする対応も必要である。
##参考