Firebase App Distribution iOS SDK を使用して新しいアプリのリリースについてテスターにアラートを送信する - Codelab

1. 概要

「iOS アプリへの Firebase App Distribution SDK の統合」Codelab へようこそ。この Codelab では、新しいビルドがダウンロード可能になったときにアプリ内アラートをテスターに表示できるように、App Distribution SDK をアプリに追加します。基本構成とカスタム構成の両方を使用して、テスターがログインしてアップデートを受け取る方法について説明します。その後、新しいリリースを App Distribution に push し、アプリで直接新しいビルドアラートをトリガーします。

学習内容

  • App Distribution を使用してプレリリース版のアプリをライブテスターに配布する方法
  • App Distribution iOS SDK をアプリに統合する方法
  • インストールの準備ができた新しいプレリリース版ビルドが届いたときにテスターに通知する方法
  • 独自のテストニーズに合わせて SDK をカスタマイズする方法

必要なもの

このチュートリアルをどのように使用されますか?

通読のみ 通読して演習を行う

iOS アプリの作成に関するご経験について、どのように思われますか。

初心者 中級者 上級者

2. Firebase コンソール プロジェクトを作成する

新しい Firebase プロジェクトを追加

  1. Firebase にログインします。
  2. Firebase コンソールで [プロジェクトを追加] をクリックし、プロジェクトに「Firebase Codelab」という名前を付けます。

このプロジェクトでは Google アナリティクスを有効にする必要はありません。

  1. [プロジェクトの作成] をクリックします。

アプリを Firebase に追加する

こちらのドキュメントに沿って、アプリを Firebase に登録します。iOS バンドル ID として「com.google.firebase.codelab.AppDistribution.<your_name>」を使用します。

プロンプトが表示されたら、プロジェクトの GoogleService-Info.plist ファイルをダウンロードします。この値は後で使用します。

3. サンプル プロジェクトを取得する

コードのダウンロード

まず、サンプル プロジェクトのクローンを作成します。

git clone git@github.com:googlecodelabs/firebase-appdistribution-ios.git

git がインストールされていない場合は、GitHub ページから、またはこちらのリンクをクリックして、サンプル プロジェクトをダウンロードすることもできます。

依存関係をダウンロードして Xcode でプロジェクトを開く

  1. 同じディレクトリで Podfile を開きます。
cd firebase-appdistribution-ios/start
Open Podfile
  1. podfile に次の行を追加します。

Podfile

pod 'Firebase/AppDistribution'

プロジェクト ディレクトリで pod update を実行し、Xcode でプロジェクトを開きます。

pod install --repo-update
xed .

Firebase アプリに合わせてバンドル ID を更新してください

左側のメニューで [AppDistributionExample] をダブルクリックします。次に、[General] タブに移動し、Firebase アプリのバンドル ID と一致するようにバンドル ID を変更します。バンドル ID は、[プロジェクト設定] で確認できます。「com.google.firebase.codelab.AppDistribution.<your_name>」のようになります。

アプリに Firebase を追加する

先ほどダウンロードした GoogleService-Info.plist ファイルをファイル システムで見つけ、Xcode プロジェクトのルートにドラッグします。このファイルはプロジェクトの設定ページからいつでもダウンロードできます。

3cf9290805e7fdab.png

AppDistributionExample/AppDelegate.swift ファイルで、ファイルの先頭に Firebase をインポートします。

AppDistributionExample/AppDelegate.swift

import Firebase

didFinishLaunchingWithOptions メソッドに、Firebase を構成する呼び出しを追加します。

AppDistributionExample/AppDelegate.swift

FirebaseApp.configure()

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

このステップでは、Firebase App Distribution SDK をアプリに追加し、アプリの新しいビルドがインストール可能になったときにアプリ内アラートをテスターに表示します。そのためには、Google Cloud コンソールで「Firebase Codelab」プロジェクトに対して Firebase App Testers API を有効にします。同じアカウントでログインし、上部のプルダウン メニューから正しいプロジェクトを選択する必要があります。

アプリ内アラートを構成する

