project/Kuring(공지알림)

[iOS] FCM(Firebase Cloud Message) 정리 기본

lgvv 2021. 12. 17. 15:32

[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

 

로그인 - Apple

 

idmsa.apple.com

 

여기를 눌러주세요!
Keys에서 키를 생성해주시고 (APNs 추가하고 만들어주세요!)
생성한 키에서 Key ID를 기억해주세요


💡 여기서 아주 중요한 점...! 생성할 때 Done을 바로 누르지말고 Download를 누르기

 그러면 .p8 이라는 파일이 받아질탠데, 매우 중요하게 쓰이며, 다시 다운로드 할 수 없으니 꼭 처음에 다운받아야 함.

추후에 다시 보는거 불가.

 

여기로 이동해서 내 프로젝트의 bundle id로 하나를 만들어 주세요
앱 Identifiers 생성시 여기를 함께 눌러주셔야 합니다.

 

✅ Firebase console

콘솔에서 하나의 프로젝트를 만든 후 FCM -> 프로젝트 설정을 눌러주세요
다음으로는 APN 인증 키를 등록해주시면 됩니다.

이 과정은 심플함.

생성하기 누르면 .p8 파일을 드래그해서 올려두고 keys의 key ID를 입력.

TeamID는 Membership쪽에 있음.

 

그 다음으로는 Cloud Messasing으로 이동.

메시지 보내기 버튼을 하나 있는데 그거를 클릭한 후, Xcode 프로젝트를 실행시켜 거기서 Token을 얻어서 등록합니다.

 

FCM 토큰 저기 Placeholer에 넣어주세요!
알림이 잘 도착했습니다:)

 

(참고)

https://onedaycodeing.tistory.com/92

 

IOS 파이어베이스 Push 메세지 셋팅 ( FCM )

IOS 파이어베이스로 FCM푸시 메세지 셋팅하는 방법을 알아볼게요. 우선 코코아팟이 셋팅이 되어있어야 하기때문에 게시글을 참고해주세요. https://onedaycodeing.tistory.com/88 cocoapods(코코아) 설치 및 라

onedaycodeing.tistory.com