Mengupgrade aplikasi iOS Anda dari Firebase.com

Dokumen ini berisi panduan untuk mengupgrade aplikasi Firebase.com yang ada ke Firebase console dan API yang baru.

Ada empat langkah yang perlu dilakukan:

  1. Melakukan upgrade project Anda ke Firebase console yang baru
  2. Menginstal Firebase SDK yang baru
  3. Mengupdate kode database Anda
  4. Mengupdate kode autentikasi Anda

Anda dapat mengupgrade project Anda ke konsol firebase.google.com baru kapan pun Anda mau. Aplikasi Anda akan terus berfungsi. Selanjutnya, Anda dapat mengupdate kode jika sudah siap untuk menggunakan beberapa fitur Firebase baru yang ada di dalam aplikasi.

Mengimpor project Anda ke Firebase console yang baru

  • Buka Firebase console, lalu cari project Anda di bagian "Project yang saat ini ada di Firebase.com".
  • Klik Impor untuk project yang ingin Anda upgrade.
    • Jika project tersebut merupakan paket berbayar di firebase.com, Anda harus menyiapkan penagihan untuk project ini di konsol yang baru. Informasi penagihan Anda tidak akan dipindahkan secara otomatis
    • Pilih atau buat akun penagihan. Setelah mengimpor, akun ini bertanggung jawab atas semua tagihan dalam project tersebut.
  • Konten Realtime Database dan Hosting Anda akan langsung diimpor secara otomatis ke Firebase console.
  • Data pengguna Anda akan otomatis dipindahkan ke backend autentikasi yang baru. Hal ini terjadi di latar belakang, dan pengguna dapat terus menggunakan aplikasi saat data sedang dipindahkan. Pendaftaran dan login pengguna tidak akan terpengaruh. Saat sistem memindahkan akun pengguna, Anda akan melihat indikator lingkaran berputar di tab Auth dari Firebase console.
  • Jika Anda memiliki kode promo aktif untuk aplikasi Firebase.com, hubungi kami.

Menginstal Firebase SDK yang baru

Anda tidak perlu segera mengupdate kode aplikasi. Database dan kode autentikasi yang ada akan terus berfungsi pada project yang Anda pindahkan. Namun, ketika siap menggunakan beberapa fitur Firebase baru di aplikasi, Anda dapat Menginstal Firebase SDK yang baru.

Perlu diperhatikan bahwa saat Anda mulai menggunakan SDK yang baru, Google Analytics for Firebase akan otomatis diaktifkan. Secara default, data Analytics akan meningkatkan kualitas fitur Firebase dan produk Google lainnya. Anda dapat mengontrol pembagian data Firebase Analytics di setelan kapan saja. Pelajari lebih lanjut

Mengonfigurasi aplikasi Anda

Aplikasi Anda kini dikonfigurasikan menggunakan file GoogleService-Info.plist yang dapat didownload dari Firebase console. Untuk menambahkan konfigurasi ke project Anda secara mudah, tarik GoogleService-Info.plist yang sudah didownload ke project Xcode Anda (pastikan untuk memilih "Copy items if needed", sehingga item tersebut akan ditambahkan ke direktori project Anda).

File GoogleService-Info.plist akan diproses oleh class FIRApp. Pada metode application:didFinishLaunchingWithOptions: di class AppDelegate Anda, tambahkan panggilan berikut:

Objective-C

[FIRApp configure];

Swift

FIRApp.configure()

Mengupdate kode database Anda

Mengupdate dependensi CocoaPods Anda

Cara termudah untuk memulai adalah dengan mengubah dependensi CocoaPods Anda: Sejak versi 3.x, pod Firebase memiliki subspesifikasi terpisah untuk setiap API:

SEBELUM

pod 'Firebase', '>= 2.5.1'
SESUDAH

pod 'Firebase/Database'

Jalankan pod update untuk mendapatkan pod yang baru. Aplikasi Anda kemungkinan akan memiliki sejumlah error atau peringatan di tempat nama API berubah. Bagian lainnya dari panduan ini berisi penjelasan mengenai cara menyelesaikan masalah tersebut.

Pertama-tama, ganti baris #import jika Anda menggunakan Objective-C (jika Anda menggunakan Swift, Anda tidak perlu mengubah apa pun.)

SEBELUM

#import <Firebase/Firebase.h>
SESUDAH

