ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • iOS Firebase push p12 설정
    Programming/iOS 2022. 3. 9. 00:57
    반응형

    맨날 웹, 블로그 찾아보다가, 결국 내가 작성한다.

     

    p8로 만들면, 모든 앱을 컨트롤 할 수 있어서 편하긴한데 성공해본 적이 없다. 지원이 안되는 것 같다.

    시간 낭비하지 말고 p12로 설정해라.

     

     

     

    아래처럼 만드는 것이 목적이다.

     

    1. CSR(CertificateSigningRequest) 만들기

    이미 만들었을 수도 있다. finder에 CertificateSigningRequest 입력해서 만든 적 있나 찾아봐라.

     

    없다면

    "키체인 접근" 앱 들어가기 -> 상단바에 "인증서 지원" -> "인증 기관에서 인증서 요청..." -> 이메일, 이름 입력 -> "디스크에 저장됨"

     

    만든거는 나중에 다른 앱 등록할 때도 필요하니 잘 보관해놓자. 나는 바탕화면에 디렉토리하나 만들어서 보관 중

     

    2. Certificates 에서 발급

    https://developer.apple.com/account/resources/certificates/list 여기 들어가자.

     

    + 버튼 눌러서 하나 추가하자.

    아래 이미지에서 위에꺼는 dev용 아래꺼는 production 용이다. 필요에 따라서 만들어주자. 일반 배포용만 필요하면 아래꺼 눌러서 만들자.

     

    다운로드 눌러서 인증서.cer 다운받자

     

    3. p12 추출

    위에서 받은 cer 클릭하면 "키체인 접근" 이 열린다. 안열리면 직접 열어주자.

    이렇게 인증서가 보인다. 이거 오른쪽 마우스 클릭해서 내보내기 하면 된다.

    이런식으로 나오고 저장한다.

     

     

    4. Firebase 설정

    Firebase 눌러서 프로젝트 설정 눌러주자. 그 다음 탭에서 "클라우드 메시징" 들어가자

     

    앱 구성 들어가서 아래처럼 잘 추가해주자. 혹시라도 p8 미리 등록했으면 지워주자. 이거 안지우면 동작 안함.

     

     

     

    5. 프로젝트에 import FirebaseMessaging

    프로젝트에 FirebaseMessaging 등록해주자. 모르겠으면 firebase 문서보거나 해서 찾아보자.

    아래 코드 참고

    import UIKit
    import FirebaseMessaging
    import UserNotifications
    import FirebaseCore
    
    class AppDelegate: NSObject, UIApplicationDelegate {
        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
    
            FirebaseApp.configure()
            Messaging.messaging().delegate = self
    
            UNUserNotificationCenter.current().delegate = self
    
            let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
            UNUserNotificationCenter.current().requestAuthorization(
                options: authOptions,
                completionHandler: { _, _ in }
            )
    
            application.registerForRemoteNotifications()
    
    
            return true
        }
    }
    
    extension AppDelegate: UNUserNotificationCenterDelegate {
    
    }
    
    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
            )
            // 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
        }
    
    
    }

    시뮬레이터 말고, 실제 디바이스에서 앱 실행해서 token 확인해서 복사하자

     

    5. Test token 등록 및 테스트

    Firebase 에서 Messaging -> 새 알림 -> 알림 텍스트 입력 -> 테스트 메시지 전송

    들어가자

    여기에 추가하고 테스트하자. 아이폰에서 알람이 갈 것이다.

     

    안간다면 댓글 남겨주세요

    도움되면 댓글 남겨주세요~

     

    반응형

    댓글

Designed by Tistory.