App Distribution SDK には、テスター向けのアプリ内ビルドアラートをセットアップする方法が 2 つあります。基本的なアラート構成(テスターに表示する事前構築済みのログイン ダイアログを含む)と、高度なアラート構成(独自のユーザー インターフェース(UI)をカスタマイズ可能)です。

まず、基本的なアラートの構成から説明します。checkForUpdate を使用すると、アラートをまだ有効にしていないテスターに事前構築済みの有効化アラート ダイアログを表示し、新しいビルドが利用可能なかどうかを確認できます。テスターは、App Distribution でアプリにアクセスできるアカウントにログインすることでアラートを有効にします。このメソッドを呼び出すと、このメソッドにより次のシーケンスが実行されます。

  1. テスターがアラートを有効にしているか確認します。そうでない場合は、Google アカウントで App Distribution にログインするよう求める、事前構築済みのダイアログを表示します。

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

  1. テスターがインストールできる新たに利用可能になったビルドを確認します。リリース オブジェクトまたはエラーを返します。

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

AppDistributionViewController.swift ファイルで、ファイルの先頭に Firebase をインポートします。

AppDistributionViewController.swift

import Firebase

AppDistributionExample/AppDistributionViewController.swift を開き、次のように行を viewDidAppear メソッドにコピーします。

AppDistributionViewController.swift

 override func viewDidAppear(_ animated: Bool) {
    checkForUpdate()
 }

次に、checkForUpdate() メソッドを実装しましょう。