@import Firebase

Mendapatkan referensi database

Dalam SDK 3.x, referensi Firebase diganti oleh FIRDatabaseReference dan Anda menggunakan class FIRDatabase untuk mendapatkan referensi awal ke database. Jadi, setelah mengonfigurasi FIRApp, Anda dapat memperoleh referensi database dalam kode sebagai berikut:

SEBELUM

Objective-C


Firebase *rootRef = [[Firebase alloc] initWithUrl:@"https://<YOUR-FIREBASE-APP>.firebaseio.com"];

Swift


var rootRef = Firebase(url:"https://<YOUR-FIREBASE-APP>.firebaseio.com")
SETELAH

Objective-C


FIRDatabaseReference *rootRef= [[FIRDatabase database] reference];

Swift


var rootRef = FIRDatabase.database().reference()

Perlu diperhatikan bahwa URL Database Anda otomatis ditentukan dari file GoogleService-Info.plist, sehingga Anda tidak perlu menentukannya sendiri.

Mengaktifkan persistensi disk

Jika aplikasi Anda menggunakan persistensi disk, sekarang Anda dapat mengaktifkannya melalui objek FIRDatabase:

SEBELUM

Objective-C


[Firebase defaultConfig].persistenceEnabled = YES;

Swift


Firebase.defaultConfig().persistenceEnabled = true
SETELAH

Objective-C


[FIRDatabase database].persistenceEnabled = YES;

Swift


FIRDatabase.database().persistenceEnabled = true

Seperti pada 2.x SDK, pengaktifan persistensi disk harus dilakukan sebelum panggilan lain ke database dilakukan.

Mengupdate referensi class / metode

Beberapa jenis Database berganti nama di SDK 3.x agar sesuai dengan API lainnya. Tabel ini menunjukkan beberapa perubahan umum yang perlu Anda lakukan.

Sebelum Sesudah
Firebase FIRDatabaseReference
FDataSnapshot FIRDataSnapshot
FirebaseHandle FIRDatabaseHandle
FEventType FIRDataEventType
FQuery FIRDatabaseQuery
FMutableData FIRMutableData
FTransactionResult FIRTransactionResult
FConfig FIRDatabase
FirebaseApp FIRDatabase
kFirebaseServerValueTimestamp [FIRServerValue timestamp]

Jika Anda tidak menemukan class atau metode yang dicari, lihat di Dokumen Referensi Database.

Mengupdate kode autentikasi Anda

Fungsi Firebase Authentication kini berada di belakang class FIRAuth, sehingga proses autentikasi kini dilakukan pada instance FIRAuth dan bukan melalui referensi Firebase.

Mengupdate dependensi CocoaPods Anda

Karena Authentication kini berada di modulnya sendiri, Anda harus menambahkan dependensi ke Podfile terlebih dahulu:

pod 'Firebase/Auth'

Anda harus menjalankan pod update lagi setelah menambahkan dependensi.

Membuat agar pengguna login

Metode autentikasi berfungsi mirip dengan sebelumnya, namun kini berperan sebagai metode pada objek FIRAuth dengan nama baru, dan FAuthData kini digantikan oleh FIRUser, misalnya:

SEBELUM

Objective-C


[ref authAnonymouslyWithCompletionBlock:^(NSError *error, FAuthData *authData) {
    if (error) {
        NSLog(@"Sign in failed: %@", error.localizedDescription);
    } else {
        NSLog(@"Signed in with uid: %@", authData.uid);
    }
}];

Swift


ref.authAnonymouslyWithCompletionBlock { error, authData in
    if let error = error {
        print("Sign in failed:", error.localizedDescription)
    } else {
        print("Signed in with uid:", authData.uid)
    }
}
SETELAH

Objective-C


[[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRUser *_Nullable user,
                                                  NSError *_Nullable error) {
    if (error) {
        NSLog(@"Sign in failed: %@", error.localizedDescription);
    } else {
        NSLog(@"Signed in with uid: %@", user.uid);
    }
}];

Swift


FIRAuth.auth()!.signInAnonymouslyWithCompletion() { (user, error) in
    if let error = error {
        print("Sign in failed:", error.localizedDescription)
    } else {
        print ("Signed in with uid:", user!.uid)
    }
}

Untuk membaca dokumentasi mengenai penyedia autentikasi lainnya, lihat Class FIRAuth atau Panduan Firebase Authentication.

