Apple プラットフォーム向け Firebase の詳細

Firebase で Apple アプリを開発しているときに、なじみのないコンセプトや Firebase 独自のコンセプトに直面することがあります。このページでは、このような質問への回答や、詳細を説明するリソースの紹介を行っています。

このページで扱っていないトピックについて不明点がある場合は、オンライン コミュニティをご覧ください。また、定期的に新しいトピックを追加していますので、このページをチェックして最新情報をご確認ください。

プラットフォーム別の Firebase ライブラリ サポート

次の表に、Apple プラットフォームと互換性がある Firebase ライブラリを示します。現在のところ、watchOS に対してはコミュニティによるサポートのみが提供されています。インストール手順と既知の問題については、Firebase Apple プラットフォーム SDK の GitHub リポジトリをご覧ください。

ライブラリ iOS macOS Mac
Catalyst
tvOS watchOS
A/B テスト
アナリティクス v8.9.0+ v8.9.0+ v8.9.0+
アナリティクス(広告 ID なし) v8.9.0+ v8.9.0+ v8.9.0+
アナリティクスのオンデバイス コンバージョン
App Check DeviceCheck プロバイダ watchOS 9 以降
App Check App Attest プロバイダ iOS 14 以降 macOS 11 以降 Catalyst 14 以降 tvOS 15 以降 watchOS 9 以降
App Check のカスタム プロバイダとデバッグ プロバイダ
App Distribution
Authentication partial partial partial partial
Cloud Firestore
Cloud Functions
Cloud Messaging
Cloud Storage
Crashlytics
Dynamic Links
Firebase インストール
Firebase ML モデル ダウンローダー
アプリ内メッセージング
Performance Monitoring
Realtime Database
Remote Config

App Clip

ほとんどの Firebase ライブラリは、App Clip ターゲットでビルドおよび実行されますが、その多くが、OS の制限によって制限されています。次のような既知の問題があります。

  • Dynamic Links は、アプリがインストールされていないと、ユーザーがリンクをタップしても、ユーザーを App Clip に送れません。
  • Firestore と Realtime Database は、基盤となる CFStream 依存関係が原因で App Clip でデータを読み込むことができません。

App Clip に関する既知の問題の一覧については、Firebase GitHub リポジトリをご覧ください。

GoogleService-Info.plist

Firebase を Apple プロジェクトに追加する一環として、プロジェクトに GoogleService-Info.plist 構成ファイルを追加する必要があります。1 つのアプリで複数の Firebase プロジェクトを使用する場合は、複数のプロジェクトの構成のドキュメントをご覧ください。

Firebase アプリの初期化プロセスの詳細については、Swift リファレンス ドキュメントをご覧ください。

Swift Package Manager

Swift Package Manager の統合の詳細については、こちらのガイドをご覧ください。

Swift 拡張機能

Firebase Apple プラットフォーム SDK Swift 拡張機能は、既存の Firebase Apple プラットフォーム ライブラリの小さなオープンソースのアドオンであり、コードで Swift 言語固有の機能を使用できるようにします。

次の Swift 拡張フレームワークが提供されています。

  • FirebaseAnalyticsSwift
  • FirebaseDatabaseSwift
  • FirebaseFirestoreSwift
  • FirebaseInAppMessagingSwift(ベータ版)
  • FirebaseRemoteConfigSwift

Firebase 9.0 以降の一部の Firebase ライブラリ(Objective-C インターフェースを含む)は Swift で実装され、補助依存関係を含まない Swift ネイティブの機能が提供されます。次の SDK は、拡張 SDK を使用せずにネイティブの Swift API を提供します。

  • FirebaseFunctions
  • FirebaseStorage

Swift 拡張機能は、CocoaPods または Swift Package Manager のいずれかを使用してインストールできます。CocoaPods を使用して Swift 拡張機能をインストールするには、次のように Swift 拡張機能を Podfile に含めます。

pod 'FirebaseAnalyticsSwift', '~> 10.0'
pod 'FirebaseInAppMessagingSwift', '~> 10.0-beta'
pod 'FirebaseDatabaseSwift'

Swift Package Manager を使用して、必要な Swift 拡張機能ライブラリを Firebase Apple プラットフォーム SDK と同じリポジトリから直接インポートします。

SwiftUI

Firebase は SwiftUI を完全にサポートしていますが、完全な SwiftUI 環境で Firebase を正しく機能させるためには、セットアップが UIKit アプリと少し異なります。詳細については、Peter Friese によるこちらのブログ投稿をご覧ください。

既知の問題のため、SwiftUI アプリケーションは実装入れ替えを無効にする必要があります。詳しくは、アプリ デリゲートの実装入れ替えセクションをご覧ください。

アプリ デリゲートの実装入れ替え

Firebase はアプリのアプリ デリゲート クラスにある一部のメソッドを入れ替えて、特定の Firebase サービスを FCM や APN トークンなどの OS コールバックに自動的に接続します。アプリで実装入れ替えを無効にするには、アプリの Info.plist ファイルにフラグ FirebaseAppDelegateProxyEnabled を追加し、これを NO に設定します。

アプリ デリゲートの実装入れ替えを使用する Firebase プロダクトには、アナリティクス、App Distribution、Authentication、FCM の 4 つがあります。アプリケーションで実装入れ替えを無効にし、次のいずれかのプロダクトを使用している場合は、実装入れ替えなしでプロダクトを使用する方法についてプロダクト固有のガイドをご覧ください。

iOS 14 のサポート

iOS 14 には、ユーザーの広告識別子関連のユーザー権限に関する新しい変更が含まれています。アプリが影響を受けるかどうかについて詳しくは、iOS 14 の準備ガイドをご覧ください。

Objective-C の継続的なサポート

Firebase では、Apple プラットフォームに関するドキュメントのメンテナンスを容易にするため、ガイドやその他のデベロッパー向け資料において、Swift スニペットとコードサンプルに注力することにしました。2024 年 1 月 1 日以降、Objective-C スニペットは各種ガイドから削除されます。Objective-C の最新のリファレンス ドキュメントは、すべての Firebase プロダクトで引き続きご利用いただけます。

Firebase Apple プラットフォーム SDK のオープンソース リソース

Firebase はオープンソース開発をサポートしているため、コミュニティへの貢献やフィードバックが推奨されています。

Firebase Apple プラットフォーム SDK

Apple プラットフォーム用の Firebase SDK(アナリティクスを除く)はすべて、一般公開されている Firebase GitHub リポジトリでオープンソース ライブラリとして開発されています。

FirebaseUI

FirebaseUI は、Cloud Firestore と Realtime Database 用の認証とデータ ユーティリティ用のドロップイン UI フローを含む、Firebase 上に構築されたユーティリティ ライブラリのセットです。FirebaseUI の詳細については、GitHub ページをご覧ください。

クイックスタート サンプル

Firebase には、iOS の Firebase API のほとんどのクイックスタート サンプルのコレクションがあります。これらのクイックスタートは、一般公開されている Firebase GitHub クイックスタート リポジトリで確認できます。

Xcode で各クイックスタートを開き、モバイル デバイスまたはシミュレータで実行できます。また、Firebase SDK を使用するためのサンプルコードとして、このクイックスタートを使用することもできます。