Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

백그라운드 Apple 앱에 테스트 메시지 보내기

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

FCM을 시작하려면 앱이 기기의 백그라운드에 있을 때 알림 작성기 에서 개발 기기로 테스트 알림 메시지를 보내는 가장 간단한 사용 사례를 구축하세요. 이 페이지에는 설정에서 확인까지 이를 달성하기 위한 모든 단계가 나열되어 있습니다. FCM용 Apple 클라이언트 앱을 설정한 경우 이미 완료한 단계를 다룰 수 있습니다.

Apple 프로젝트에 Firebase 추가

이 섹션에서는 이미 앱에 다른 Firebase 기능을 사용 설정한 경우 완료했을 수 있는 작업에 대해 설명합니다. 특히 FCM의 경우 APN 인증 키를 업로드 하고 원격 알림에 등록 해야 합니다.

전제 조건

  • 다음을 설치합니다.

    • Xcode 13.3.1 이상
  • 프로젝트가 다음 요구 사항을 충족하는지 확인하십시오.

    • 프로젝트는 다음 플랫폼 버전 이상을 대상으로 해야 합니다.
      • 아이폰 OS 11
      • 맥OS 10.13
      • tvOS 12
      • 워치 OS 6
  • 앱을 실행할 실제 Apple 기기 를 설정하고 다음 작업을 완료하세요.

    • Apple 개발자 계정 에 대한 Apple 푸시 알림 인증 키를 얻습니다.
    • App > Capabilities 아래의 XCode에서 푸시 알림을 활성화합니다.

아직 Xcode 프로젝트가 없고 Firebase 제품을 사용해 보고 싶다면 빠른 시작 샘플 중 하나를 다운로드할 수 있습니다.

Firebase 프로젝트 만들기

Apple 앱에 Firebase를 추가하려면 먼저 앱에 연결할 Firebase 프로젝트를 만들어야 합니다. Firebase 프로젝트에 대해 자세히 알아보려면 Firebase 프로젝트 이해 를 방문하세요.

Firebase에 앱 등록

Apple 앱에서 Firebase를 사용하려면 Firebase 프로젝트에 앱을 등록해야 합니다. 앱을 등록하는 것을 종종 프로젝트에 앱을 "추가"라고 합니다.

  1. Firebase 콘솔 로 이동합니다.

  2. 프로젝트 개요 페이지 중앙에서 iOS+ 아이콘을 클릭하여 설정 워크플로를 시작합니다.

    Firebase 프로젝트에 앱을 이미 추가한 경우 앱 추가 를 클릭하여 플랫폼 옵션을 표시합니다.

  3. 번들 ID 필드에 앱의 번들 ID를 입력합니다.

  4. (선택사항) 기타 앱 정보 입력: 앱 닉네임App Store ID .

  5. 앱 등록 을 클릭합니다.

Firebase 구성 파일 추가

  1. GoogleService-Info.plist 다운로드 를 클릭하여 Firebase Apple 플랫폼 구성 파일( GoogleService-Info.plist )을 가져옵니다.

  2. 구성 파일을 Xcode 프로젝트의 루트로 이동합니다. 메시지가 표시되면 구성 파일을 모든 대상에 추가하도록 선택합니다.

프로젝트에 번들 ID가 여러 개 있는 경우 각 앱이 자체 GoogleService-Info.plist 파일을 가질 수 있도록 각 번들 ID를 Firebase 콘솔에 등록된 앱과 연결해야 합니다.

앱에 Firebase SDK 추가

Swift Package Manager를 사용하여 Firebase 종속 항목을 설치하고 관리합니다.

  1. Xcode에서 앱 프로젝트를 연 상태에서 File > Add Packages 로 이동합니다.
  2. 메시지가 표시되면 Firebase Apple 플랫폼 SDK 저장소를 추가합니다.
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Firebase 클라우드 메시징 라이브러리를 선택합니다.
  5. Firebase 클라우드 메시징에 대한 최적의 환경을 위해 Firebase 프로젝트에서 Google Analytics를 활성화 하고 앱에 Google Analytics용 Firebase SDK를 추가하는 것이 좋습니다. IDFA 수집이 없는 라이브러리 또는 IDFA 수집이 있는 라이브러리를 선택할 수 있습니다.
  6. 완료되면 Xcode는 자동으로 백그라운드에서 종속성을 해결하고 다운로드하기 시작합니다.

