12/16 Push Noti

15711 ワード

Push Notification前提条件
  • 室iOS設備
  • シミュレータは
  • をテストできません.
  • XCode 11.4からシミュレータ受信をサポート!
  • Apple Push通知検証キー
  • 有料アップル開発者計画事前登録必須
  • XCodeでのApp>Capability
  • Push通知/バックグラウンド設定を有効にする
  • Push Notification
    ローカルでもプッシュでも=パーミッションを使用する必要があります
    ユーザーの同意を前提にスタート!
    1.アップルの古いシステムを管理する場所にデータを要求する(コインをください)
  • ユーザーを識別するためにコインが必要です.
  • Apple Push Notification System = APNS
  • 2.APNSからtokenを受信
    3.このトークンとそのトークンを持つユーザーの情報をサーバに保存する(サーバに同期)
    4.トークンの保存に成功したかどうかをサーバに転送
    5. Server to APNS to Device
  • サーバがAPNSを介してプッシュ要求
  • を行う.
    プッシュ処理を行うには、
  • の3つのトークンが一致しなければならない.
    Naver/Cakapushプラットフォームを使用するメリット
  • アンドロイドはAPNSを使用しません!
  • アヨアンドのすべての政策には、異なるデータ伝達が必要です.
  • そのためサーバは多くの要因を考慮する必要があるため、
  • プッシュプラットフォームを使用する場合は複雑ではありません
  • FCM実践
    1.ターゲットの識別性に背景パターンとプッシュ通知を追加
    2.バックグラウンドモード選択時にリモート通知を選択
  • の選択は、開発者のホームページ(developer.apple.com->account->証明書、Identificates&Profiles->Identificates)で確認できます.
  • 3.Apple Push通知認証鍵の追加
  • を発行するには、
  • の有料開発者アカウントが必要です.
  • 鍵名とAPNsチェック
  • 以前がP 12証明書である場合、現在P 8認証鍵
  • が使用されている.
    P8 vs P12
  • P 8:Public Key-複数のアプリケーションの使用可能/有効期限x
  • P 12:Private Key-アプリケーションごとに必要/失効証明書1年
  • 4.Firebase/メッセージングライブラリを追加した後、APN検証鍵を追加
  • プロジェクト概要>プロジェクト設定
  • クラウドメッセージ>アプリケーションの構成>APN認証鍵のアップロード
  • 追加された認証鍵のアップロード(Developer.apple.com->IdentifierをクリックしてチームIDを取得)
  • 5.App Delegateコードの設定
  • App Delegate > didFinishLaunchingWithOptions
  • 	// Firebase 초기화
            FirebaseApp.configure()        
            // 알림 등록 (권한)
            if #available(iOS 10.0, *) {
              // For iOS 10 display notification (sent via APNS)
              UNUserNotificationCenter.current().delegate = self
              let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]          UNUserNotificationCenter.current().requestAuthorization(
                options: authOptions,
                completionHandler: { _, _ in }
              )
            } else {
              let settings: UIUserNotificationSettings =
                UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
              application.registerUserNotificationSettings(settings)
            }
            application.registerForRemoteNotifications()        
            // 메시지 대리자 설정
            Messaging.messaging().delegate = self
            // 현재 등록 토큰 가져오기 ( 새 토큰이라면 서버에 저장 )
            Messaging.messaging().token { token, error in
              if let error = error {
                print("Error fetching FCM registration token: \(error)")
              } else if let token = token {
                print("FCM registration token: \(token)")
              }
            }
  • App Delegate > MessagingDelegate extension
  • extension AppDelegate: MessagingDelegate {
            // 토큰 갱신 모니터링
        func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
          print("Firebase registration token: \(String(describing: fcmToken))")
          let dataDict: [String: String] = ["token": fcmToken ?? ""]
          NotificationCenter.default.post(
            name: Notification.Name("FCMToken"),
            object: nil,
            userInfo: dataDict
          )
        }
    }
  • App Delegate > UNUserNotificationCenterDelegate extension
  • extension AppDelegate: UNUserNotificationCenterDelegate {
        // 메서드 재구성을 사용 중지했다면 APN 토큰을 명시적으로 FCM 등록 토큰에 매핑
        func application(application: UIApplication,
                         didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
          Messaging.messaging().apnsToken = deviceToken
        }
    6.テストプッシュ通知
  • アプリケーション構築後に印刷するトークンコピー
  • メールを直接送信し、テストを行います.
    -コンソールウィンドウに移動>クラウドメッセージングをクリック
  • テストメール送信クリック>コピーしたトークンを入力してテスト!
  • Foregroundプッシュ通知の取得
  • バックグラウンド受信はDefaultですが、バックグラウンド通知受信を個別に設定する必要があります.
    - AppDelegate UNUserNotificationCenterDelegate extension
  • // 포그라운드 수신 : willPresent (로컬/푸시 동일)
        func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
            completionHandler([.list, .banner, .badge, .sound])
        }
        // iOS14부터 .alert -> .list, .banner
    受信の確認
    iOSでは、プッシュ通知を受信する方法は、ユーザーがプッシュをクリックした場合にのみ確認されます.
    - AppDelegate UNUserNotificationCenterDelegate extension
    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
            print("사용자가 푸시를 클릭했습니다")
            print(response)
        }
    単独で処理しない場合は、プッシュ通知をクリックするだけでアプリケーションを開きます!