Anda dapat meneruskan status melalui continue URL saat mengirim tindakan email untuk menyetel ulang sandi atau memverifikasi email pengguna. Dengan begitu, pengguna dapat kembali ke aplikasi setelah tindakan selesai. Selain itu, Anda dapat menentukan apakah akan menangani link tindakan email langsung dari aplikasi seluler saat diinstal, bukan dari halaman web.
Hal ini bisa sangat berguna dalam skenario umum berikut:
Pengguna, yang tidak sedang login, mungkin mencoba mengakses konten yang mengharuskannya untuk login. Namun, pengguna mungkin lupa sandinya sehingga memicu proses reset sandi. Pada akhir proses, pengguna tersebut ingin kembali ke bagian aplikasi yang semula ingin diakses.
Aplikasi mungkin hanya menawarkan akses ke akun terverifikasi. Misalnya, aplikasi newsletter mungkin meminta pengguna untuk memverifikasi email sebelum berlangganan. Pengguna akan melalui alur verifikasi email dan kembali lagi ke aplikasi untuk menyelesaikan proses langganan mereka.
Secara umum, saat pengguna memulai reset sandi atau alur verifikasi email pada aplikasi Apple, mereka ingin menyelesaikan alur di dalam aplikasi; dengan kemampuan untuk meneruskan status melalui continue URL, hal ini bisa dilakukan.
Kemampuan dalam meneruskan status melalui continue URL merupakan fitur yang sangat bermanfaat dari Firebase Auth, yang memungkinkan pengguna untuk mendapatkan pengalaman yang jauh lebih baik.
Meneruskan status/continue URL dalam tindakan email
Agar bisa meneruskan continue URL dengan aman, domain untuk URL harus diberi akses di Firebase console. Hal ini dilakukan di bagian Authentication dengan menambahkan domain ini ke daftar Authorized domains di bawah tab Sign-in method, jika domain tersebut belum ada di daftar.
Instance FIRActionCodeSettings
harus diberikan saat mengirim email reset sandi atau email verifikasi. Antarmuka ini mengambil parameter berikut:
Swift
Parameter | Jenis | Deskripsi |
---|---|---|
URL |
String | Menetapkan link (status/continue URL) yang memiliki arti berbeda dalam konteks lain:
|
iOSBundleID |
String | Menetapkan ID paket. Link akan dicoba dibuka dalam aplikasi Apple jika aplikasi tersebut sudah terinstal. Aplikasi harus terdaftar di Console. Jika tidak ada ID Paket, nilai kolom ini akan ditetapkan ke ID paket dari paket utama Aplikasi. |
androidPackageName |
String | Menetapkan nama paket Android. Parameter ini akan mencoba membuka link di aplikasi Android jika sudah terinstal. |
androidInstallIfNotAvailable |
Bool | Menentukan apakah aplikasi Android akan diinstal jika perangkatnya mendukung dan aplikasi tersebut belum diinstal. Jika kolom ini diisi tanpa memasukkan packageName, akan muncul error yang menjelaskan bahwa packageName untuk kolom ini harus diisikan. |
androidMinimumVersion |
String | Versi minimum aplikasi yang didukung dalam alur ini. Jika minimumVersion ditentukan, dan aplikasi versi yang lebih lama sudah diinstal, pengguna akan diarahkan ke Play Store untuk mengupgrade aplikasi tersebut. Aplikasi Android harus terdaftar di Console. |
handleCodeInApp |
Bool | Apakah link tindakan email akan dibuka di aplikasi seluler atau link web terlebih dahulu. Secara default, nilainya adalah false. Saat disetel ke true, link kode tindakan akan dikirim sebagai Link Universal atau Link Aplikasi Android dan akan dibuka oleh aplikasi jika sudah terinstal. Jika disetel ke false, kode akan dikirim ke widget web terlebih dahulu, kemudian akan dialihkan ke aplikasi jika terinstal. |
dynamicLinkDomain |
String | Menetapkan domain (atau subdomain) link dinamis untuk digunakan oleh link saat ini, jika domain tersebut akan dibuka menggunakan Firebase Dynamic Links. Karena satu project dapat memiliki konfigurasi beberapa domain link dinamis, kolom ini memberi kemampuan untuk secara eksplisit memilih satu domain. Jika tidak ada yang ditentukan, domain pertama akan digunakan secara default. |
Objective-C
Parameter | Jenis | Deskripsi |
---|---|---|
URL |
NSString | Menetapkan link (status/continue URL) yang memiliki arti berbeda dalam konteks lain:
|
iOSBundleID |
NSString | Menetapkan ID paket. Link akan dicoba dibuka dalam aplikasi Apple jika aplikasi tersebut sudah terinstal. Aplikasi harus terdaftar di Console. |
androidPackageName |
NSString | Menetapkan nama paket Android. Parameter ini akan mencoba membuka link di aplikasi Android jika sudah terinstal. |
androidInstallIfNotAvailable |
BOOL | Menentukan apakah aplikasi Android akan diinstal jika perangkatnya mendukung dan aplikasi tersebut belum diinstal. Jika kolom ini diisi tanpa memasukkan packageName, akan muncul error yang menjelaskan bahwa packageName untuk kolom ini harus diisikan. |
androidMinimumVersion |
NSString | Versi minimum aplikasi yang didukung dalam alur ini. Jika minimumVersion ditentukan, dan aplikasi versi yang lebih lama sudah diinstal, pengguna akan diarahkan ke Play Store untuk mengupgrade aplikasi tersebut. Aplikasi Android harus terdaftar di Console. |
handleCodeInApp |
BOOL | Apakah link tindakan email akan dibuka di aplikasi seluler atau link web terlebih dahulu. Secara default, nilainya adalah false. Saat disetel ke true, link kode tindakan akan dikirim sebagai Link Universal atau Link Aplikasi Android dan akan dibuka oleh aplikasi jika sudah terinstal. Jika disetel ke false, kode akan dikirim ke widget web terlebih dulu, kemudian akan dialihkan ke aplikasi jika terinstal. |
dynamicLinkDomain |
NSString | Menetapkan domain (atau subdomain) link dinamis untuk digunakan oleh link saat ini, jika domain tersebut akan dibuka menggunakan Firebase Dynamic Links. Karena satu project dapat memiliki konfigurasi beberapa domain link dinamis, kolom ini memberi kemampuan untuk secara eksplisit memilih satu domain. Jika tidak ada yang ditentukan, domain pertama akan digunakan secara default. |
Contoh berikut menggambarkan cara mengirimkan link verifikasi email yang akan terbuka di aplikasi seluler terlebih dahulu sebagai Firebase Dynamic Link menggunakan domain link dinamis kustom example.page.link
(aplikasi iOS com.example.ios
atau aplikasi Android com.example.android
tempat Aplikasi akan diinstal jika belum, dan versi minimumnya adalah 12
). Deep link akan berisi payload continue URL https://www.example.com/?email=user@example.com
.
Swift
var actionCodeSettings = ActionCodeSettings.init() actionCodeSettings.canHandleInApp = true let user = Auth.auth().currentUser() actionCodeSettings.URL = String(format: "https://www.example.com/?email=%@", user.email) actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier! actionCodeSettings.setAndroidPakageName("com.example.android", installIfNotAvailable:true, minimumVersion:"12") // When multiple custom dynamic link domains are defined, specify which one to use. actionCodeSettings.dynamicLinkDomain = "example.page.link" user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in if error { // Error occurred. Inspect error.code and handle error. return } // Email verification sent. })
Objective-C
FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init]; actionCodeSettings.handleCodeInApp = YES; FIRUser *user = [FIRAuth auth].currentUser; NSString *urlString = [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email]; actionCodeSettings.URL = [NSURL URLWithString:urlString]; actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier; // When multiple custom dynamic link domains are defined, specify which one to use. actionCodeSettings.dynamicLinkDomain = @"example.page.link"; [actionCodeSettings setAndroidPackageName:@"com.example.android" installIfNotAvailable:YES minimumVersion:'12']; [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings completion:^(NSError *_Nullable error) { if (error) { // Error occurred. Inspect error.code and handle error. return; } // Email verification sent. }];
Mengonfigurasi Firebase Dynamic Links
Firebase Auth menggunakan Firebase Dynamic Links saat mengirim link yang dimaksudkan untuk dibuka di aplikasi seluler. Untuk menggunakan fitur ini, Dynamic Links perlu dikonfigurasi di Firebase Console.
Aktifkan Firebase Dynamic Links:
- Di Firebase console, buka bagian Dynamic Links.
-
Jika Anda belum menyetujui persyaratan Dynamic Links dan membuat domain Dynamic Links, lakukan sekarang.
Jika Anda sudah membuat domain Dynamic Links, catat domain tersebut. Domain Dynamic Links biasanya terlihat seperti contoh berikut:
example.page.link
Anda akan memerlukan nilai ini saat mengonfigurasi aplikasi Apple atau Android untuk menangkap link yang masuk.
Mengonfigurasi aplikasi Android:
- Jika ingin menangani link ini dari aplikasi Android, Anda harus menentukan nama package Android di setelan project Firebase Console. Selain itu, SHA-1 dan SHA-256 sertifikat aplikasi harus dimasukkan.
- Anda juga harus mengonfigurasi filter intent untuk deep link dalam file AndroidManifest.xml.
- Untuk informasi selengkapnya, lihat Petunjuk Menerima Dynamic Links Android.
Mengonfigurasi aplikasi Apple:
- Jika ingin menangani link ini dari aplikasi, Anda harus menentukan ID paket di setelan project Firebase Console. Selain itu, ID App Store dan ID Apple Developer Team juga harus ditentukan.
- Anda juga harus mengonfigurasi domain link universal FDL sebagai Domain Terkait (Associated Domain) pada kapabilitas aplikasi Anda.
- Jika ingin mendistribusikan aplikasi ke iOS versi 8 dan yang lebih lama, Anda harus menetapkan ID paket sebagai skema kustom untuk URL masuk.
- Untuk informasi selengkapnya, lihat Petunjuk untuk menerima Dynamic Link platform Apple.
Menangani tindakan email dalam aplikasi web
Anda dapat menentukan apakah akan menangani link kode tindakan dari aplikasi web terlebih dahulu, kemudian dialihkan ke halaman web atau aplikasi seluler lain setelah berhasil diselesaikan, jika aplikasi seluler tersedia.
Hal ini dilakukan dengan menyetel handleCodeInApp
menjadi false
di objek FIRActionCodeSettings
(Obj-C) atau ActionCodeSettings
(Swift). Meskipun ID paket atau nama paket Android tidak diperlukan, namun jika diberikan, pengguna dapat dialihkan kembali ke aplikasi yang ditentukan saat penyelesaian kode tindakan email.
URL web yang digunakan di sini adalah yang dikonfigurasi di bagian template tindakan email. URL default disediakan untuk semua project. Baca artikel menyesuaikan pengendali email untuk mempelajari lebih lanjut cara menyesuaikan pengendali tindakan email.
Dalam kasus ini, link dalam parameter kueri continueURL
akan menjadi
link FDL yang payload-nya adalah URL
sebagaimana ditentukan dalam objek ActionCodeSettings
. Meskipun Anda dapat menangkap dan menangani link masuk dari aplikasi tanpa dependensi tambahan, sebaiknya gunakan library klien FDL untuk mengurai deep link.
Saat menangani tindakan email, seperti verifikasi email, kode tindakan dari parameter kueri oobCode
harus diurai dari deep link, lalu diterapkan melalui applyActionCode
agar perubahan diterapkan, yaitu email tersebut diverifikasi.
Menangani tindakan email dalam aplikasi seluler
Anda dapat menentukan apakah akan menangani link kode tindakan dalam aplikasi seluler Anda terlebih dahulu atau tidak, asalkan aplikasi seluler terinstal. Dengan aplikasi Android, Anda juga dapat menentukan apakah aplikasi itu akan diinstal atau tidak jika aplikasi belum terinstal dan perangkat tersebut mendukungnya melalui androidInstallIfNotAvailable
.
Jika diklik dari perangkat yang tidak mendukung aplikasi seluler tersebut, link akan dibuka dari halaman web.
Hal ini dilakukan dengan menyetel handleCodeInApp
menjadi true
di objek FIRActionCodeSettings
(Obj-C) atau ActionCodeSettings
(Swift). Nama paket Android atau ID paket dari aplikasi seluler itu juga harus ditentukan. URL web penggantian yang digunakan di sini adalah URL yang dikonfigurasi di bagian template tindakan email jika tidak ada aplikasi seluler yang tersedia. URL default disediakan untuk semua project. Baca artikel menyesuaikan pengendali email untuk mempelajari lebih lanjut cara menyesuaikan pengendali tindakan email.
Dalam kasus ini, link aplikasi seluler yang dikirimkan kepada pengguna adalah link FDL yang payload-nya adalah URL kode tindakan yang dikonfigurasi di Console, dengan parameter kueri oobCode
, mode
, apiKey
, dan continueUrl
. Parameter kueri yang disebut terakhir adalah URL
asli yang ditentukan dalam objek FIRActionCodeSettings
(Obj-C) atau ActionCodeSettings
(Swift). Meskipun Anda dapat menghalangi dan menangani link masuk dari aplikasi Anda tanpa dependensi tambahan, sebaiknya gunakan library klien FDL untuk mengurai deep link untuk Anda. Kode tindakan dapat diterapkan secara langsung dari aplikasi seluler, mirip dengan ketika ditangani dari alur web yang dijelaskan di bagian menyesuaikan pengendali email.
Saat menangani tindakan email, seperti verifikasi email, kode tindakan dari parameter kueri oobCode
harus diurai dari deep link, lalu diterapkan melalui applyActionCode
agar perubahan diterapkan, yaitu email tersebut diverifikasi.