1。概要
Firebase App Distribution SDK を iOS アプリ Codelab に統合するへようこそ。この Codelab では、App Distribution SDK をアプリに追加して、新しいビルドがダウンロード可能になったときにテスターにアプリ内アラートを表示します。基本構成とカスタム構成の両方を使用して、テスターがサインインして更新を受け取る方法を学習します。次に、新しいリリースを App Distribution にプッシュし、アプリ内で新しいビルド アラートをトリガーします。
学習内容
- App Distribution を使用してプレリリース アプリをライブ テスターに配布する方法
- App Distribution iOS SDK をアプリに統合する方法
- インストールの準備ができた新しいプレリリース ビルドがあるときにテスターに警告する方法
- 独自のテスト ニーズに合わせて SDK をカスタマイズする方法
必要なもの
- Xcode 12 (またはそれ以上)
- CocoaPods 1.9.1 (またはそれ以降)
- アドホック配布用のApple Developer アカウント
- テスト用の物理 iOS デバイス。 ( iOS シミュレーター アプリはほとんどの Codelab で動作しますが、シミュレーターはリリースをダウンロードできません)。
このチュートリアルをどのように使用しますか?
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
- 次の行をポッドファイルに追加します。
ポッドファイル
pod 'Firebase/AppDistribution'
プロジェクト ディレクトリでpod update
を実行し、Xcode でプロジェクトを開きます。
pod install --repo-update xed .
Firebase アプリと一致するようにバンドル ID を更新します
左側のメニューで、 AppDistributionExample をダブルクリックします。次に、 [一般]タブを見つけて、バンドル ID を Firebase アプリのバンドル 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 Console で)。同じアカウントでログインし、上部のドロップダウン メニューから正しいプロジェクトを選択する必要があります。
アプリ内アラートを構成する
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)] を選択し、[製品] -> [アーカイブ] を選択します。アーカイブが作成されたら、開発配布プロファイルを使用して署名付き配布をビルドします。
ビルドが完了すると、指定したフォルダーに IPA ファイルといくつかのログ ファイルが保存されます。次の手順で IPA ファイルをテスターに配布します。
アプリのビルドで問題が発生した場合は、トラブルシューティングの手順についてApple のコード署名に関するドキュメントを参照してください。
アプリをテスターに配布する
アプリをテスターに配布するには、Firebase コンソールを使用して IPA ファイルをアップロードします。
- Firebase コンソールのApp Distribution ページを開きます。プロンプトが表示されたら、Firebase プロジェクトを選択します。
- 開始を押します
- [リリース] ページで、配布するアプリをドロップダウン メニューから選択します。
- アプリの IPA ファイルをコンソールにドラッグしてアップロードします。
- アップロードが完了したら、ビルドを受け取るテスター グループと個々のテスターを指定します。 (招待を受け取るためにメールを追加してください。) 次に、ビルドのリリース ノートを追加します。テスター グループの作成の詳細については、テスターの管理を参照してください。
- [配布] をクリックして、テスターがビルドを利用できるようにします。
自分をテスターとしてリリースに追加する
Firebase コンソールで、アプリのリリースの下に追加したテスターを確認できるようになりました。
メール アドレスを入力したので、Firebase App Distribution から、アプリをテストするよう招待するメールが届きます。あなたが最初のテスターです!以下のセクションに進み、テスト デバイスでテスターとして設定します。
テスト デバイスを登録する
アドホック リリースをダウンロードしてテストするには、最初にテスト デバイスを登録する必要があります。
- iOS テスト デバイスで、Firebase App Distribution から送信されたメールを開き、[開始する] リンクをタップします。リンクは必ずSafariで開いてください。
- 表示されるFirebase App Distributionテスター Web アプリで、Google アカウントでサインインし、 [招待を受け入れる] をタップします。
これで、招待されたリリースが表示されます。
- [デバイスの登録]をタップして UDID を Firebase と共有し、後でアプリのプロビジョニング プロファイルを更新できるようにします。
- 指示に従い、設定に移動してプロファイルをダウンロードし、UDID を共有します。
ここで、App Distribution に戻ると、リリースは「デバイス登録済み」としてマークされます。
テスターの UDID が開発者と共有されました。テスターに新しいバージョンのアプリをビルドするのは、開発者次第です。
コンソールでテスター情報を表示する
Firebase コンソールの開発者ビューに戻ると、テスターはリリースの下に「承認済み」として表示されます。
使用しているデバイスがまだプロビジョニング プロファイルに含まれていない場合は、開発者として電子メールも受け取ります。これにより、追加する必要がある新しい UDID が通知されます。すべての UDID をテキスト ファイルとしてエクスポートするオプションもあります。
- すべての UDID をエクスポートするには、[テスターとグループ] タブを開きます。
- 「Apple UDID のエクスポート」をクリックします。
このファイルには、テスト デバイスの 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 ファイルをダウンロードします。次に、Register Multiple Devices オプションを使用して、 Apple 開発者アカウントにファイルをインポートします。詳細については、Apple のドキュメントを参照してください。 Apple 開発者アカウントでは、1 年間に限られた数のデバイスしかインポートできない場合があることに注意してください。
- オプション 2: 電子メールで UDID を収集して入力します。 Apple デベロッパー ポータルの[デバイスの追加]ページで、受信したメールに記載されている新しい UDID を登録します。
- 登録済みのデバイスをプロビジョニング プロファイルに追加します。
- プロビジョニング プロファイルをダウンロードし、それを使用してアプリを再構築します。登録済みのデバイスを更新するためだけに再構築する場合は、ビルド番号またはバージョンを更新しないでください。
- Firebase コンソールまたは CLI からアプリを再配布します。同じビルド番号とバージョンのビルドを既に配布している場合、新しく登録されたデバイスのユーザーのみが通知メールを受け取ります。
テスト デバイスからリリースをダウンロードする
リリースにはテスト デバイスの UDID が含まれているため、テスト デバイスはアプリをダウンロードしてインストールできます。 App Distribution は、テスターの UDID が新しいリリースに追加されると、テスターにメールを送信します。
- テスト デバイスで、電子メール内のリンクまたはデバイスのホーム画面のアイコンを使用して、App Distribution テスター Web アプリに戻ります。
UDID コードラボ アプリに移動すると、リリースをダウンロードする準備ができていることがわかります。
- 物理デバイスを使用している場合は、ダウンロードを押してから、アプリをインストールして実行してください!
- アプリが起動すると、新しいビルド アラートを有効にするよう求められます。 「オンにする」を選択
- 次に、サインインするよう求められます。[続行] をクリックします。
- テスター アカウントでサインインします。
- アプリに戻ります。次回アプリを実行するときに、ログインしたりアラートを受け入れたりする必要はありません。
テスターに更新を配布する
- ビルド番号を「2」に更新します。
- ビルド先として「Any iOS Device (arm64)」を選択し、Product->Archive.アーカイブが生成されたら、開発配布プロファイルを使用して署名付き配布をビルドします。
- ビルドが完了すると、指定したフォルダーに IPA ファイルといくつかのログ ファイルが保存されます。この新しい IPA を Firebase コンソールにアップロードし、メールをテスターとして再度追加して配布します。
ビルド アラートのテスト
- アプリが開いている場合は、必ず閉じてください。アプリを再起動します。
- アプリが再起動すると、「新しいバージョンが利用可能です」というアラートが表示されます。
- 「アップデート」をクリックして最新バージョンを入手してください。
- 次の画面で「インストール」をクリックします。
- おめでとう!組み込みのアラートでアプリを更新できました。
6.テスターのサインインをカスタマイズする
メソッドsignInTester/signOutTesterおよびisTesterSignedIn を使用すると、テスターのサインイン エクスペリエンスをより柔軟にカスタマイズできるため、アプリのルック アンド フィールにより適合させることができます。
次の例では、テスターが Firebase App Distribution テスター アカウントに既にサインインしているかどうかを確認するため、まだサインインしていないテスターにのみサインイン UI を表示することを選択できます。テスターがサインインしたら、次のことができます。 checkForUpdateを呼び出して、テスターが新しいビルドにアクセスできるかどうかを確認します。
checkForUpdate()呼び出しをコメントアウトして、 viewDidAppearで更新の自動チェックを無効にしましょう。
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)
}
})
}
}
最後にisTesterSignedInメソッドを実装しましょう。
AppDistributionViewController.swift
private func isTesterSignedIn() -> Bool {
return AppDistribution.appDistribution().isTesterSignedIn
}
実装をビルドしてテストする
7.おめでとうございます!
Firebase App Distribution iOS SDK を使用して、「アプリ内アラート表示」機能をアプリに組み込みました。
カバーした内容
- Firebase アプリの配布
- Firebase アプリの配布 新しいアラート iOS SDK
次のステップ
もっと詳しく知る
質問があります?
問題を報告する