2022 年 10 月 18 日に開催される Firebase Summit に、直接会場で、またはオンラインでご参加ください。Firebase を使用してアプリ開発を加速させ、自信を持ってアプリをリリースし、簡単にスケールする方法をご紹介します。 今すぐ申し込む

新しいビルドについてテスターに​​通知する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

オプションの Firebase App Distribution iOS および Android SDK を使用すると、アプリの新しいビルドをインストールできるようになったときに、アプリ内アラートをテスターに​​表示できます。このガイドでは、App Distribution iOS および Android SDK を使用して、テスター向けの新しいビルド アラートを作成およびカスタマイズする方法について説明します。

あなたが始める前に

Firebase を iOS プロジェクトにまだ追加していない場合は追加します。

ステップ 1 : App Distribution Tester API を有効にする

  1. Google Cloud Consoleでプロジェクトを選択します。

  2. [ Firebase App Testers API ] で、[有効にする ] をクリックします。

ステップ 2 : App Distribution をアプリに追加する

  1. プロジェクト用に作成した Podfile を開き (またはpod initを実行して作成し)、ターゲット セクション内に次の行を追加します。

    pod 'FirebaseAppDistribution'
  2. podfile のディレクトリーでpod installを実行し、作成された.xcworkspaceファイルを開きます。

  3. Google アプリ ID をエンコードします ( iOS バージョン 9 および 10 でのみ必要)。

    Google アプリ ID をエンコードする

    Info.plist fileにスニペットを含めて、 appdistribution-<encoded-google-app-id> URL スキームを追加します (Xcode で URL スキームを追加する方法については、 Apple のドキュメントを参照してください)。

    <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 をエンコードします。 Google アプリ ID はGoogleService-Info.plistファイルにあることに注意してください。たとえば、Google アプリ ID が次の場合:

    7:77777777777:ios:123456789

    エンコードされた Google アプリ ID は次のとおりです。

    7-77777777777-ios-123456789
  4. App構造体またはUIApplicationDelegateに Firebase モジュールをインポートします。

    迅速

    import FirebaseCore
    

    Objective-C

    @import FirebaseCore;
    
  5. アプリ デリゲートのapplication(_:didFinishLaunchingWithOptions:)メソッドでFirebaseApp共有インスタンスを構成します。

    迅速

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  6. 最後に、アプリを再コンパイルします。

ステップ 3 : アプリ内アラートを構成する

App Distribution SDK は、テスター向けにアプリ内ビルド アラートを設定する 2 つの方法を提供します。テスターに​​表示するビルド済みのアプリの更新とサインイン ダイアログが付属する基本的なアラート構成と、独自のユーザー インターフェイスをカスタマイズできます。 App Distribution SDK を初めて使用する場合は、最初に基本的なアラート構成を使用することをお勧めします。

基本構成

checkForUpdateを使用して、アラートをまだ有効にしていないテスターに​​、ビルド済みのアラートを有効にするダイアログを表示し、新しいビルドが利用可能かどうかを確認します。呼び出されると、メソッドは次のシーケンスを実行します。

  1. Google アカウントで App Distribution にサインインするようテスターに​​促して、テスターがアラートを有効にしているかどうかを確認します。

  2. テスターがまだアラートを有効にしていない場合は、事前に作成されたダイアログが表示されます。

    アラートの有効化は、テスト デバイスでの 1 回限りのプロセスであり、アプリの更新後も維持されます。アプリがアンインストールされるか、 signOutTesterメソッドが呼び出されるまで、アラートはテスト デバイスで有効なままになります。詳細については、メソッドのリファレンス ドキュメント ( SwiftまたはObjective-C ) を参照してください。

  3. テスターがインストールするために新しく利用可能なビルドをチェックします。

アプリの任意の時点でcheckForUpdate()を呼び出すことができます。たとえば、アプリのルート ビューのonAppear(perform:)checkForUpdate()を含めることで、起動時に新しく利用可能なビルドをインストールするようテスターに​​促すことができます。

次の例では、テスターがアラートを有効にして新しいビルドにアクセスできるかどうかを確認し、アクセスできる場合は、ビルドがインストール可能になったときにダイアログを表示します。

迅速

注:この製品は、macOS、Mac Catalyst、tvOS、または watchOS ターゲットでは使用できません。
AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
  if error != nil {
      // Handle error
      return
  }

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

Objective-C

注:この製品は、macOS、Mac Catalyst、tvOS、または watchOS ターゲットでは使用できません。
[[FIRAppDistribution appDistribution]
  checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
                                 NSError *_Nullable error) {
  if (error) {
    // Handle error
    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];
  }
}];

詳細設定

メソッドsignInTester()およびisTesterSignedInを使用すると、テスターのサインイン エクスペリエンスをより柔軟にカスタマイズできるため、アプリのルック アンド フィールにより適合させることができます。

次の例では、テスターが Firebase App Distribution テスター アカウントに既にサインインしているかどうかを確認するため、まだサインインしていないテスターに​​のみサインイン UI を表示することを選択できます。テスターがサインインしたら、次のことができます。 checkForUpdate()を呼び出して、テスターが新しいビルドにアクセスできるかどうかを確認します。

迅速

注:この製品は、macOS、Mac Catalyst、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
  })
}

Objective-C

注:この製品は、macOS、Mac Catalyst、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()を含むその他のメソッドについては、 SwiftおよびObjective-Cの App Distribution リファレンス ドキュメントを参照してください。

ステップ 4 : 実装をビルドしてテストする

最後に、アプリをビルドし、Firebase コンソールを使用してテスターに​​ビルドを配布して実装をテストします。

次のような一般的な問題のヘルプについては、 App Distribution のトラブルシューティング ガイドにアクセスしてください。

  • テスターがアプリ内アラートを受信しない
  • テスターが Google に複数回サインインするよう求められる