APNs 인증 키 업로드

APNs 인증 키를 Firebase에 업로드합니다. APNs 인증 키가 아직 없는 경우 Apple Developer Member Center 에서 하나 만드십시오.

  1. Firebase 콘솔의 프로젝트 내에서 기어 아이콘을 선택하고 프로젝트 설정 을 선택한 다음 클라우드 메시징 탭을 선택합니다.

  2. iOS 앱 구성 아래의 APNs 인증 키 에서 업로드 버튼을 클릭합니다.

  3. 키를 저장한 위치를 찾아 선택하고 열기 를 클릭합니다. 키의 키 ID를 추가하고( Apple Developer Member Center 에서 사용 가능) 업로드 를 클릭합니다.

앱에서 Firebase 초기화

애플리케이션에 Firebase 초기화 코드를 추가해야 합니다. Firebase 모듈을 가져오고 다음과 같이 공유 인스턴스를 구성합니다.

  1. UIApplicationDelegate 에서 FirebaseCore 모듈과 앱 대리인이 사용하는 다른 모든 FirebaseCore 모듈 을 가져옵니다. 예를 들어 Cloud Firestore 및 인증을 사용하려면 다음과 같이 하세요.

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    빠른

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    목표-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. 앱 대리인의 application(_:didFinishLaunchingWithOptions:) 메서드에서 FirebaseApp 공유 인스턴스를 구성합니다.

    SwiftUI

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    빠른

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    목표-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. SwiftUI를 사용하는 경우 애플리케이션 대리자를 생성하고 UIApplicationDelegateAdaptor 또는 NSApplicationDelegateAdaptor 를 통해 App 구조체에 연결해야 합니다. 앱 대리자 스위즐링도 비활성화해야 합니다. 자세한 내용은 SwiftUI 지침 을 참조하십시오.

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          

원격 알림 등록

시작 시 또는 애플리케이션 흐름의 원하는 지점에서 원격 알림을 위해 앱을 등록합니다. 다음과 같이 registerForRemoteNotifications 를 호출합니다.

빠른


UNUserNotificationCenter.current().delegate = self

let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
  options: authOptions,
  completionHandler: { _, _ in }
)

application.registerForRemoteNotifications()

목표-C


[UNUserNotificationCenter currentNotificationCenter].delegate = self;
UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
    UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
[[UNUserNotificationCenter currentNotificationCenter]
    requestAuthorizationWithOptions:authOptions
    completionHandler:^(BOOL granted, NSError * _Nullable error) {
      // ...
    }];

[application registerForRemoteNotifications];

등록 토큰에 액세스

특정 장치에 메시지를 보내려면 해당 장치의 등록 토큰을 알아야 합니다. 이 자습서를 완료하려면 알림 작성기 의 필드에 토큰을 입력해야 하므로 토큰을 검색한 후 복사하거나 안전하게 저장해야 합니다.

기본적으로 FCM SDK는 앱 실행 시 클라이언트 앱 인스턴스에 대한 등록 토큰을 생성합니다. APN 장치 토큰과 마찬가지로 이 토큰을 사용하면 앱의 특정 인스턴스에 대상 알림을 보낼 수 있습니다.

Apple 플랫폼이 일반적으로 앱 시작 시 APNs 장치 토큰을 제공하는 것과 같은 방식으로 FCM은 FIRMessagingDelegatemessaging:didReceiveRegistrationToken: 메서드를 통해 등록 토큰을 제공합니다. FCM SDK는 초기 앱 실행 중에 그리고 토큰이 업데이트되거나 무효화될 때마다 신규 또는 기존 토큰을 검색합니다. 모든 경우에 FCM SDK는 유효한 토큰을 사용하여 messaging:didReceiveRegistrationToken: 을 호출합니다.

