Catch up on everthing we announced at this year's Firebase Summit. Learn more

앱 배포 SDK로 인앱 새 빌드 알림 설정

선택 사항인 Firebase 앱 배포 SDK를 사용하면 앱의 새 빌드를 설치할 수 있을 때 테스터에게 인앱 알림을 표시할 수 있습니다. 이 가이드에서는 앱 배포 SDK를 사용하여 테스터를 위한 새 빌드 알림을 만들고 사용자 지정하는 방법을 설명합니다.

시작하기 전에

당신이 이미하지 않은 경우, 귀하의 아이폰 OS 프로젝트에 중포 기지를 추가 .

1 단계 : 응용 프로그램 배포 테스터 API를 사용

  1. 에서 프로젝트 선택 Google 클라우드 콘솔 .

  2. 중포 기지 앱 테스터의 API에서 클릭 활성화합니다.

2 단계 : 앱에 앱 배포 추가

Swift 패키지 관리자를 사용하여 Firebase 종속 항목을 설치하고 관리합니다.

  1. 엑스 코드에서, 앱 열려있는 프로젝트, 탐색과 파일에> 스위프트 패키지> 패키지 종속성을 추가합니다.
  2. 메시지가 표시되면 Firebase Apple 플랫폼 SDK 저장소를 추가합니다.
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. 앱 배포 라이브러리를 선택합니다.
  5. 완료되면 Xcode는 백그라운드에서 종속성을 자동으로 해결하고 다운로드하기 시작합니다.

다음으로 몇 가지 구성 단계를 수행합니다.

  1. (만 아이폰 OS 버전 9 및 10에 필요)하여 Google 응용 프로그램 ID를 인코딩 :

    Google 앱 ID 인코딩

    추가 appdistribution-<encoded-google-app-id> 당신의 조각 포함하여 URL 방식 Info.plist file (참조 애플의 문서 엑스 코드에서 URL 방식을 추가하는 방법에 대한 지침) :

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>appdistribution-<encoded-google-app-id></string>
            </array>
        </dict>
    </array>
    

    그런 다음 콜론(:)을 대시(-)로 바꿔 Google 앱 ID를 인코딩합니다. 당신의 구글 앱 ID는 당신에 위치하고 있습니다 GoogleService-Info.plist 파일입니다. 예를 들어 Google 앱 ID가 다음과 같은 경우:

    7:77777777777:ios:123456789

    인코딩된 Google 앱 ID는 다음과 같습니다.

    7-77777777777-ios-123456789
  2. 당신의 중포 기지 모듈을 가져 UIApplicationDelegate :

    빠른

    참고 :이 제품은 맥 OS, 맥 촉매, tvOS 또는 watchOS 대상에 사용할 수 없습니다.

    import Firebase
    

    오브젝티브-C

    참고 :이 제품은 맥 OS, 맥 촉매, tvOS 또는 watchOS 대상에 사용할 수 없습니다.

    @import Firebase;
    
  3. 구성합니다 FirebaseApp 일반적으로 앱의에서, 인스턴스를 공유 application:didFinishLaunchingWithOptions: 방법 :

    빠른

    참고 :이 제품은 맥 OS, 맥 촉매, tvOS 또는 watchOS 대상에 사용할 수 없습니다.

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

    오브젝티브-C

    참고 :이 제품은 맥 OS, 맥 촉매, tvOS 또는 watchOS 대상에 사용할 수 없습니다.

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  4. 마지막으로 앱을 다시 컴파일합니다.

3 단계 : 구성의 인앱 경고

앱 배포 SDK는 테스터를 위한 인앱 빌드 알림을 설정하는 두 가지 방법을 제공합니다. 하나는 테스터에게 표시할 사전 빌드된 로그인 대화 상자와 함께 제공되는 기본 알림 구성이고 다른 하나는 테스터에게 표시할 수 있는 고급 알림 구성입니다. 사용자 인터페이스(UI)를 사용자 정의합니다. 앱 배포 SDK를 처음 사용하는 경우 먼저 기본 경고 구성을 사용하는 것이 좋습니다.

기본 구성

사용 checkForUpdate 아직 알림을 사용하도록 설정하지 않은 테스터 경고 대화를 가능하게 사전 구축 된 표시 한 다음 새 빌드를 사용할 수 있는지 확인합니다. 호출되면 메서드는 다음 시퀀스를 적용합니다.

  1. 테스터가 Google 계정으로 앱 배포에 로그인하라는 메시지를 표시하여 알림을 활성화했는지 확인합니다.

  2. 테스터가 아직 경고를 활성화하지 않은 경우 사전 구축된 대화를 표시합니다.

    경고 활성화는 테스트 장치에서 일회성 프로세스이며 앱 업데이트 동안 지속됩니다. 경고는 두 응용 프로그램이 제거 될 때까지 테스트 장치에서 활성화 상태로 유지, 또는 때까지 signOutTester 메서드가 호출됩니다. 메소드의 참조 문서 (참조 스위프트 또는 목표 - C을 자세한 정보).

  3. 테스터가 설치할 새로 사용 가능한 빌드를 확인합니다.

