[iOS] FCM(Firebase Cloud Message) 정리 기본
과거에는 시뮬레이터에서 동작하지 않았으나, 이제는 시뮬레이터에서 테스트 가능
✅ 목차
1️⃣ AppDelegate.Swift
2️⃣ Xcode -> Targets 설정하기
3️⃣ APNs 설정하기
4️⃣ Firebase console
✅ AppDelegate.Swift
import UIKit
import Firebase
import UserNotifications
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
FirebaseApp.configure()
UNUserNotificationCenter.current().delegate = self
Messaging.messaging().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter
.current()
.requestAuthorization(
options: authOptions,completionHandler: { (_, _) in }
)
application.registerForRemoteNotifications()
return true
}
// MARK: UISceneSession Lifecycle
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
}
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
let deviceTokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)})
Messaging.messaging().apnsToken = deviceToken
}
}
extension AppDelegate : MessagingDelegate {
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
print("파이어베이스 토큰: \(String(describing: fcmToken))")
}
}
extension AppDelegate : UNUserNotificationCenterDelegate {
func userNotificationCenter(_ center: UNUserNotificationCenter,willPresent notification: UNNotification,withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler([.banner, .list, .badge, .sound])
}
func userNotificationCenter(_ center: UNUserNotificationCenter,didReceive response: UNNotificationResponse,withCompletionHandler completionHandler: @escaping () -> Void) {
completionHandler()
}
}
AppDelegate를 구성하는 가장 기본적인 부분
Xcode -> Targets 설정하기
APNs 설정
https://developer.apple.com/account/#!/welcome
💡 여기서 아주 중요한 점...! 생성할 때 Done을 바로 누르지말고 Download를 누르기
그러면 .p8 이라는 파일이 받아질탠데, 매우 중요하게 쓰이며, 다시 다운로드 할 수 없으니 꼭 처음에 다운받아야 함.
추후에 다시 보는거 불가.
✅ Firebase console
이 과정은 심플함.
생성하기 누르면 .p8 파일을 드래그해서 올려두고 keys의 key ID를 입력.
TeamID는 Membership쪽에 있음.
그 다음으로는 Cloud Messasing으로 이동.
메시지 보내기 버튼을 하나 있는데 그거를 클릭한 후, Xcode 프로젝트를 실행시켜 거기서 Token을 얻어서 등록합니다.
(참고)
https://onedaycodeing.tistory.com/92
'project > Kuring(공지알림)' 카테고리의 다른 글
[iOS] StackView Button 추가하기 (0) | 2021.12.19 |
---|---|
[iOS] SearchBar (+ RxSwift)를 활용한 커스터마이징 (0) | 2021.12.19 |
[iOS] UILabel 2줄로 표현하기 (0) | 2021.12.09 |
[iOS] TextView keyboard resignFirstResponder (0) | 2021.12.08 |
[iOS] Error Domain = NSURLErrorDomain Code = -1200 (0) | 2021.12.08 |