はじめに
FirebaseのFirebase Cloud Messagingを使って、
プッシュ通知をするまでにいくつか躓いたため、
手順としてメモを残していきます。
今回はCarthageを使って、Firebase iOS SDKをXcodeに追加する部分を記載していきます。
Carthageとは
- Swiftで作られたライブラリ管理ツール
- ライブラリ導入時にビルドするため、コンパイル時間がCocoaPodsより短くなる
- メジャーなSDKに対応していない場合もあるため注意(詳しくはGithub参照)
やること
- CarthageでFirebase iOS SDKを管理
- Firebase Cloud Messagingからメッセージの作成
動作環境
- MacOS : Big Sur 11.5.2
- Xcode : 12.5.1
- Firebase iOS SDK : 8.7.0
前提条件
- brewがインストールされていること
事前準備
プロジェクトのディレクトリを作成&移動
mkdir PushNotificationSampler && cd $_
Carthageをインストールする
brew install carthage
Cartfile作成(CocoaPods でいうPodfile)
touch Cartfile
Cartfileに必要なライブラリを記述
使用したいライブラリをCartfileに記載します。
今回はFirebase Cloud Messagingのライブラリを追加します。
※FirebaseAnalyticsBinaryは必須で追加する必要
vim Cartfile
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMessagingBinary.json"
ちなみに現時点で使用できるFirebaseのライブラリ一覧は以下のとおりです。
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseABTestingBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAdMobBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAppCheckBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAppDistributionBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAuthBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseCrashlyticsBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseDatabaseBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseDynamicLinksBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseFirestoreBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseFunctionsBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseGoogleSignInBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseInAppMessagingBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMLModelDownloaderBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMessagingBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebasePerformanceBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseRemoteConfigBinary.json"
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseStorageBinary.json"
Cartfileに記載したライブラリをビルド
carthage update --platform iOS
iOSの分だけビルドするために、—platform iOSをつけています。
(つけない場合watchOS やOSXの分もビルドされる)
下記のディレクトリ及びファイルが作成されたことを確認する
- Carthageディレクトリ
- Cartfile.resolvedファイル
ls
Cartfile
Cartfile.resolved
Carthage
Xcodeの設定
XcodeにSDKを追加する
プロジェクトファイル > Generalタブ > Frameworks, Libraries, and Embedded Content
Add Other > Add File で以下のファイルを追加する
~/Desktop/PushNotificationSampler/Carthage/Build/FirebaseAnalytics.xcframework
~/Desktop/PushNotificationSampler/Carthage/Build/FirebaseCore.xcframework
~/Desktop/PushNotificationSampler/Carthage/Build/FirebaseAnalytics.xcframework
~/Desktop/PushNotificationSampler/Carthage/Build/FirebaseCoreDiagnostics.xcframework
~/Desktop/PushNotificationSampler/Carthage/Build/FirebaseMessaging.xcframework
~/Desktop/PushNotificationSampler/Carthage/Build/GoogleAppMeasurement.xcframework
~/Desktop/PushNotificationSampler/Carthage/Build/GoogleDataTransport.xcframework
~/Desktop/PushNotificationSampler/Carthage/Build/GoogleUtilities.xcframework
~/Desktop/PushNotificationSampler/Carthage/Build/nanopb.xcframework
~/Desktop/PushNotificationSampler/Carthage/Build/PromisesObjC.xcframework
追加したライブラリのEmbedをDo Not Embedに変更する
Build Settingsタブ > Linker >Other Linker Flags に$(OTHER_LDFLAGS) -ObjCを追加する
※ -ObjCを下記のように小文字にするとエラーとなります。
✗ $(OTHER_LDFLAGS) -Objc
以上がCarthage特有の設定となります。
参考文献
firebase-ios-sdk/Carthage.md at master · firebase/firebase-ios-sdk