당신은 포함 할 수 checkForUpdate 앱에서 언제든지. 예를 들어, 사용 가능한 새 포함하여 시작시 빌드 설치 테스터 메시지를 표시 할 수 checkForUpdateviewDidAppearUIViewController .

다음 예는 테스터가 경고를 활성화하고 새 빌드에 액세스할 수 있는지 여부를 확인하고, 그렇다면 빌드를 설치할 수 있을 때 대화 상자를 표시합니다.

빠른

참고 :이 제품은 맥 OS, 맥 촉매, tvOS 또는 watchOS 대상에 사용할 수 없습니다.
AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
  guard let release = release else {
    return
  }

  // Customize your alerts here.
  let title = "New Version Available"
  let message = "Version \(release.displayVersion)(\(release.buildVersion)) is available."
  let uialert = UIAlertController(title: title,message: message, preferredStyle: .alert)

  uialert.addAction(UIAlertAction(title: "Update", style: UIAlertAction.Style.default) {
    _ in
    UIApplication.shared.open(release.downloadURL)
  })
  uialert.addAction(UIAlertAction(title: "Cancel", style: UIAlertAction.Style.cancel) {
    _ in
  })

  // self should be a UIViewController.
  self.present(uialert, animated: true, completion: nil)
})

오브젝티브-C

참고 :이 제품은 맥 OS, 맥 촉매, tvOS 또는 watchOS 대상에 사용할 수 없습니다.
[[FIRAppDistribution appDistribution]
  checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
                                 NSError *_Nullable error) {
  if (error) {
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Check For Update"
message:[NSString stringWithFormat:@"Error during tester sign in! %@", error.localizedDescription]
preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action) {}];

    [alert addAction:okAction];
    [self presentViewController:alert animated:YES completion:nil];

    return;
  }

  if (release) {
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"New Version Available"
message:[NSString stringWithFormat:@"Version %@ (%@) is available.", release.displayVersion,
release.buildVersion] preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction *updateAction = [UIAlertAction actionWithTitle:@"Update"
style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
      [[UIApplication sharedApplication] openURL:release.downloadURL options:@{}
completionHandler:nil];
    }];
    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel"
style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {}];
    [alert addAction:updateAction];
    [alert addAction:cancelAction];
    [self presentViewController:alert animated:YES completion:nil];
  }
}];

고급 구성

방법 signInTesterisTesterSignedIn 당신에게 더 나은 앱의 모양과 느낌을 일치시킬 수 있도록하여 테스터의 로그인 경험을 사용자 정의에 더 많은 유연성을 제공합니다.

다음 예에서는 테스터가 Firebase 앱 배포 테스터 계정에 이미 로그인했는지 확인하므로 아직 로그인하지 않은 테스터에 대해서만 로그인 UI를 표시하도록 선택할 수 있습니다. 테스터가 로그인한 후 다음을 수행할 수 있습니다. 전화 checkForUpdate 테스터가 새로운 빌드에 액세스 할 수 있는지 여부를 확인합니다.

빠른

참고 :이 제품은 맥 OS, 맥 촉매, tvOS 또는 watchOS 대상에 사용할 수 없습니다.
// Sign in a tester without automatically checking for update
if (!AppDistribution.appDistribution().isTesterSignedIn) {
  AppDistribution.appDistribution().signInTester (completion: { error in
    // completion block for signInTester
     if (error != nil) {
       // handle failed sign in
      return
     }
    // handle successful sign in
  })
}

// Only check for update if tester is already signed in - do not prompt
if (AppDistribution.appDistribution().isTesterSignedIn) {
  AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
      // completion block for check for update
  })
}

오브젝티브-C

참고 :이 제품은 맥 OS, 맥 촉매, tvOS 또는 watchOS 대상에 사용할 수 없습니다.
// Sign in a tester without automatically checking for update
if(![[FIRAppDistribution appDistribution] isTesterSignedIn]) {
  [[FIRAppDistribution appDistribution]
    signInTesterWithCompletion:^(NSError *_Nullable error) {
      // completion block for signInTester
     if (error) {
       // handle failed sign in
       return;
     }
      // handle successful sign in
  }];
}

// only check for update if tester is already signed in - do not prompt
if([[FIRAppDistribution appDistribution] isTesterSignedIn]) {
  [[FIRAppDistribution appDistribution]
        checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
                                       NSError *_Nullable error) {
     // completion block for check for update
  }];
}

비롯한 추가 방법에 대해서는 signOutTester 대한 애플리케이션 배포 참조 문서 참조 스위프트오브젝티브 C를 .

4 단계 : 빌드 및 테스트 구현을

마지막으로, 응용 프로그램을 구축하여 구현을 테스트 빌드 배포 중포 기지 콘솔을 사용하여 테스터를.

방문 응용 프로그램 배포 문제 해결 가이드 와 같은 일반적인 문제에 대한 도움말을 :

  • 테스터가 인앱 알림을 수신하지 않음
  • 테스터에게 Google에 두 번 이상 로그인하라는 메시지가 표시됨