AppDistributionViewController.swift

  private func checkForUpdate() {
    AppDistribution.appDistribution().checkForUpdate(completion: { [self] release, error in
      var uiAlert: UIAlertController

      if error != nil {
        uiAlert = UIAlertController(title: "Error", message: "Error Checking for update! \(error?.localizedDescription ?? "")", preferredStyle: .alert)
      } else if release == nil {
        uiAlert = UIAlertController(title: "Check for Update", message: "No releases found!!", preferredStyle: .alert)
        uiAlert.addAction(UIAlertAction(title: "Ok", style: UIAlertAction.Style.default))
      } else {
        guard let release = release else { return }

        let title = "New Version Available"
        let message = "Version \(release.displayVersion)(\(release.buildVersion)) is available."
        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.present(uiAlert, animated: true, completion: nil)
    })
  }

5. アプリをダウンロードするようテスターを招待する

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

アプリをビルドする

アプリのプレリリース バージョンをテスターに配布する準備ができたら、ビルド先として [任意の iOS デバイス(arm64)] を選択し、[Product] -> [Archive] を選択します。アーカイブが作成されたら、Development ディストリビューション プロファイルを使用して、署名付きのディストリビューションを構築します。

98d8eb042c36a685.png

b2e9ccff91d761c1.png

8e815564f64d2d39.png

ビルドが完了すると、指定したフォルダに IPA ファイルと一部のログファイルが保存されます。次のステップで、IPA ファイルをテスターに配布します。

アプリのビルド中に問題が発生した場合は、Apple のコード署名に関するドキュメントでトラブルシューティングの手順をご覧ください。

アプリをテスターに配布する

アプリをテスターに配布するには、Firebase コンソールを使用して IPA ファイルをアップロードします。

  1. Firebase コンソールの [App Distribution] ページを開きます。指示に従って Firebase プロジェクトを選択します。
  2. [始める] を押します。

e4671bd304ecfe47.png

  1. [リリース] ページで、配布するアプリをプルダウン メニューから選択します。

8a3da2939b9746f4.png

  1. アプリの IPA ファイルをコンソールにドラッグしてアップロードします。
  2. アップロードが完了したら、ビルドを受け取るテスター グループと個々のテスターを指定します。(招待状を受け取るメールアドレスを追加します)。次に、ビルドのリリースノートを追加します。テスター グループの作成について詳しくは、テスターを管理するをご覧ください。

de63e3c3c64f909e.png

  1. [配布] をクリックして、テスターがビルドを利用できるようにします。

b6e75dc216fc3731.png

自分自身をリリースのテスターとして追加する

これで、アプリのリリースに追加したテスターを Firebase コンソールで確認できるようになりました。

eb61c6be96ff3a11.png

メールアドレスを入力したので、アプリのテストを案内するメールが Firebase App Distribution から届きます。これで最初のテスターになりました。テストデバイスでテスターとして設定するには、以下の操作に進みましょう。

テストデバイスを登録する

Ad Hoc リリースをダウンロードしてテストするには、まずテストデバイスを登録する必要があります。

  1. iOS のテストデバイスで、Firebase App Distribution から送信されたメールを開き、[使ってみる] リンクをタップします。Safari でリンクを開きます。
  2. 表示された Firebase App Distribution テスター ウェブアプリで、Google アカウントでログインして [招待に応じる] をタップします。

4d1af345ef944620.png

招待されたリリースが表示されます。

  1. [デバイスを登録] をタップして UDID を Firebase と共有し、アプリのプロビジョニング プロファイルを後で更新できるようにします。

fd141215e54a938d.png

  1. 手順に沿って、設定に移動してプロファイルをダウンロードし、UDID を共有します。

App Distribution に戻ると、リリースが [Device registration] とマークされるようになりました。

fe93d649dfa25877.png

これで、テスターの UDID がデベロッパーと共有されました。アプリの新しいバージョンをテスターにビルドするかは、デベロッパーが行います。

コンソールでテスター情報を表示する

Firebase コンソールでデベロッパーの表示に戻ると、テスターがリリースの下に [Accepted] と表示されます。

1bef6f182c1c58f9.png

お客様が使用しているデバイスがプロビジョニング プロファイルにまだ含まれていない場合は、デベロッパーとしてメールが届きます。追加する新しい UDID が通知されます。すべての UDID をテキスト ファイルとしてエクスポートすることもできます。

  1. すべての UDID をエクスポートするには、[テスターとグループ] タブを開きます。

2745d49a6abc47fe.png

  1. [Export Apple UDIDs] をクリックします。

cb45477f8cc436ba.png

このファイルには、テストデバイスの UDID が含まれている必要があります。

Device ID            Device Name                            Device Platform
1234567890     tester.app.distribtuion@gmail.com - iPhone SE 2nd Gen        ios

このようなメールが届いたら、次の手順に沿ってプロビジョニング プロファイルを更新して UDID を追加し、新しいビルドをテスターに配布します。

  1. デバイスを Apple デベロッパー ポータルに追加します。
  • オプション 1: デバイスの UDID を CSV ファイルとしてインポートする。App Distribution ダッシュボードの [テスターとグループ] タブで、[すべてのテスター] を選択し、[Apple UDID をエクスポート] をクリックして CSV ファイルをダウンロードします。次に、[複数のデバイスを登録] オプションを使用して、ファイルを Apple デベロッパー アカウントにインポートします。詳しくは、Apple のドキュメントをご覧ください。なお、Apple デベロッパー アカウントで 1 年間にインポートできるデバイスの数は限られている場合があります。
  • オプション 2: UDID をメールで収集して入力する。Apple デベロッパー ポータルの [Add Devices] ページで、受信したメールに記載されている新しい UDID を登録します。

ffb74294e68ee1c8.png

  1. 登録済みのデバイスをプロビジョニング プロファイルに追加します。
  2. プロビジョニング プロファイルをダウンロードし、それを使用してアプリを再構築します。登録済みのデバイスを更新するためだけに再ビルドする場合は、ビルド番号やバージョンを更新しないでください。
  3. Firebase コンソールまたは CLI からアプリを再配布します。同じビルド番号とバージョンのビルドをすでに配信している場合は、新しく登録したデバイスのユーザーにのみ通知メールが届きます。

テストデバイスからリリースをダウンロードする

リリースにテストデバイスの UDID が追加され、テストデバイスでアプリをダウンロードしてインストールできるようになりました。新しいリリースに UDID が追加されると、App Distribution からテスターにメールが送信されます。

a4049260bae2850b.png

  1. テストデバイスで、メールに記載されているリンクまたはデバイスのホーム画面のアイコンを使用して、App Distribution テスター ウェブアプリに戻ります。

UDID Codelab アプリに移動すると、リリースをダウンロードする準備ができていることがわかります。

dad6d03b6ad78746.png

  1. 実機を使用している場合は、[Download] を押してアプリをインストールして実行します。
  2. アプリが起動すると、新しいビルドアラートを有効にするように求められます。[ON にする] を選択します

6e3540a2900734e6.png

  1. その後、ログインが求められます。[続行] をクリックします。

82d90d7935bfaea0.png

  1. テスター アカウントでログインします。

13bee1d03fa94ebf.png

  1. アプリに戻ります。次回アプリを実行するときに、ログインしたりアラートを承認したりする必要はありません。

815d6757eb5f6327.png

テスターにアップデートを配信する

  1. ビルド番号を「2」に更新します。

861aa63ebbc6ec54.png

  1. ビルド先として [Any iOS Device (arm64)] を選択し、[Product] -> [Archive] を選択します。アーカイブが生成されたら、Development ディストリビューション プロファイルを使用して、署名付きのディストリビューションを構築します。
  2. ビルドが完了すると、指定したフォルダに IPA ファイルと一部のログファイルが保存されます。この新しい IPA を Firebase コンソールにアップロードし、メールアドレスを再度テスターとして追加して配信します。

b6e75dc216fc3731.png

テストビルド アラート

  1. アプリが開いていた場合は、閉じていることを確認します。アプリを再起動します。
  2. アプリが再起動すると、「新しいバージョンが利用可能です」というアラートが表示されます。

3bd532992df458e6.png

  1. [更新] をクリックして最新バージョンを入手してください。
  2. 次の画面で [インストール] をクリックします。

3a761d8fa4b79d33.png

  1. お疲れさまでした。また、組み込みのアラートを設定してアプリを更新できました。

6. テスターのログインのカスタマイズ

signInTester/signOutTester メソッドと isTesterSignedIn メソッドを使用すると、テスターのログイン エクスペリエンスを柔軟にカスタマイズできるため、アプリのデザインに合わせてカスタマイズできます。

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

checkForUpdate() 呼び出しをコメントアウトして、viewDidAppea での更新の自動チェックを無効にしましょう。

AppDistributionViewController.swift

 override func viewDidAppear(_ animated: Bool) {
    // checkForUpdate()
 }

代わりに、checkForUpdateButtonClicked() で checkForUpdate() を呼び出します。

 @objc func checkForUpdateButtonClicked() {
    checkForUpdate()
 }

次に、signInOutButtonClicked() メソッドを実装しましょう。このメソッドは、ユーザーがログアウトしている場合はログインし、すでにログインしている場合はログアウトします。

AppDistributionViewController.swift

 @objc func signInOutButtonClicked() {
    if isTesterSignedIn() {
      AppDistribution.appDistribution().signOutTester()

      self.configureCheckForUpdateButton()
      self.configureSignInSignOutButton()
      self.configureSignInStatus()

    } else {
      AppDistribution.appDistribution().signInTester(completion: { error in
        if error == nil {
          self.configureCheckForUpdateButton()
          self.configureSignInSignOutButton()
          self.configureSignInStatus()
        } else {
          let uiAlert = UIAlertController(title: "Custom:Error", message: "Error during tester sign in! \(error?.localizedDescription ?? "")", preferredStyle: .alert)
          uiAlert.addAction(UIAlertAction(title: "Ok", style: UIAlertAction.Style.default) {
            _ in
          })

          self.present(uiAlert, animated: true, completion: nil)
        }
      })
    }
  }

最後に、isTesterSignedI メソッドを実装しましょう。

AppDistributionViewController.swift

 private func isTesterSignedIn() -> Bool {
    return AppDistribution.appDistribution().isTesterSignedIn
 }

実装をビルドしてテストする

7. お疲れさまでした

Firebase App Distribution iOS SDK を使用して、「アプリ内アラートの表示」機能をアプリに組み込みました。

学習した内容

  • Firebase App Distribution
  • Firebase App Distribution の新しいアラート iOS SDK

次のステップ

詳細

質問がある場合

問題を報告する