【swift】iOSでPush通知を受取る実装

開発環境

  1. Mac OS 11.6.2
  2. Xcode 13.1

事前準備

  • Apple Developer Programの登録

developer.apple.com

  • Push通知に必要な証明書の作り方(丁寧に書かれています。)

qiita.com

Xcodeプロジェクトの設定

  1. プロジェクトには事前準備2で設定したバンドルを設定してください
  2. TARGETの設定で+CapabilityからPush Notificationsを追加してください

f:id:develop-imonari:20211223214944p:plain
f:id:develop-imonari:20211223215007p:plain
f:id:develop-imonari:20211223215147p:plain

AppDelegateの実装

  • func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) にプッシュ通知の利用許可を記載します。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // プッシュ通知の利用許可
    UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
        guard granted else { return }
        DispatchQueue.main.async {
            // プッシュ通知の登録
            UIApplication.shared.registerForRemoteNotifications()
        }
    }
    return true
}
  • プッシュ通知の登録が成功した場合のCallBack関数を記述
// プッシュ通知の登録が成功した場合CallBackされる
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    let token = deviceToken.map {
        String(format: "%.2hhx", $0)
    }.joined()
    NSLog("DeviceToken: \(token)")
}
  • プッシュ通知の登録が失敗した場合のCallBack関数を記述
// プッシュ通知の登録が失敗した場合CallBackされる
func application(_ application: UIApplication,  didFailToRegisterForRemoteNotificationsWithError error: Error) {
    NSLog("エラー: \(error)")
}

アプリを実機にインストールしてデバイストークンを取得

  • 実機を接続しアプリをインストールすると許可ダイアログが表示されるので許可する

f:id:develop-imonari:20211223224430p:plain