Membuat agar pengguna login dengan token kustom

Melakukan autentikasi dengan token kustom pada sisi klien juga berfungsi mirip dengan sebelumnya. Berikut adalah cara login dengan token kustom berfungsi di API 2.x dan di API yang baru:

SEBELUM

Objective-C


[ref authWithCustomToken:AUTH_TOKEN
     withCompletionBlock:^(NSError *error, FAuthData *authData) {
    if (error) {
        NSLog(@"Login Failed! %@", error);
    } else {
        NSLog(@"Login succeeded! %@", authData);
    }
}];

Swift


ref.authWithCustomToken(AUTH_TOKEN, withCompletionBlock: { error, authData in
    if error != nil {
        println("Login failed! \(error)")
    } else {
        println("Login succeeded! \(authData)")
    }
})
SETELAH

Objective-C


[[FIRAuth auth] signInWithCustomToken:customToken
                           completion:^(FIRUser *_Nullable user,
                                        NSError *_Nullable error) {
                             // ...
                           }];

Swift


FIRAuth.auth()?.signIn(withCustomToken: customToken ?? "") { (user, error) in
  // ...
}

Token kustom yang Anda buat pada server memiliki format baru. Anda dapat menggunakan Firebase Admin SDK untuk Node.js dan Java guna membuat token kustom yang kompatibel dengan API baru, atau membuat token kustom menggunakan library JWT pihak ketiga.

Perlu diperhatikan bahwa Firebase Admin SDK menghasilkan token kustom yang akan habis masa berlakunya setelah satu jam, tidak seperti library helper untuk API 2.x, yang secara default menghasilkan token yang akan habis masa berlakunya setelah 24 jam.

Membuat agar pengguna logout

SEBELUM

Objective-C


[ref unauth];

Swift


ref.unauth()
SETELAH

Objective-C


[[FIRAuth auth] signOut:nil];

Swift


try! FIRAuth.auth()!.signOut()

Memantau status autentikasi

SEBELUM

Objective-C


[ref observeAuthEventWithBlock:^(FAuthData *authData) {
    if (authData) {
        NSLog(@"User is signed in with uid: %@", authData.uid);
    } else {
        NSLog(@"No user is signed in.");
    }
}];

Swift


ref.observeAuthEventWithBlock({ authData in
    if authData != nil {
        print("User is signed in with uid:", authData.uid)
    } else {
        print("No user is signed in.")
    }
})
SETELAH

Objective-C


[[FIRAuth auth] addAuthStateDidChangeListener:^(FIRAuth * _Nonnull auth, FIRUser * _Nullable user) {
    if (user) {
        NSLog(@"User is signed in with uid: %@", user.uid);
    } else {
        NSLog(@"No user is signed in.");
    }
  }];

Swift


FIRAuth.auth()!.addAuthStateDidChangeListener() { (auth, user) in
    if let user = user {
        print("User is signed in with uid:", user.uid)
    } else {
        print("No user is signed in.")
    }
}

FIRAuth memiliki sejumlah fitur baru (penautan akun, penyedia autentikasi yang lebih banyak, dll.). Baca Panduan Autentikasi dan Dokumen Referensi Autentikasi untuk mendapatkan informasi lebih lanjut.

Memindahkan login yang ada

Jika pengguna telah login ke aplikasi Anda dengan SDK yang lama, Anda memerlukan sedikit kode untuk menjaga agar mereka tetap login dengan SDK yang baru. Jika tidak, mereka harus login lagi. Contoh kode open source untuk melakukan hal ini tersedia dalam repositori GitHub Helper Migrasi Firebase Auth.

Mengupdate template setel ulang sandi baru

Jika aplikasi Anda mengizinkan pengguna untuk login dengan autentikasi Email & Sandi, kemungkinan Anda juga memberikan opsi kepada pengguna ini untuk menyetel ulang sandi.

Setelah Anda melakukan upgrade ke SDK yang baru, email untuk menyetel ulang sandi tersebut akan menggunakan template baru yang ditentukan dalam Firebase console. Pastikan untuk mengupdatenya sesuai kebutuhan aplikasi Anda.

Mengupdate library Firebase Anda

Jika menggunakan salah satu library berikut, Anda harus melakukan upgrade ke versi terbaru.

Library Versi yang Didukung Resource
GeoFire 1.2.x GitHub