2023年1月8日日曜日

Firestoreでのデータの保存について2

 昨日に引き続き、今回は、Firestoreにデータの保存(書き込み)ができるか、確認を行います。

Firestoreへの保存確認

アプリ名.swiftファイルを以下のように編集する。

import SwiftUI

import FirebaseCore

import Firebase

import FirebaseFirestore


class AppDelegate: UIResponder, UIApplicationDelegate {

    

    func application(_ application: UIApplication,

                     didFinishLaunchingWithOptions launchOptions:                   [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        FirebaseApp.configure()

        Firestore.firestore().collection("users").document("Message").setData([

            "UserMessage": "message",

            "Date": "messageDate",

            "UserId": "messageId",

        ], merge: false) { err in

            if let err = err {

                print("Error writing document: \(err)")

            } else {

                print("Document succesfully writen!")

            }

        }

        return true

    }

}


アプリをビルドした際にデータが保存されているか、Cloud Firestoreで確認する。

usersというコレクションの中に、
Messageというドキュメント、さらにその中に、
以下のデータが格納されていることが確認できます。
  • Date"messageDate"、
  • UserId "messageId"、
  • UserMessage "message"
これで親、子、孫のように階層状にデータが保存できることがわかりました!

 


2個目の個人開発アプリ、リリースしました!

この年末年始で個人開発アプリ、2個目を無事にリリースしました!

開発環境

  • Xcode 14.2
  • SwiftUI
  • MacBook Air M1 メモリ8G

開発期間

 約6日間、合計40時間程度
 (リジェクト対応含む)

アプリコンセプト

 アプリ起動後簡単に、一定時間毎に通知するタイマーを設定できる

アプリ開発背

 つい最近、こたつを朝からつけっぱなしで外出して夕方に気がつき、妻に叱られたので「スマホのアラーム機能をわざわざ設定するのも面倒だよなぁ・・・」と思い、「じゃあアプリ起動するだけで通知できるようなアプリを作ればいいじゃん!」ってことで開発しました!
他の学習で行き詰まっており、息抜きも兼ねてです笑

想定するユーザー

 こたつやストーブを消し忘れやすい人たち(私)

実装した機能

  • UserNotificationを用いた通知機能(アプリ起動中でもバックグラウンドでも通知)
  • UserDefaulsを用いた内部データ保存機能
  • Timer.scheduledTimerを用いたカウントダウン機能
  • NavigationStackを用いた画面遷移(かなり特殊に感じました・・・)
  • 通知が許可されていない場合に表示する、アラート機能(設定画面への遷移含む)
  • GoogleAdmobを用いたインタースティシャル(全画面)広告表示機能

アプリ画像





アプリURL

 もしよかったら、ダウンロードしてみてください!

このアプリの今後について

 特にありませんが、機能改修希望や不具合ありましたら、ご連絡いただければ対応考てます!

flutterについて、学んだことなど

Swiftについて学んできたため、つい比較してしまいがちです。 SwiftUIと比較して、書いてみました。 似ているようで似ていない flutterには、SwiftUIにおける「View」という概念が、「Widget」と呼ばれるものになる SwiftUIのようにWidgetの中に...