iOSで後で読むアプリを作ってみた

SwiftFirebase

最近 Notion でウェブクリップをしていたけど、スマホからのアクセス時に不便だなと感じていた。 Instapaper、Pocket というサービスがあるけど学習兼ねて作ってみることにした。

Swift はちょっと書籍読んでちょっと書いたことあるくらい、Firebase は使ったことない状態で始めたものの Firebase のおかげでサクサク作れた。 現状以下の機能が実装できた。

  • ログイン(Google ログイン)
  • 一覧表示
  • 記事の保存
  • 記事の削除

実装した機能ごとに参考にした記事と一言を書いていく。 プロジェクトのセットアップはFirebase を iOS プロジェクトに追加する | Firebaseが詳細に書いてくれているのでこちらを読んでください。

ログイン

今回は Google ログインを利用したので、Firebase のドキュメントと Google のドキュメントを参考にしつつ実装した。

一覧表示

Cloud Firestore に保存された記事を UITableView に表示するだけのシンプルな実装。 ログインユーザーごとの記事一覧を取得できるようにした。

記事の保存

今回一番苦戦した。 結果としては ShareExtension と Firebase の機能で解決できた。

ShareExtension

ブラウザで表示しているページを保存する必要があったのだけど保存先のアプリに自分で作成したアプリが表示されなくてまず困った。

アプリが表示されない…となったので、swift 自作アプリ 共有メニューで検索をしたらStackoverflowで運良く似たような質問を見つけられた。

Safari だとツールバー中央のボタンから別のアプリへ共有できる機能があって、この機能にアプリを表示させるためにはアプリとは別に ShareExtension を作成する必要があることがわかった。

ログイン状態の共有

アプリのログイン情報を ShareExtension は保持していないので Keychain Access Groups を使ってアプリと ShareExtension 間でログイン情報を共有する必要があった。Firebase で機能が提供されていたので何とかなった…。

記事の削除

保存機能を実装してからだったので特に問題なく実装できた。 これもドキュメントを参考に実装した。

あとがき

Firebase とても便利ですね。 個人で使う分には無料枠で事足りそうなので小さい機能のアプリだったらどんどん使ってみると良さそう。

Swift に関してはこう書いたらとりあえずは動くんだなという状態なんでもうちょっと理解を深めたいところ。