FirebaseにXcodeアプリを登録する

**ここで、紹介する方法は2019/11/8の方法なので仕様が変わっている場合があります。**

#Firebaseの準備をする
まずは、[ここ](https://firebase.google.com/)からFirebaseにアクセスしてGoogleアカウントでログインする。
ログインが完了すると以下のような画面が出てくるので「プロジェクトの追加」を選択する。
<img width="1288" alt="スクリーンショット 2019-11-08 10.41.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367053/10ae7a49-02b5-ec34-d9d6-853f6dece17c.png">

すると、以下のような画面が出てくるのでプロジェクト名を決めて「プロジェクト名を入力します」という部分に入力する。（ここで入力する、プロジェクト名はXcode上と異なっていても良い）
<img width="1242" alt="スクリーンショット 2019-11-08 10.45.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367053/9a7b615f-a6ff-5765-1996-4cf432281d23.png">

入力し続行を押すと、アプリの解析をするか否かという質問をされる。アクセス数などを解析したい場合はオンにして次に進む。（デフォルトはオン）
<img width="875" alt="スクリーンショット 2019-11-08 10.48.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367053/f9503d34-f75e-defd-e079-269254f26c4e.png">

*オンにして次に進むと、アナリティクスのアカウントを選択する画面が出るので、自分のGoogle Analyticsのアカウントを選んで次に進む。（持っていない場合は作成する必要がある）*

全部終わると、プロジェクトを作成してくれる。
<img width="483" alt="スクリーンショット 2019-11-08 10.51.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367053/09b887b0-132c-8066-cf82-fc0827ed4d3c.png">

全部完了すると、以下のような画面が出てくる。この画面をコンソールと呼ぶ。

<img width="1284" alt="スクリーンショット 2019-11-08 10.53.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367053/40a2f7b6-ca14-1447-7cb5-3eb3e13dbaa3.png">

#Firebaseにアプリを登録する。
##準備
コンソールが表示されたら、`iOS`と書かれた白丸のボタンをクリック。
このような画面が出てくるので、必要な情報を入力していく。
<img width="1028" alt="スクリーンショット 2019-11-08 10.55.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367053/11204737-4da9-26e3-33f7-7a19074d4069.png">
iOSバンドルIDはXcodeを開き以下の赤い部分に書かれている。
<img width="1512" alt="スクリーンショット 2019-11-08 10.55.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367053/ba213fcd-a550-2384-5133-0ad4bec417ca.png">
設定ファイルをダウンロードする画面になるので、`info.plist`などと同じ階層にドラックアンドドロップする。（ルート階層）
<img width="500" alt="スクリーンショット 2019-11-08 10.59.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367053/7f4b8efb-06c7-4f66-17d5-dc3d175b3d5f.png">
**コピーするときに以下のような設定にしておくとエラーが起きにくい。**
<img width="727" alt="スクリーンショット 2019-11-08 11.01.45.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367053/a8d77943-48e6-f5ad-3e35-307fe8c24d84.png">

##ライブラリーをインポートする。
ターミナルを開き、Xcodeのプロジェクトがある階層で以下のコードを実行する。
[このショートカット](https://book.mynavi.jp/macfan/detail_summary/id=41833)を利用すると簡単にできる。
*以下の作業をする前に一度Xcodeを終了しておくとエラーが起きにくい。*
まずは、`pod init`と入力し、実行する。
実行するとPodfileというファイルが作成されるのでそれを開く。
<img width="594" alt="スクリーンショット 2019-11-08 11.07.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367053/8db475fb-cac0-5f41-74b2-6573cb1f52d1.png">

1. Podfileを開いたら上から二行目のコメントアウトを解除する。
2. `pod 'Firebase/Core'`を`# Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!`の下にコピーアンドペーストする。**この時、インデックスが`# Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!`と同じになるようにする。**
2. [ここ](https://firebase.google.com/docs/ios/setup#available-pods)から使いたい機能のライブラリー名を探して一番右端の列にあるpodから始まる部分をコピーして`pod 'Firebase/Core'`の下に入力する。**この時もインデックスに気を付ける。**

（例）
<img width="752" alt="スクリーンショット 2019-11-08 11.40.14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367053/d59faf7f-817d-e1cc-8fc4-19d715e5d4fb.png">


全て完了したら、テキストエディターを閉じてターミナルに戻り`pod install`と入力し実行する。
ターミナルに赤のエラ〜メッセージがないことを確認して、Finderに戻ると白色のアイコンのxcworkspaceというファイルが作成されているのでそれを開く。
<img width="587" alt="スクリーンショット 2019-11-08 11.15.03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367053/0c88f9ad-0b3d-4e29-291d-5211f585a22f.png">


##Xcode側の設定
1. `AppDeligate.swift`を開いて`import UIKit`の下に`import Firebase`と入力し、Firebaseのライブラリを入力する。
2. `func application(_ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions:
      [UIApplicationLaunchOptionsKey: Any]?) -> Bool`を探し、`return true`の上に`FirebaseApp.configure()`と入力。

```AppDelegate.swift
import UIKit
import Firebase

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

  var window: UIWindow?

  func application(_ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions:
      [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    FirebaseApp.configure()
    return true
  }
}
```
または（Xcode11）

```AppDelegate.swift
import UIKit
import Firebase

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        FirebaseApp.configure()
        return true
    }

    // MARK: UISceneSession Lifecycle

    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
        // Called when a new scene session is being created.
        // Use this method to select a configuration to create the new scene with.
        return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
    }
    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
        // Called when the user discards a scene session.
        // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
        // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
    }
}
```

Firebaseの画面に戻り、次へを押した後に、アプリをXcodeから実行する。
<img width="812" alt="スクリーンショット 2019-11-08 11.20.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367053/b5cc1971-e7b2-f263-f8b1-f3f0874f725c.png">

このような画面が出たら完了です！お疲れ様でした。
<img width="704" alt="スクリーンショット 2019-11-08 11.42.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367053/dac07747-8fa2-6c11-f371-f06f742146f9.png">