👏
Apollo iOSをXCode / Swiftに設定する方法
Apollo iOSでGraphQLのデータをフェッチするまでに1日弱かかったので、備忘録として記録します。
(別途、時間ができた時に写真等も整理する予定です。)
以下2つの記事を参考に進めました。
1. packagesからapollo-iosをインストールする
- XCodeのプロジェクト名で右クリック > Add Package Dependencies...
- 右上の検索欄に上記のGitHubのURLを貼り付け検索を実行
Macの任意のディレクトリで以下を実行 - apollo-iosをAddPackage
- 「Apollo」と「ApolloWebSocket」のAddtoTargetでプロジェクトを選択し右下のAddPackageをクリックする
- XCodeのPackageDependenciesにApolloがあることを確認する
- XCodeのプロジェクト名で右クリック>(Apollo)Install CLIをクリック
(この作業でプロジェクトのルートディレクトリにapollo-ios-cliがシンボリックリンクで作成されます)
2. スキーマファイルのダウンロード
- Macの任意のディレクトリで以下を実行
npm install -g apollo
npm install -g graphql
- GraphQLサーバーからschemaをダウンロード
今回はHasuraでGraphQLサーバーを構築したため以下のコマンドを実行しています
npx apollo schema:download --endpoint={https://...} schema.json --header="x-hasura-admin-secret: {YOUR_SECRET}"
3. GraphQLのクエリドキュメントを作成
- ターミナルでXCodeのプロジェクトフォルダに移動する
- プロジェクトのルートディレクトリに「GraphQL」フォルダを作成
- 「GraphQL」フォルダの中に「documents」フォルダを作成
- 「documents」フォルダの中にクエリを記述した.graphqlファイルを作成
(例) users.graphql
query GetUsers {
users {
id
}
}
4. スキーマファイルをXCodeのプロジェクトにコピー
- 前手順で作成した「GraphQL」フォルダの下にschema.jsonを
5. apollo-codegen-config.jsonを作成しパッケージをgenerate
- 「GraphQL」フォルダでapollo-codegen-config.jsonを作成する
{apollo-ios-cliのパス} init --schema-namespace {任意のネームスペース名} --module-type swiftPackageManager --target-name {XCodeのプロジェクトのTargetName}
- 生成されたapollo-codegen-config.jsonのschemaSearchPathsを./schema.jsonに修正する
{
"schemaNamespace" : "{任意のネームスペース名}",
"input" : {
"operationSearchPaths" : [
"**/*.graphql"
],
"schemaSearchPaths" : [
"./schema.json"
]
},
"output" : {
"testMocks" : {
"none" : {
}
},
"schemaTypes" : {
"path" : "./{任意のネームスペース名}",
"moduleType" : {
"swiftPackageManager" : {
"name" : "{XCodeのプロジェクトのTargetName}"
}
}
},
"operations" : {
"inSchemaModule" : {
}
}
}
}
- パッケージをgenerateする
{apollo-ios-cliのパス} generate
6. XCodeにパッケージとして取り込む
- XCodeのプロジェクト名で右クリック > Add Package Dependencies...をクリック
- 画面下部の「Add Local」をクリック
- 前手順で生成したパッケージフォルダを選択
- XCodeのプロジェクト名をクリック
- Build PhasesのLink Binary With Librariesから先ほど追加したパッケージを選択
以降は以下記事と同じです。
Discussion