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に関してはこう書いたらとりあえずは動くんだなという状態なんでもうちょっと理解を深めたいところ。