The Firebase Realtime Database is a cloud-hosted database. Data is stored as JSON
and synchronized in realtime to every connected client. When you build
cross-platform apps with our Android, iOS, and JavaScript SDKs, all of your
clients share one Realtime Database instance and automatically receive updates with
the newest data.
Firebase Realtime Database is available on all Apple platforms, including iOS,
macOS, macOS Catalyst, tvOS, and watchOS. It is not available for App Clips.
The setup instructions in this page reference iOS in specific examples, but are
generic and work for any Apple platform target.
Prerequisites
- Install the Firebase SDK
.
- Add your app to your Firebase project in the
Firebase console
.
Create a Database
Navigate to the
Realtime Database
section of the
Firebase console
.
You'll be prompted to select an existing Firebase project.
Follow the database creation workflow.
Select a starting mode for your Firebase Security Rules:
- Test mode
Good for getting started with the mobile and web client libraries,
but allows anyone to read and overwrite your data. After testing,
make
sure to review the
Understand Firebase Realtime Database Rules
section.
To get started with the web, Apple, or Android SDK, select testmode.
- Locked mode
Denies all reads and writes from mobile and web clients.
Your authenticated application servers can still access your database.
Choose a location for the database.
Depending on the
location of the database
, the
URL for the new database will be in one of the following forms:
Click
Done
.
When you enable Realtime Database, it also enables the API in the
Cloud API Manager
.
Add Firebase Realtime Database to your app
Use Swift Package Manager to install and manage Firebase dependencies.
- In Xcode, with your app project open, navigate to
File > Add Packages
.
- When prompted, add the Firebase Apple platforms SDK repository:
https://github.com/firebase/firebase-ios-sdk.git
- Choose the Realtime Database library.
- Add the
-ObjC
flag to the
Other Linker Flags
section of your target's build settings.
-
When finished, Xcode will automatically begin resolving and downloading your
dependencies in the background.
The Realtime Database provides a declarative rules language that allows you to
define how your data should be structured, how it should be indexed, and when
your data can be read from and written to.
Set up Firebase Realtime Database
You must initialize Firebase before any Firebase app reference is created or
used. If you have already done this for another Firebase feature, you can skip
this step.
- Import the
FirebaseCore
module in your
UIApplicationDelegate
, as well as any other
Firebase modules
your app delegate uses.
For example, to use Cloud Firestore and Authentication:
SwiftUI
import SwiftUI
import FirebaseCore
import FirebaseFirestore
import FirebaseAuth
// ...
Swift
import FirebaseCore
import FirebaseFirestore
import FirebaseAuth
// ...
Objective-C
@import FirebaseCore;
@import FirebaseFirestore;
@import FirebaseAuth;
// ...
- Configure a
FirebaseApp
shared instance in your app delegate's
application(_:didFinishLaunchingWithOptions:)
method:
SwiftUI
// Use Firebase library to configure APIs
FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs
FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs
[FIRApp configure];
- If you're using SwiftUI, you must create an application delegate and attach it
to your
App
struct via
UIApplicationDelegateAdaptor
or
NSApplicationDelegateAdaptor
. You must also disable app delegate swizzling. For
more information, see the
SwiftUI instructions
.
SwiftUI
@main
struct YourApp: App {
// register app delegate for Firebase setup
@UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
var body: some Scene {
WindowGroup {
NavigationView {
ContentView()
}
}
}
}
- Create a reference to your database and specify the location you want to
write to.
Swift
Note:
This Firebase product is not available on the App Clip target.
var ref: DatabaseReference!
ref = Database.database().reference()
Objective-C
Note:
This Firebase product is not available on the App Clip target.
@property (strong, nonatomic) FIRDatabaseReference *ref;
self.ref = [[FIRDatabase database] reference];
Next Steps