タイトルそのまま。
Xcode上で特定のライブラリを用いて実装していたら、謎のエラーが出てきて悲しくなったがなんとか解決できた話。
環境 Xcode 9.3 Swift 4 iOSネイティブアプリ開発
目次
背景
プッシュ通知ライブラリのOneSignalと、GoogleのBaaSであるFirebaseのiOS用SDK、iOSで人気のプログレスポップアップ表示ライブラリSVProgressHUDを併用してビルドしたら、下記のエラーメッセージと共にビルドが失敗してしまった。
Error “‘sharedApplication’ is unavailable:
調べた所、上記のリンクのエラーと同様であった。
原因
OneSignalを導入する場合、AppExtensionという形式でプッシュ通知拡張機能を実装する必要がある。
その際ライブラリがAppExtensionでの動作をサポートしていない場合にこのようなビルドエラーが出る場合があるらしい。
解決策
OneSignalとFirebaseの場合
Firebaseの最新のSDKのバージョンが5.0.0
だが、これだとビルドエラーになるので、動作をサポートしているバージョンである4.3.1
を指定してインストールする。
Podfileを以下のように編集する。
pod 'Firebase/Core', '~>4.13.0' pod 'Firebase/Auth', '~>4.13.0'
次にターミナルで以下のコマンドを入力する。
$ pod update
OneSignalとSVProgressHUDの場合
Xcode上で、左のファイル選択カラムから、Pod -> Build Settings -> Preprocessor Macros
を開く。
その中にあるDebug, Releaseの中身に,SV_APP_EXTENSIONS=0
を追記する。
これでビルドが通るようになる。嬉しい。
ビルドが通ってもSVProgressHUDが表示されない場合
Swiftの各ViewControllerのファイル内にSVProgressHUD.setViewForExtension(self.view)
を追記することで表示できるようになる。
まとめ
依存関係を気にして楽しいXcodeライフを送りましょう。