אפשר להעביר את המצב דרך כתובת URL להמשך כששולחים פעולות אימייל להגדרת סיסמה מחדש או לאימות כתובת האימייל של משתמש. כך המשתמש יוכל לחזור לאפליקציה אחרי השלמת הפעולה. בנוסף, אפשר לציין אם לטפל בקישור לפעולה באימייל ישירות מאפליקציה לנייד כשהיא מותקנת, במקום מדף אינטרנט.
האפשרות הזו יכולה להיות שימושית מאוד בתרחישים הנפוצים הבאים:
יכול להיות שמשתמש שלא מחובר כרגע מנסה לגשת לתוכן נדרשת כניסה של המשתמש. עם זאת, יכול להיות שהמשתמש שכח את הסיסמה שלו ולכן הופעל תהליך האיפוס שלה. בסוף התהליך, המשתמש מצפה לחזור לקטע באפליקציה שאליו הוא ניסה לגשת.
אפליקציה יכולה להציע גישה רק לחשבונות מאומתים. לדוגמה, באפליקציה של ניוזלטר יכול להיות שהמשתמש יתבקש לאמת את כתובת האימייל שלו לפני ההרשמה. המשתמש יבצע את תהליך אימות האימייל ויצפה יחזרו לאפליקציה כדי להשלים את המינוי שלהם.
באופן כללי, כשמשתמש מתחיל תהליך אימות אימייל או איפוס סיסמה באפליקציה של Apple, הוא מצפה להשלים את התהליך בתוך האפליקציה. היכולת להעביר את המצב באמצעות כתובת URL להמשך מאפשרת לו לעשות זאת.
היכולת להעביר מצב באמצעות כתובת URL להמשך היא תכונה חזקה ש-Firebase Auth מספק, ויכולה לשפר משמעותית את חוויית המשתמש.
העברת מצב או כתובת URL להמשך בפעולות באימייל
כדי להעביר בבטחה כתובת URL להמשך, צריך להוסיף את הדומיין של כתובת ה-URL לרשימת ההיתרים במסוף Firebase. כדי לעשות את זה בקטע Authentication, מוסיפים את הדומיין ל הרשימה של דומיינים מורשים בכרטיסייה שיטת כניסה, אם היא לא מופיעה עדיין.
צריך לספק מכונה של FIRActionCodeSettings
כששולחים אימייל לאיפוס סיסמה או אימייל לאימות. הממשק הזה מקבל את הפרמטרים הבאים:
Swift
פרמטר | סוג | תיאור |
---|---|---|
URL |
String | הגדרת הקישור (כתובת URL/המשך) שיש לו משמעויות שונות בהקשרים שונים:
|
iOSBundleID |
String | הגדרת מזהה החבילה. הפעולה הזו תנסה לפתוח את הקישור באפליקציה של Apple אם מותקן. האפליקציה צריכה להיות רשומה במסוף. אם לא מזהה החבילה שצוין, הערך בשדה הזה מוגדר כמזהה החבילה של את החבילה הראשית של האפליקציה. |
androidPackageName |
String | הגדרת שם החבילה ל-Android. הפעולה הזו תנסה לפתוח את הקישור אפליקציית Android, אם היא מותקנת. |
androidInstallIfNotAvailable |
בוליאני | המדיניות הזו מציינת אם להתקין את האפליקציה ל-Android אם המכשיר תומך בה והאפליקציה עדיין לא מותקנת. אם השדה הזה מופיע ללא packageName, תופיע הודעת שגיאה עם הסבר שצריך לציין את packageName יחד עם השדה הזה. |
androidMinimumVersion |
String | גרסת האפליקציה המינימלית שנתמכת בתהליך הזה. אם המיקום צוינה גרסה ישנה יותר וגרסה ישנה יותר של האפליקציה מותקנת, המשתמש מועבר לחנות Play כדי לשדרג את האפליקציה. האפליקציה ל-Android צריך להיות רשום ב-Play Console. |
handleCodeInApp |
בוליאני | אם קישור הפעולה באימייל ייפתח קודם באפליקציה לנייד או בקישור לאינטרנט. ברירת המחדל היא false. אם הערך של הפרמטר הזה מוגדר כ-True, הקישור לקוד הפעולה יישלח כקישור אוניברסלי או כקישור לאפליקציה ל-Android, והאפליקציה תפתח אותו אם היא מותקנת. במקרה של תוצאה שלילית, הקוד יישלח קודם לווידג'ט האינטרנט, ואז המשך הבדיקה יפנה לאפליקציה אם היא מותקנת. |
dynamicLinkDomain |
String | מגדיר את דומיין הקישור הדינמי (או תת-הדומיין) לשימוש בקישור הנוכחי אם הוא נפתח באמצעות קישורים דינמיים ב-Firebase. כמספר מודעות דינמיות ניתן להגדיר דומיינים של קישורים לכל פרויקט, השדה הזה מספק את ביכולת לבחור אחת במפורש. אם לא צוין הדומיין, נעשה שימוש כברירת מחדל. |
Objective-C
פרמטר | סוג | תיאור |
---|---|---|
URL |
NSString | הגדרת הקישור (כתובת ה-URL של המצב/המשך) שיש לו משמעויות שונות בהקשרים שונים:
|
iOSBundleID |
NSString | מגדיר את מזהה החבילה. הפעולה הזו תנסה לפתוח את הקישור באפליקציה של Apple אם מותקן. האפליקציה צריכה להיות רשומה במסוף. |
androidPackageName |
NSString | הגדרת שם החבילה ל-Android. הפעולה הזו תנסה לפתוח את הקישור באפליקציה ל-Android, אם היא מותקנת. |
androidInstallIfNotAvailable |
BOOL | מציינת אם להתקין את האפליקציה ל-Android אם המכשיר תומך בה והאפליקציה עדיין לא מותקנת. אם השדה הזה מופיע ללא packageName, תופיע הודעת שגיאה עם הסבר שצריך לציין את packageName יחד עם השדה הזה. |
androidMinimumVersion |
NSString | גרסת האפליקציה המינימלית שנתמכת בתהליך הזה. אם המיקום צוינה גרסה ישנה יותר וגרסה ישנה יותר של האפליקציה מותקנת, המשתמש מועבר לחנות Play כדי לשדרג את האפליקציה. האפליקציה ל-Android צריך להיות רשום ב-Play Console. |
handleCodeInApp |
בוליאני | אם הקישור לפעולה באימייל ייפתח באפליקציה לנייד או באתר תחילה. ברירת המחדל היא false. אם הערך של הפרמטר הזה מוגדר כ-True, הקישור לקוד הפעולה יישלח כקישור אוניברסלי או כקישור לאפליקציה ל-Android, והאפליקציה תפתח אותו אם היא מותקנת. במקרה של False, הקוד יישלח אל קודם ווידג'ט האינטרנט ואז המשך הוא יפנה לאפליקציה אם מותקנת. |
dynamicLinkDomain |
NSString | הגדרת הדומיין (או תת-הדומיין) של הקישור הדינמי שישמש את הקישור הנוכחי, אם הוא אמור להיפתח באמצעות קישורים דינמיים של Firebase. אפשר להגדיר כמה דומיינים של קישורים דינמיים לכל פרויקט, ולכן השדה הזה מאפשר לבחור דומיין אחד באופן מפורש. אם לא צוין הדומיין, נעשה שימוש כברירת מחדל. |
בדוגמה הבאה מוסבר איך שולחים קישור אימות באימייל שייפתח קודם באפליקציה לנייד כקישור דינמי של Firebase באמצעות הדומיין המותאם אישית של הקישור הדינמי example.page.link
(אפליקציה ל-iOS com.example.ios
או אפליקציה ל-Android com.example.android
, שבה האפליקציה תותקן אם היא לא מותקנת כבר, והגרסה המינימלית היא 12
). קישור העומק יכיל את עומס העבודה של כתובת ה-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. }];
הגדרת קישורים דינמיים ב-Firebase
התכונה Firebase Auth משתמשת בקישורים דינמיים ב-Firebase כדי לשלוח קישור שאמור להיפתח באפליקציה לנייד. כדי להשתמש בתכונה הזו, צריך להגדיר קישורים דינמיים במסוף Firebase.
הפעלת קישורים דינמיים ב-Firebase:
- במסוף Firebase, פותחים את הקטע Dynamic Links.
-
אם עדיין לא אישרתם את התנאים של Dynamic Links ויצרתם דומיין Dynamic Links, עליכם לעשות זאת עכשיו.
אם כבר יצרתם דומיין של Dynamic Links, כדאי לרשום אותו. דומיין Dynamic Links נראה בדרך כלל כמו בדוגמה הבאה:
example.page.link
תצטרכו את הערך הזה כשתקבעו שהאפליקציה שלכם ל-Apple או ל-Android תוכל ליירט את הקישור הנכנס.
הגדרת אפליקציות ל-Android:
- אם בכוונתך לטפל בקישורים האלה מהאפליקציה ל-Android, יש לציין את שם החבילה ב-Android במסוף Firebase הגדרות הפרויקט. בנוסף, צריך לספק את SHA-1 ו-SHA-256 של אישור האפליקציה.
- בנוסף, תצטרכו להגדיר את מסנן ה-Intent לקישור העומק בקובץ AndroidManifest.xml.
- מידע נוסף בנושא זה זמין קבלת הוראות בנוגע לקישורים דינמיים ל-Android.
הגדרת אפליקציות של Apple:
- אם בכוונתך לטפל בקישורים האלה מתוך האפליקציה שלך, יש לציין את מזהה החבילה במסוף Firebase הגדרות הפרויקט. בנוסף, מזהה App Store ומפתח Apple צריך לציין גם את מזהה הצוות.
- צריך גם להגדיר את דומיין הקישור האוניברסלי של FDL גם הדומיין המשויך ביכולות האפליקציה שלך.
- אם אתם מתכננים להפיץ את האפליקציה לגרסאות iOS 8 ומטה, תצטרכו להגדיר את מזהה החבילה כסכימה בהתאמה אישית לכתובות URL נכנסות.
- מידע נוסף זמין במאמר קבלת קישורים דינמיים בפלטפורמות של Apple.
טיפול בפעולות אימייל באפליקציית אינטרנט
אפשר לציין אם ברצונך לטפל בקישור לקוד הפעולה מהאינטרנט
של האפליקציה תחילה ואז הפניה אוטומטית לדף אינטרנט אחר או לאפליקציה אחרת לנייד
לאחר השלמתה בהצלחה, בתנאי שהאפליקציה לנייד זמינה.
כדי לעשות זאת, מגדירים את handleCodeInApp
כ-false
באובייקט FIRActionCodeSettings
(Obj-C) או ActionCodeSettings
(Swift). בזמן
מזהה חבילה
או שם חבילה ב-Android, ציון השם יאפשר למשתמש
כדי להפנות חזרה לאפליקציה שצוינה לאחר השלמת קוד פעולה באימייל.
כתובת ה-URL לאתר שצוינה כאן היא זו שהוגדרה בקטע 'תבניות של פעולות באימייל'. ברירת מחדל מוקצה לכל הפרויקטים. במאמר התאמה אישית של טיפול בהודעות אימייל מוסבר איך להתאים אישית את הטיפול בפעולות אימייל.
במקרה כזה, הקישור בפרמטר השאילתה continueURL
יהיה קישור FDL שהמטען הייעודי שלו הוא URL
שצוין באובייקט ActionCodeSettings
. אתם יכולים ליירט את הקישור הנכנס מהאפליקציה שלכם ולטפל בו ללא תלות נוספת, אבל מומלץ להשתמש בספריית הלקוח של FDL כדי לנתח את הקישור לעומק.
בעת טיפול בפעולות אימייל כמו אימות אימייל, קוד הפעולה מ-
צריך לנתח פרמטר שאילתה אחד (oobCode
) מקישור העומק ואז להחיל אותו
דרך applyActionCode
כדי שהשינוי ייכנס לתוקף, כלומר אימייל לאימות.
טיפול בפעולות אימייל באפליקציה לנייד
אתם יכולים לציין אם אתם רוצים לטפל בקישור של קוד הפעולה באפליקציה לנייד קודם, בתנאי שהיא מותקנת. עם אפליקציות ל-Android,
אפשר גם לציין באמצעות androidInstallIfNotAvailable
יש להתקין את האפליקציה אם המכשיר תומך בה והיא עדיין לא מותקנת
מותקנת.
אם הקישור נלחץ ממכשיר שלא תומך באפליקציה לנייד, הוא נפתח מדף אינטרנט במקום זאת.
כדי לעשות זאת, מגדירים את handleCodeInApp
כ-true
באובייקט FIRActionCodeSettings
(Obj-C) או ActionCodeSettings
(Swift).
גם שם החבילה או מזהה החבילה של האפליקציה לנייד צריך להיות
צוינה.כתובת האתר החלופית שמשמשת כאן, כאשר אין אפליקציה לנייד זמינה, היא
את ההגדרה שהוגדרה בקטע 'תבניות פעולה באימייל'. ברירת מחדל היא
מוקצה לכל הפרויקטים. במאמר התאמה אישית של טיפול בהודעות אימייל מוסבר איך להתאים אישית את הטיפול בפעולות אימייל.
במקרה כזה, הקישור לאפליקציה לנייד שיישלח למשתמש יהיה קישור FDL
המטען הייעודי (Payload) הוא כתובת ה-URL של קוד הפעולה, שמוגדרת במסוף, עם השאילתה
הפרמטרים oobCode
, mode
, apiKey
ו-continueUrl
. הערך השני יהיה URL
המקורי שצוין באובייקט FIRActionCodeSettings
(Obj-C) או באובייקט ActionCodeSettings
(Swift). אתם יכולים ליירט את הקישור הנכנס מהאפליקציה ולטפל בו בלי תלות נוספת, אבל מומלץ להשתמש בספריית הלקוח של FDL כדי לנתח את הקישור לעומק. אפשר להחיל את קוד הפעולה ישירות מאפליקציה לנייד, בדומה לאופן שבו הוא מטופל בתהליך האינטרנט שמתואר בקטע התאמה אישית של שירותי אימייל.
בעת טיפול בפעולות אימייל כמו אימות אימייל, קוד הפעולה מ-
צריך לנתח פרמטר שאילתה אחד (oobCode
) מקישור העומק ואז להחיל אותו
דרך applyActionCode
כדי שהשינוי ייכנס לתוקף, כלומר אימייל לאימות.