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 App Delegate > MessagingDelegate extension App Delegate > UNUserNotificationCenterDelegate extension アプリケーション構築後に印刷するトークンコピー メールを直接送信し、テストを行います.
-コンソールウィンドウに移動>クラウドメッセージングをクリック テストメール送信クリック>コピーしたトークンを入力してテスト! Foregroundプッシュ通知の取得バックグラウンド受信はDefaultですが、バックグラウンド通知受信を個別に設定する必要があります.
- AppDelegate UNUserNotificationCenterDelegate extension
iOSでは、プッシュ通知を受信する方法は、ユーザーがプッシュをクリックした場合にのみ確認されます.
- AppDelegate UNUserNotificationCenterDelegate extension
ローカルでもプッシュでも=パーミッションを使用する必要があります
ユーザーの同意を前提にスタート!
1.アップルの古いシステムを管理する場所にデータを要求する(コインをください)
3.このトークンとそのトークンを持つユーザーの情報をサーバに保存する(サーバに同期)
4.トークンの保存に成功したかどうかをサーバに転送
5. Server to APNS to Device
プッシュ処理を行うには、
Naver/Cakapushプラットフォームを使用するメリット
1.ターゲットの識別性に背景パターンとプッシュ通知を追加
2.バックグラウンドモード選択時にリモート通知を選択
鍵
P8 vs P12
// 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)")
}
}
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
)
}
}
extension AppDelegate: UNUserNotificationCenterDelegate {
// 메서드 재구성을 사용 중지했다면 APN 토큰을 명시적으로 FCM 등록 토큰에 매핑
func application(application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Messaging.messaging().apnsToken = deviceToken
}
6.テストプッシュ通知-コンソールウィンドウに移動>クラウドメッセージングをクリック
- 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)
}
単独で処理しない場合は、プッシュ通知をクリックするだけでアプリケーションを開きます!Reference
この問題について(12/16 Push Noti), 我々は、より多くの情報をここで見つけました https://velog.io/@gaebokchi/1216-Push-Notiテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol