Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

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

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

あなたが始める前に

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

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

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

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

ステップ2 :アプリにアプリ配布を追加する

CocoaPodsを使用してFirebaseライブラリをインストールすることをお勧めします。 SDKフレームワークを直接統合することもできます。

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

    pod 'Firebase/AppDistribution'
  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. UIApplicationDelegate Firebaseモジュールをインポートします。

    迅速

    import Firebase
    

    Objective-C

    @import Firebase;
    
  5. 通常、アプリのapplication:didFinishLaunchingWithOptions: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メソッドが呼び出されるまで、アラートはテストデバイスで有効のままになります。詳細については、メソッドのリファレンスドキュメント( SwiftまたはObjective-C )を参照してください。

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

アプリの任意の時点でcheckForUpdateを含めることができます。たとえば、 UIViewController viewDidAppearcheckForUpdateを含めることで、起動時に新しく利用可能なビルドをインストールするようにテスターにUIViewControllerます。

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

有効なアラートを確認します。

迅速

AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
// Includes a pre-built enable alerts dialogue that lets your tester enable alerts.
// You can also customize your own user interface that prompts the tester to
// install a newly available distribution (refer to sample code below).
})

Objective-C

[[FIRAppDistribution appDistribution]
    checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
                                   NSError *_Nullable error) {
// Includes a pre-built enable alerts dialogue that lets your tester enable alerts.
// You can also customize your own user interface that prompts the tester to
// install a newly available distribution (refer to sample code below).
}];

新しいビルドをインストールするためのダイアログを表示します

迅速

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];
  }
}];

高度な構成

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

次の例では、テスターが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を含む追加のメソッドについては、 SwiftおよびObjective-CのsignOutTesterリファレンスドキュメントを参照してください。

ステップ4 :実装を構築してテストする

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

次のような一般的な問題については、アプリ配布トラブルシューティングガイドをご覧ください。

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