pco2699’s blog

学んだコード・技術について、保存しておく場所

複数ページある場合のアプリ起動時のローカル通知の処理の設定方法

環境

つまづいたところ

LocalNotificationを実装したところ、アプリ立ち上げ中に時間になってもまったくローカル通知がなかった…

解決方法

複数ページあるiPhoneアプリの場合、ローカル通知のdelegateはAppDelegateにかく! (一つのViewControllerにuserNotificationCenterのdelegateを書いてたため、通知に音沙汰がなかったようです…)

import UserNotifications

class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {

  var window: UIWindow?
  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    
    //起動中に通知を受け取るためのdelegate設定
    UNUserNotificationCenter.current().delegate = self    
    return true
  }

// いろいろ書いてあるdelegateは省略...
  
  // アプリが foreground の時に通知を受け取った時に呼ばれるメソッド
 // AppDelegateの中にuserNotificationCenterのdelegateをかく!
  func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    completionHandler([.alert , .sound])
  }


}