1. 概要
「iOS アプリへの Firebase App Distribution SDK の統合」Codelab へようこそ。この Codelab では、新しいビルドがダウンロード可能になったときにアプリ内アラートをテスターに表示できるように、App Distribution SDK をアプリに追加します。基本構成とカスタム構成の両方を使用して、テスターがログインしてアップデートを受け取る方法について説明します。次に、新しいリリースを App Distribution に push し、アプリ内で新しいビルドアラートをトリガーします。
学習内容
- App Distribution を使用してプレリリース版アプリをライブテスターに配布する方法
- App Distribution iOS SDK をアプリに統合する方法
- インストールの準備ができた新しいプレリリース版ビルドが届いたときにテスターに通知する方法
- 独自のテストニーズに合わせて SDK をカスタマイズする方法
必要なもの
- Xcode 12 以降
- CocoaPods 1.9.1 以降
- アドホック配布用の Apple Developer アカウント
- テスト用の物理 iOS デバイス。(ほとんどの Codelab では iOS シミュレータ アプリを使用できますが、リリースはダウンロードできません)。
このチュートリアルをどのように使用されますか?
iOS アプリの作成に関するご経験について、どのように思われますか。
2. Firebase コンソール プロジェクトの作成
新しい Firebase プロジェクトを追加
- Firebase にログインします。
- Firebase コンソールで [プロジェクトを追加] をクリックし、プロジェクトに「Firebase Codelab」という名前を付けます。
このプロジェクトでは Google アナリティクスを有効にする必要はありません。
- [プロジェクトの作成] をクリックします。
Firebase にアプリを追加する
こちらのドキュメントに沿って、アプリを Firebase に登録します。「com.google.firebase.codelab.AppDistribution.<your_name>」を使用します。iOS バンドル ID として使用します
プロンプトが表示されたら、プロジェクトの GoogleService-Info.plist
ファイルをダウンロードします。この値は後で使用します。
3. サンプル プロジェクトを入手する
コードのダウンロード
まず、サンプル プロジェクトのクローンを作成します。
git clone git@github.com:googlecodelabs/firebase-appdistribution-ios.git
git がインストールされていない場合は、GitHub ページから、またはこちらのリンクをクリックして、サンプル プロジェクトをダウンロードすることもできます。
依存関係をダウンロードして Xcode でプロジェクトを開く
- 同じディレクトリで Podfile を開きます。
cd firebase-appdistribution-ios/start Open Podfile
- 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 プロジェクトのルートにドラッグします。このファイルはプロジェクトの設定ページからいつでもダウンロードできます。
AppDistributionExample/AppDelegate.swift
ファイルで、ファイルの先頭に Firebase をインポートします。
AppDistributionExample/AppDelegate.swift
import Firebase
didFinishLaunchingWithOptions
メソッドで、Firebase を構成する呼び出しを追加します。
AppDistributionExample/AppDelegate.swift
FirebaseApp.configure()
4. App Distribution SDK を使用してアプリ内の新しいビルドアラートを設定する
このステップでは、Firebase App Distribution SDK をアプリに追加し、アプリの新しいビルドがインストール可能になったときにアプリ内アラートをテスターに表示します。そのためには、「Firebase Codelab」で Firebase App Testers API を有効にする必要があります。Google Cloud コンソールで作成します。同じアカウントでログインし、上部のプルダウン メニューから正しいプロジェクトを選択する必要があります。
アプリ内アラートを構成する
App Distribution SDK には、テスター向けのアプリ内ビルドアラートをセットアップする方法が 2 つ用意されています。基本アラート構成(テスターに表示する事前構築済みのログイン ダイアログを含む)と、高度なアラート構成(独自のユーザー インターフェース(UI)をカスタマイズ可能)です。
まず、基本的なアラートの構成から説明します。checkForUpdate
を使用すると、アラートをまだ有効にしていないテスターに事前構築済みの有効化アラート ダイアログを表示し、新しいビルドが利用可能なかどうかを確認できます。テスターは、App Distribution でアプリにアクセスできるアカウントにログインすることでアラートを有効にします。このメソッドを呼び出すと、このメソッドにより次のシーケンスが実行されます。
- テスターがアラートを有効にしているか確認します。ログインしていない場合は、Google アカウントで App Distribution にログインするよう求める事前構築済みのダイアログが表示されます。
アラートの有効化はテストデバイスで 1 回限り実行するプロセスであり、アプリがアップデートされても保持されます。アプリがアンインストールされるか、signOutTester
メソッドが呼び出されるまでは、該当のテストデバイスでアラートは有効のままです。詳細については、このメソッドのリファレンス ドキュメント(Swift または Objective-C)をご覧ください。
checkForUpdate
は、アプリ内にいつでも含めることができます。たとえば、UIViewController の viewDidAppear に checkForUpdate を含めることで、起動時に新たに利用可能なビルドをインストールするようテスターに促すことができます。
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 ディストリビューション プロファイルを使用して、署名付きのディストリビューションを構築します。
ビルドが完了すると、指定したフォルダに IPA ファイルと一部のログファイルが保存されます。次のステップで、IPA ファイルをテスターに配布します。
アプリのビルドで問題が発生した場合は、Apple のコード署名のドキュメントでトラブルシューティングの手順をご覧ください。
アプリをテスターに配布する
テスターにアプリを配布するには、Firebase コンソールを使用して IPA ファイルをアップロードします。
- Firebase コンソールの [App Distribution] ページを開きます。指示に従って Firebase プロジェクトを選択します。
- [始める] を押します。
- [リリース] ページで、配布するアプリをプルダウン メニューから選択します。
- アプリの IPA ファイルをコンソールにドラッグしてアップロードします。
- アップロードが完了したら、ビルドを受け取るテスター グループと個々のテスターを指定します。(招待状を受け取るメールアドレスを追加します)。次に、ビルドのリリースノートを追加します。テスター グループの作成について詳しくは、テスターを管理するをご覧ください。
- [配布] をクリックして、テスターがビルドを利用できるようにします。
自分自身をリリースのテスターとして追加する
これで、アプリのリリースに追加したテスターを Firebase コンソールで確認できるようになりました。
メールアドレスを入力したので、Firebase App Distribution からアプリのテストへの招待メールが届きます。これで、最初のテスターになります。テストデバイスでテスターとして設定するには、以下の操作に進みましょう。
テストデバイスを登録する
Ad Hoc リリースをダウンロードしてテストするには、まずテストデバイスを登録する必要があります。
- iOS テストデバイスで、Firebase App Distribution から送信されたメールを開き、[使ってみる] リンクをタップします。Safari でリンクを開きます。
- 表示された Firebase App Distribution テスター ウェブアプリで、Google アカウントでログインして [招待に応じる] をタップします。
招待されたリリースが表示されます。
- [デバイスを登録] をタップして UDID を Firebase と共有し、アプリのプロビジョニング プロファイルを後で更新できるようにします。
- 手順に沿って設定に移動し、プロファイルをダウンロードして UDID を共有します。
App Distribution に戻ると、リリースが「Device registration」(デバイス登録済み)とマークされるようになりました。
これで、テスターの UDID がデベロッパーと共有されました。アプリの新しいバージョンをテスターにビルドするかは、デベロッパーが行います。
コンソールでテスター情報を表示する
Firebase コンソールのデベロッパー ビューに戻ると、テスターがリリースの下に [承認済み] と表示されます。
お客様が使用しているデバイスがプロビジョニング プロファイルにまだ含まれていない場合は、デベロッパーとしてメールが届きます。追加する新しい UDID が通知されます。すべての UDID をテキスト ファイルとしてエクスポートすることもできます。
- すべての UDID をエクスポートするには、テスターを開いて[グループ] タブ。
- [Export Apple UDIDs] をクリックします。
このファイルには、テストデバイスの UDID が含まれている必要があります。
Device ID Device Name Device Platform
1234567890 tester.app.distribtuion@gmail.com - iPhone SE 2nd Gen ios
このようなメールが届いたら、次の手順に沿ってプロビジョニング プロファイルを更新して UDID を追加し、新しいビルドをテスターに配布します。
- デバイスを Apple デベロッパー ポータルに追加します。
- オプション 1: デバイスの UDID を CSV ファイルとしてインポートする。テスターとApp Distribution ダッシュボードの [グループ] タブで [すべてのテスター] を選択し、[Apple UDID をエクスポート] をクリックして CSV ファイルをダウンロードします。次に、[複数のデバイスを登録] オプションを使用して、ファイルを Apple デベロッパー アカウントにインポートします。詳しくは、Apple のドキュメントをご覧ください。なお、Apple デベロッパー アカウントで 1 年間にインポートできるデバイスの数は限られている場合があります。
- オプション 2: UDID をメールで収集して入力する。Apple デベロッパー ポータルの [Add Devices] ページで、受信したメールに記載されている新しい UDID を登録します。
- 登録済みのデバイスをプロビジョニング プロファイルに追加します。
- プロビジョニング プロファイルをダウンロードし、それを使用してアプリを再構築します。登録済みのデバイスを更新するためだけに再ビルドする場合は、ビルド番号やバージョンを更新しないでください。
- Firebase コンソールまたは CLI からアプリを再配布します。同じビルド番号とバージョンのビルドをすでに配信している場合は、新しく登録したデバイスのユーザーにのみ通知メールが届きます。
テストデバイスからリリースをダウンロードする
リリースにテストデバイスの UDID が追加され、テストデバイスでアプリをダウンロードしてインストールできるようになりました。新しいリリースに UDID が追加されると、App Distribution からテスターにメールが送信されます。
- テストデバイスで、メールに記載されているリンクまたはデバイスのホーム画面のアイコンを使用して、App Distribution テスター ウェブアプリに戻ります。
UDID Codelab アプリに移動すると、リリースをダウンロードする準備ができていることがわかります。
- 実機をお使いの場合は、[ダウンロード] をタップしてアプリをインストールし、実行します。
- アプリが起動すると、新しいビルドアラートを有効にするように求められます。[ON にする] を選択します
- その後、ログインが求められます。[続行] をクリックします。
- テスター アカウントでログインします。
- アプリに戻ります。次回アプリを実行する際は、ログインしたりアラートを承認したりする必要はありません。
テスターにアップデートを配信する
- ビルド番号を「2」に更新します。
- ビルド先として [Any iOS Device (arm64)] を選択し、[Product] > [Archive] を選択します。アーカイブが生成されたら、開発用配布プロファイルを使用して署名付きの配布をビルドします。
- ビルドが完了すると、指定したフォルダに IPA ファイルと一部のログファイルが保存されます。この新しい IPA を Firebase コンソールにアップロードし、テスターとして自分のメールアドレスを再度追加して、[配布] をクリックします。
テストビルド アラート
- アプリが開いていた場合は、閉じていることを確認します。アプリを再起動します。
- アプリが再起動すると、「新しいバージョンが利用可能です」というメッセージが表示されます。アラートです。
- [更新] をクリックします。して最新バージョンを入手してください。
- 次の画面で [インストール] をクリックします。
- これで完了です。また、組み込みのアラートを設定してアプリを更新できました。
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
- Firebase App Distribution の新しいアラート iOS SDK
次のステップ
詳細
質問がある場合
問題を報告する