ニュースビューアサンプルプロジェクト
- ニュースソース: News API (https://newsapi.org/)
- Firebaseを使用したアカウント管理・データ管理
- Configuration切り替えによるFireabse接続先の切り替え(開発・本番)
- Firebase Authenticationによるアカウント管理
- Firebase Firestoreによるユーザ設定情報、ブックマークの管理
- Firebase Firestoreによる利用規約の提供(不要なアプリアップデートの回避)
- ログイン状態に対応した機能制限
- fastlaneによる自動ユニットテスト実行(GitHubへのpush時)
- URLSessionによる外部API(News API)からの情報取得
- Dependency ContainerによるInitializer Injectionの実現
- Architecture: MVVM
- Figmaによるデザインおよび、SwiftUIによるデザイン実装
- デザイン参考元: https://ground.news/app
- ダークモード実装
- Gitへのシークレット情報登録除外(API key、Firebase設定ファイル)
- トーストによる操作結果通知
1.1. News APIサイト(https://newsapi.org/)でアカウントを作成する
キー名はAPI_KEY_NewsAPI
にする
プロジェクト名は任意。 開発用プロジェクトには開発用Bundle IDを、本番用プロジェクトには本番用Bundle IDをそれぞれ登録すること 使用プロダクトは以下。
- Authentication
- Firestore Database
作成したFirebaseプロジェクトの設定ファイルをxcodeprojファイルと同ディレクトリに配置する。 ファイル名は以下の様にする
- 開発用プロジェクト: GoogleService-Info-dev.plist
- 本番用プロジェクト: GoogleService-Info-prod.plist
Firestoreトップレベルのコレクションにterms
を作成する。
terms
に、以下のフィールドを持つドキュメントを追加する。
- body: String
- 利用規約本体
- 改行文字(
\n
)込みのMarkdownで利用規約を記載する
- createdAt: Date
- 利用規約登録日
- effectiveDate: Date
- 利用規約発効日
- title: String
- 利用規約タイトル
- 例として
NewsApp 利用規約
など
ターミナルでGemfileが存在するディレクトリ(xcodeprojと同ディレクトリ)に移動する
bundle install
を実行し、fastlaneをGemとしてインストールする
.git/hooks/pre-push
ファイルに以下のスクリプトを記載する
#!/bin/bash
# xcodeprojファイルの存在するディレクトリへ移動する
cd /directory/to/NewsApp/
# fastlaneでユニットテストを実行する
bundle exec fastlane unittest
以下の記事を参照のこと https://qiita.com/wtrmiya/items/5adc97ca1c3dd1c7d311