Skip to content

wtrmiya/NewsApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 

Repository files navigation

NewsApp

概要

ニュースビューアサンプルプロジェクト

仕様・考慮点

  • Firebaseを使用したアカウント管理・データ管理
    • Configuration切り替えによるFireabse接続先の切り替え(開発・本番)
    • Firebase Authenticationによるアカウント管理
    • Firebase Firestoreによるユーザ設定情報、ブックマークの管理
    • Firebase Firestoreによる利用規約の提供(不要なアプリアップデートの回避)
  • ログイン状態に対応した機能制限
  • fastlaneによる自動ユニットテスト実行(GitHubへのpush時)
  • URLSessionによる外部API(News API)からの情報取得
  • Dependency ContainerによるInitializer Injectionの実現
  • Architecture: MVVM
  • Figmaによるデザインおよび、SwiftUIによるデザイン実装
  • ダークモード実装
  • Gitへのシークレット情報登録除外(API key、Firebase設定ファイル)
  • トーストによる操作結果通知

インストール

1. News APIのAPIキーを設定する

1.2. News APIサイトでAPIキーを取得する

1.3. Xcodeプロジェクトを開き、NewsAppディイレクトリ配下にConfig.xcconfigファイルを追加する

create_Configfile

1.4. Config.xcconfigファイルにNewsAPIのAPIキーを記述する

enter_API_key

キー名はAPI_KEY_NewsAPIにする

2. Firebaseプロジェクトを設定する

2.1. Firebase consoleで開発用プロジェクトと本番用プロジェクトを作成する

create_firebase_projects

プロジェクト名は任意。 開発用プロジェクトには開発用Bundle IDを、本番用プロジェクトには本番用Bundle IDをそれぞれ登録すること 使用プロダクトは以下。

  • Authentication
  • Firestore Database

2.2. 開発用プロジェクト用Firebase設定ファイルおよび本番用プロジェクト用Firebase設定ファイルを配置する

download_project_setting_files 作成したFirebaseプロジェクトの設定ファイルをxcodeprojファイルと同ディレクトリに配置する。 ファイル名は以下の様にする

  • 開発用プロジェクト: GoogleService-Info-dev.plist
  • 本番用プロジェクト: GoogleService-Info-prod.plist

2.3. 利用規約テキストをFirestoreに配置する

Firestoreトップレベルのコレクションにtermsを作成する。 termsに、以下のフィールドを持つドキュメントを追加する。

  • body: String
    • 利用規約本体
    • 改行文字(\n)込みのMarkdownで利用規約を記載する
  • createdAt: Date
    • 利用規約登録日
  • effectiveDate: Date
    • 利用規約発効日
  • title: String
    • 利用規約タイトル
    • 例としてNewsApp 利用規約など

3. (オプション)fastlaneを設定する

3.1. fastlaneをインストールする

ターミナルでGemfileが存在するディレクトリ(xcodeprojと同ディレクトリ)に移動する bundle install を実行し、fastlaneをGemとしてインストールする

3.2. push時に実行するスクリプトを配置する

.git/hooks/pre-pushファイルに以下のスクリプトを記載する

#!/bin/bash

# xcodeprojファイルの存在するディレクトリへ移動する
cd /directory/to/NewsApp/

# fastlaneでユニットテストを実行する
bundle exec fastlane unittest

以下の記事を参照のこと https://qiita.com/wtrmiya/items/5adc97ca1c3dd1c7d311

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published