등록 토큰은 다음과 같은 경우에 변경될 수 있습니다.

  • 앱이 새 기기에서 복원됩니다.
  • 사용자가 앱을 제거/재설치합니다.
  • 사용자가 앱 데이터를 지웁니다.

메시징 대리자 설정

등록 토큰을 받으려면 메시징 대리자 프로토콜을 구현하고 [FIRApp configure] 을 호출한 후 FIRMessagingdelegate 속성을 설정합니다. 예를 들어 애플리케이션 델리게이트가 메시징 델리게이트 프로토콜을 준수하는 경우 application:didFinishLaunchingWithOptions: 의 델리게이트를 자체로 설정할 수 있습니다.

빠른

Messaging.messaging().delegate = self

목표-C

[FIRMessaging messaging].delegate = self;

현재 등록 토큰 가져오기

등록 토큰은 messaging:didReceiveRegistrationToken: 메서드를 통해 전달됩니다. 이 메서드는 일반적으로 등록 토큰으로 앱 시작당 한 번 호출됩니다. 이 메서드가 호출되면 다음을 수행하기에 이상적인 시간입니다.

  • 등록 토큰이 새로운 것이라면 애플리케이션 서버로 보내십시오.
  • 주제에 대한 등록 토큰을 구독하십시오. 신규 구독 또는 사용자가 앱을 다시 설치한 경우에만 필요합니다.

token(completion:) 을 사용하여 토큰을 직접 검색할 수 있습니다. 어떤 식으로든 토큰 검색에 실패한 경우 null이 아닌 오류가 제공됩니다.

빠른

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)"
  }
}

목표-C

[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) {
  if (error != nil) {
    NSLog(@"Error getting FCM registration token: %@", error);
  } else {
    NSLog(@"FCM registration token: %@", token);
    self.fcmRegTokenMessage.text = 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.
}

목표-C

- (void)messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken {
    NSLog(@"FCM registration token: %@", fcmToken);
    // Notify about received token.
    NSDictionary *dataDict = [NSDictionary dictionaryWithObject:fcmToken forKey:@"token"];
    [[NSNotificationCenter defaultCenter] postNotificationName:
     @"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.
}

또는 대리자 메서드를 제공하는 대신 kFIRMessagingRegistrationTokenRefreshNotification 이라는 NSNotification 을 수신할 수 있습니다. 토큰 속성에는 항상 현재 토큰 값이 있습니다.

알림 메시지 보내기

  1. 대상 장치에 앱을 설치하고 실행합니다. Apple 기기에서는 원격 알림 수신 권한 요청을 수락해야 합니다.

  2. 앱이 기기의 백그라운드에 있는지 확인하세요.

  3. Firebase 콘솔에서 메시징 페이지 를 엽니다.

  4. 이것이 첫 번째 메시지인 경우 첫 번째 캠페인 만들기 를 선택합니다.

    1. Firebase 알림 메시지 를 선택하고 만들기 를 선택합니다.
  5. 그렇지 않으면 캠페인 탭에서 새 캠페인 을 선택한 다음 알림 을 선택합니다.

  6. 메시지 텍스트를 입력합니다. 다른 모든 필드는 선택 사항입니다.

  7. 오른쪽 창에서 테스트 메시지 보내기 를 선택합니다.

  8. FCM 등록 토큰 추가 필드에 이 가이드의 이전 섹션에서 얻은 등록 토큰을 입력합니다.

  9. 테스트 를 선택합니다.

Test 를 선택하면 대상 클라이언트 장치(백그라운드에 앱 포함)가 알림을 수신해야 합니다.

앱에 대한 메시지 전달에 대한 통찰력은 Android 앱에 대한 "노출"(사용자에게 표시되는 알림) 데이터와 함께 Apple 및 Android 기기에서 전송되고 열린 메시지 수를 기록하는 FCM 보고 대시보드 를 참조하십시오.

다음 단계

알림 메시지를 넘어 다른 고급 동작을 앱에 추가하려면 다음을 참조하세요.