SeSAC_iOS_Day 56 | TIL
📂 Push Notification
前はWando!プロジェクトの進行中にlocalnotificationを開発する必要がありますが、remote notificationとlocalnotificationを区別していません.remote notificationを勉強して、もう少しでプロジェクトに接続するところでした...あの时の勉强の部分を振り返って、今日は宿题を复习します...🙃
✔️ APNs(Apple Push Notification Provider)
:各デバイスに送信するメッセージを受信し、信頼性を確認し、各デバイス->すべてのプッシュ通知の仲介センターにプッシュ通知を送信します.
プロバイダがAPNsにメッセージを送信→APNs上の証明書が信頼できるプロバイダであることを確認→各デバイスに通知を送信
→APNsはプロバイダとデバイス間のそれぞれの証明書が必要
✔️ Provider ↔ APNs Token-based provider connection trust Certificate-based provider connection trust
:Appleが提供するベンダー証明書の使用方法(Bundle Identifierをターゲット)→ (p 8をターゲット)
プロバイダはTLSをAPNsサーバ に接続する. APNs発行証明書 Apple—提供されるProvider Certificateを含むAPNsに送信 証明書が有効である場合、両者の間に接続が確立される ✔️ APNs ↔ Device
各デバイスには暗号化証明書と個人暗号化鍵があります.は、デバイスのオペレーティングシステムに内蔵され、KeyChainに格納される APNs証明書と鍵に基づいてデバイス接続の検証と検証
接続を設定すると、アプリケーションはAPNに登録され、リモート通知用のアプリケーション固有のデバイストークンが取得されます.
APNsはアプリケーションごとにトークンを発行し、NSDataタイプとして符号化する.APNs上でのみ復号 デバイストークンを受信すると、プロバイダに接続してトークンを渡す必要があります.アプリでプッシュ通知を送るためには必ずデバイストークンを含めて! プロバイダは、デバイストークンを受信した後、デバイスにプッシュ通知を送信することができる. APNsもこのトークンを受け取り、受信者と送信者が信頼されている場合、プッシュ通知が送信されます.
✔勘定科目Local Notificationの設定が必要なプロセス Apple Developer Site
1-1. Push通知を送信するアプリケーションのアプリケーション識別子を登録します.
1-2. Push通知認証鍵 の発行開発者アカウントを購入すると、開発/導入キーは に自動的に発行されます.しかし、プッシュ通知の認証鍵を区別するため、 を追加配布してダウンロード(p 8形式)する必要がある. p 8は公開鍵であり、複数のアプリケーションで使用でき、期限切れもありません.p 12は秘密鍵であり、各アプリケーションに必要とされる.1年ごとに更新します. p 8 vsp 12:p 12はp 8の出現後に使用されず、p 8 の使用を推奨する. Xcode App - Capabilities プッシュ通知は、バックグラウンドモード を追加する必要がある. Firebaseバインド
3-1. プロジェクト設定-クラウドメッセージ-APNs認証鍵(鍵IDとチームID)のアップロード
3-2. コード実装(AppDelegate) 登録通知(リクエスト権限)&u n U s erNotificationCenter Delegateプロトコル Firebaseは エージェント設定&メッセージングプロトコルを採用コード は、登録されたトークンが更新されるたびに監視するために使用される APNトークンをFCM登録トークン にマッピングする Foreground時のアラーム処理(ローカル/リモート同一)
前はWando!プロジェクトの進行中にlocalnotificationを開発する必要がありますが、remote notificationとlocalnotificationを区別していません.remote notificationを勉強して、もう少しでプロジェクトに接続するところでした...あの时の勉强の部分を振り返って、今日は宿题を复习します...🙃
✔️ APNs(Apple Push Notification Provider)
:各デバイスに送信するメッセージを受信し、信頼性を確認し、各デバイス->すべてのプッシュ通知の仲介センターにプッシュ通知を送信します.
プロバイダがAPNsにメッセージを送信→APNs上の証明書が信頼できるプロバイダであることを確認→各デバイスに通知を送信
→APNsはプロバイダとデバイス間のそれぞれの証明書が必要
✔️ Provider ↔ APNs
:Appleが提供するベンダー証明書の使用方法(Bundle Identifierをターゲット)→
各デバイスには暗号化証明書と個人暗号化鍵があります.
✔勘定科目Local Notificationの設定が必要なプロセス
1-1. Push通知を送信するアプリケーションのアプリケーション識別子を登録します.
1-2. Push通知認証鍵
3-1. プロジェクト設定-クラウドメッセージ-APNs認証鍵(鍵IDとチームID)のアップロード
3-2. コード実装(AppDelegate)
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)")
// 화면에 보여줄 필요가 없기 때문에 삭제하면 됨
// self.fcmRegTokenMessage.text = "Remote FCM registration token: \(token)"
}
}
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
)
// TODO: If necessary send token to application server.
// Note: This callback is fired at each app startup and whenever a new token is generated.
}
func application(application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Messaging.messaging().apnsToken = deviceToken
}
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler([.alert, .badge, .sound])
}
Reference
この問題について(SeSAC_iOS_Day 56 | TIL), 我々は、より多くの情報をここで見つけました https://velog.io/@hope1053/SeSACiOSDay-56-TILテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol