Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

App DistributionSDKを使用してアプリ内の新しいビルドアラートを設定する

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

あなたが始める前に

あなたがまだの場合は、お使いのiOSプロジェクトにFirebaseを追加します

ステップ1:アプリケーションの配布テスターAPIを有効にします

  1. でプロジェクトを選択Googleクラウドコンソールを

  2. FirebaseアプリのテスターのAPIの下で、有効にする]をクリックします。

ステップ2:あなたのアプリへのアプリの配布を追加します。

  1. (または実行プロジェクトのために作成podfile開きpod initを作成するために)、その後、対象区間内の次の行を追加します。

    pod 'Firebase/AppDistribution'
  2. あなたのpodfileのディレクトリには、実行がpod install作成開き、 .xcworkspaceファイルを。

  3. のみのiOSバージョン9と10のために必要)にGoogleアプリIDをエンコード:

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

    追加appdistribution-<encoded-google-app-id>あなたの中にスニペットを含むことにより、URLスキームをInfo.plist file (参照AppleのドキュメントXcodeで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をエンコードします。あなたのGoogleのアプリIDは、あなたの中に配置されていることを注意GoogleService-Info.plistファイル。たとえば、GoogleアプリIDが次の場合:

    7:77777777777:ios:123456789

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

    7-77777777777-ios-123456789
  4. あなたにFirebaseモジュールをインポートUIApplicationDelegate

    迅速

    import Firebase
    

    Objective-C

    @import Firebase;
    
  5. 設定しFirebaseApp 、通常、アプリケーションの中で、インスタンスを共有application:didFinishLaunchingWithOptions:メソッドを:

    迅速

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

    Objective-C

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

ステップ3:設定アプリ内のアラート

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

基本構成

使用checkForUpdateまだ警告を有効にしていないテスターに警告ダイアログを有効にしてから、新しいビルドが利用可能であるかどうかを確認事前に構築された表示します。呼び出されると、メソッドは次のシーケンスを実行します。

  1. テスターがGoogleアカウントでAppDistributionにサインインするように求めることで、アラートが有効になっているかどうかを確認します。

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

    アラートの有効化は、テストデバイスでの1回限りのプロセスであり、アプリの更新後も継続します。アラートは、どちらかのアプリがアンインストールされるまでテストデバイス上で有効になったまま、あるいはまでsignOutTesterメソッドが呼び出されます。方法のリファレンスマニュアル(参照スウィフトまたはObjective-Cの詳細については)。

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

あなたは含めることができますcheckForUpdateあなたのアプリ内の任意の時点で。たとえば、新たに利用可能含めることによって、起動時にビルドをインストールするには、あなたのテスターを促すことができるcheckForUpdateviewDidAppearUIViewController

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

迅速

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

Objective-C

[[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 App Distributionテスターアカウントに既にサインインしているかどうかを確認します。そのため、まだサインインしていないテスターに​​対してのみサインインUIを表示するように選択できます。テスターがサインインした後、次のことができます。呼び出しcheckForUpdateテスタは新しいビルドへのアクセス権を持っているかどうかをチェックします。

迅速

// 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

// 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用アプリ配布リファレンスマニュアル参照スウィフトのObjective-Cを

ステップ4:ビルドとテスト実装

最後に、あなたのアプリケーションを構築し、して、実装をテストビルドを配布Firebaseコンソールを使用してテスターに。

訪問アプリケーションの配布のトラブルシューティングガイドのような一般的な問題、との助けのために:

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