מצב עובר בפעולות אימייל

אתה יכול להעביר מצב באמצעות כתובת אתר המשך בעת שליחת פעולות אימייל לאיפוס סיסמה או אימות דוא"ל של משתמש. זה מספק למשתמש את האפשרות לחזור לאפליקציה לאחר השלמת הפעולה. בנוסף, תוכל לציין אם לטפל בקישור פעולת הדוא"ל ישירות מאפליקציה לנייד כשהיא מותקנת במקום מדף אינטרנט.

זה יכול להיות שימושי ביותר בתרחישים הנפוצים הבאים:

  • ייתכן שמשתמש, שאינו מחובר כעת, מנסה לגשת לתוכן המחייב את המשתמש להיכנס. עם זאת, ייתכן שהמשתמש שכח את הסיסמה שלו ולכן מפעיל את זרימת איפוס הסיסמה. בסוף הזרימה, המשתמש מצפה לחזור לקטע של האפליקציה שאליו ניסו לגשת.

  • אפליקציה יכולה להציע רק גישה לחשבונות מאומתים. לדוגמה, אפליקציית ניוזלטר עשויה לדרוש מהמשתמש לאמת את הדוא"ל שלו לפני שהוא מנוי. המשתמש יעבור את זרימת אימות הדוא"ל ומצפה שיוחזרו לאפליקציה כדי להשלים את המנוי שלו.

  • באופן כללי, כאשר משתמש מתחיל איפוס סיסמה או זרימת אימות דואר אלקטרוני באפליקציית Apple, הוא מצפה להשלים את הזרימה בתוך האפליקציה; היכולת להעביר מצב דרך המשך כתובת אתר מאפשרת זאת.

היכולת להעביר מצב באמצעות כתובת URL המשך היא תכונה רבת עוצמה ש-Firebase Auth מספקת ואשר יכולה לשפר משמעותית את חווית המשתמש.

העברת כתובת/כתובת אתר להמשך בפעולות אימייל

כדי להעביר באופן מאובטח כתובת URL המשך, הדומיין של כתובת האתר יצטרך להיות ברשימת ההיתרים במסוף Firebase . זה נעשה בקטע אימות על ידי הוספת דומיין זה לרשימת הדומיינים המורשים תחת הכרטיסייה שיטת כניסה אם הוא עדיין לא שם.

יש לספק מופע של FIRActionCodeSettings בעת שליחת אימייל לאיפוס סיסמה או דוא"ל אימות. ממשק זה לוקח את הפרמטרים הבאים:

מָהִיר

פָּרָמֶטֶר סוּג תיאור
URL חוּט

מגדיר את הקישור (מצב/המשך כתובת URL) שיש לו משמעויות שונות בהקשרים שונים:

  • כאשר הקישור מטופל בווידג'טים לפעולת האינטרנט, זהו הקישור העמוק בפרמטר השאילתה continueUrl .
  • כאשר הקישור מטופל ישירות באפליקציה, זהו פרמטר השאילתה continueUrl בקישור העמוק של הקישור הדינמי.
iOSBundleID חוּט מגדיר את מזהה החבילה. זה ינסה לפתוח את הקישור באפליקציית אפל אם היא מותקנת. האפליקציה צריכה להיות רשומה בקונסולה. אם לא מסופק מזהה חבילה, הערך של שדה זה מוגדר למזהה החבילה של החבילה הראשית של האפליקציה.
androidPackageName חוּט מגדיר את שם החבילה של Android. זה ינסה לפתוח את הקישור באפליקציית אנדרואיד אם היא מותקנת.
androidInstallIfNotAvailable בול מציין אם להתקין את אפליקציית Android אם המכשיר תומך בה והאפליקציה עדיין לא מותקנת. אם שדה זה מסופק ללא שם חבילה, תופיע שגיאה המסבירה כי יש לספק את שם החבילה בשילוב עם שדה זה.
androidMinimumVersion חוּט הגרסה המינימלית של האפליקציה שנתמכת בזרימה זו. אם מציינת minimumVersion, ומותקנת גרסה ישנה יותר של האפליקציה, המשתמש מועבר לחנות Play כדי לשדרג את האפליקציה. אפליקציית אנדרואיד צריכה להיות רשומה בקונסולה.
handleCodeInApp בול האם הקישור לפעולת האימייל ייפתח תחילה באפליקציה לנייד או בקישור אינטרנט. ברירת המחדל היא שקר. כאשר הוא מוגדר כ-true, קישור קוד הפעולה יישלח כקישור אוניברסלי או קישור לאפליקציה של Android וייפתח על ידי האפליקציה אם מותקנת. במקרה השקרי, הקוד יישלח תחילה לווידג'ט האינטרנט ולאחר מכן ב-Continue יפנה מחדש לאפליקציה אם מותקנת.
dynamicLinkDomain חוּט מגדיר את תחום הקישור הדינמי (או תת-הדומיין) לשימוש עבור הקישור הנוכחי אם הוא ייפתח באמצעות Firebase Dynamic Links. מכיוון שניתן להגדיר מספר דומיינים של קישורים דינמיים לכל פרויקט, שדה זה מספק את היכולת לבחור אחד במפורש. אם לא מסופק, הדומיין הראשון משמש כברירת מחדל.

Objective-C

פָּרָמֶטֶר סוּג תיאור
URL NSString

מגדיר את הקישור (מצב/המשך כתובת URL) שיש לו משמעויות שונות בהקשרים שונים:

  • כאשר הקישור מטופל בווידג'טים לפעולת האינטרנט, זהו הקישור העמוק בפרמטר השאילתה continueUrl .
  • כאשר הקישור מטופל ישירות באפליקציה, זהו פרמטר השאילתה continueUrl בקישור העמוק של הקישור הדינמי.
iOSBundleID NSString מגדיר את מזהה החבילה. זה ינסה לפתוח את הקישור באפליקציית אפל אם היא מותקנת. האפליקציה צריכה להיות רשומה בקונסולה.
androidPackageName NSString מגדיר את שם החבילה של Android. זה ינסה לפתוח את הקישור באפליקציית אנדרואיד אם היא מותקנת.
androidInstallIfNotAvailable BOOL מציין אם להתקין את אפליקציית Android אם המכשיר תומך בה והאפליקציה עדיין לא מותקנת. אם שדה זה מסופק ללא שם חבילה, תופיע שגיאה המסבירה כי יש לספק את שם החבילה בשילוב עם שדה זה.
androidMinimumVersion NSString הגרסה המינימלית של האפליקציה שנתמכת בזרימה זו. אם מציינת minimumVersion, ומותקנת גרסה ישנה יותר של האפליקציה, המשתמש מועבר לחנות Play כדי לשדרג את האפליקציה. אפליקציית אנדרואיד צריכה להיות רשומה בקונסולה.
handleCodeInApp BOOL האם הקישור לפעולת האימייל ייפתח תחילה באפליקציה לנייד או בקישור אינטרנט. ברירת המחדל היא שקר. כאשר הוא מוגדר כ-true, קישור קוד הפעולה יישלח כקישור אוניברסלי או קישור לאפליקציה של Android וייפתח על ידי האפליקציה אם מותקנת. במקרה השקרי, הקוד יישלח תחילה לווידג'ט האינטרנט ולאחר מכן ב-Continue יפנה מחדש לאפליקציה אם מותקנת.
dynamicLinkDomain NSString מגדיר את תחום הקישור הדינמי (או תת-הדומיין) לשימוש עבור הקישור הנוכחי אם הוא ייפתח באמצעות Firebase Dynamic Links. מכיוון שניתן להגדיר מספר דומיינים של קישורים דינמיים לכל פרויקט, שדה זה מספק את היכולת לבחור אחד במפורש. אם לא מסופק, הדומיין הראשון משמש כברירת מחדל.

הדוגמה הבאה ממחישה כיצד לשלוח קישור לאימות אימייל שייפתח באפליקציה לנייד תחילה כקישור דינמי של Firebase באמצעות דומיין הקישור הדינמי המותאם אישית example.page.link (אפליקציית iOS com.example.ios או אפליקציית Android com.example.android שבו האפליקציה תתקין אם היא לא כבר מותקנת והגרסה המינימלית היא 12 ). הקישור העמוק יכיל את מטען כתובת האתר להמשך https://www.example.com/?email=user@example.com .

מָהִיר


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 Auth משתמש ב-Firebase Dynamic Links בעת שליחת קישור שאמור להיפתח באפליקציה לנייד. על מנת להשתמש בתכונה זו, יש להגדיר קישורים דינמיים ב-Firebase Console.

  1. הפעל קישורים דינמיים של Firebase:

    1. במסוף Firebase , פתח את הקטע קישורים דינמיים .
    2. אם עדיין לא הסכמתם לתנאי ה-Dynamic Links ויצרתם תחום Dynamic Links, עשו זאת כעת.

      אם כבר יצרת דומיין Dynamic Links, שים לב לזה. תחום קישורים דינמיים נראה בדרך כלל כמו הדוגמה הבאה:

      example.page.link

      תזדקק לערך זה כאשר תגדיר את אפליקציית Apple או Android ליירט את הקישור הנכנס.

  2. הגדרת אפליקציות אנדרואיד:

    1. אם אתה מתכנן לטפל בקישורים האלה מאפליקציית Android שלך, יש לציין את שם החבילה של Android בהגדרות הפרויקט של Firebase Console. בנוסף, יש לספק את SHA-1 ו-SHA-256 של אישור הבקשה.
    2. תצטרך גם להגדיר את מסנן הכוונות עבור הקישור העמוק בקובץ AndroidManifest.xml שלך.
    3. למידע נוסף על כך, עיין בהוראות קבלת קישורים דינמיים ל-Android .
  3. הגדרת יישומי אפל:

    1. אם אתה מתכנן לטפל בקישורים האלה מהאפליקציה שלך, יש לציין את מזהה החבילה בהגדרות הפרויקט של Firebase Console. בנוסף, יש לציין גם את מזהה ה-App Store ואת מזהה צוות המפתחים של Apple.
    2. תצטרך גם להגדיר את תחום הקישור האוניברסלי של FDL כדומיין משויך ביכולות היישום שלך.
    3. אם אתה מתכנן להפיץ את האפליקציה שלך לגרסאות iOS 8 ומטה, תצטרך להגדיר את מזהה החבילה שלך כסכימה מותאמת אישית עבור כתובות URL נכנסות.
    4. למידע נוסף על כך, עיין בהוראות קבלת פלטפורמות אפל קישורים דינמיים .

טיפול בפעולות דואר אלקטרוני ביישום אינטרנט

אתה יכול לציין אם ברצונך לטפל בקישור קוד הפעולה מאפליקציית אינטרנט תחילה ולאחר מכן להפנות מחדש לדף אינטרנט אחר או לאפליקציה סלולרית לאחר סיום מוצלח, בתנאי שהאפליקציה לנייד זמינה. זה נעשה על ידי הגדרת handleCodeInApp ל- false באובייקט FIRActionCodeSettings (Obj-C) או ActionCodeSettings (Swift). אמנם אין צורך במזהה חבילה או שם חבילת אנדרואיד, אך אספקתם תאפשר למשתמש להפנות חזרה לאפליקציה שצוינה עם השלמת קוד הפעולה בדוא"ל.

כתובת האתר המשמשת כאן, היא זו שהוגדרה בקטע תבניות פעולות דוא"ל. ברירת מחדל מסופקת עבור כל הפרויקטים. עיין בהתאמה אישית של מטפלי דוא"ל כדי ללמוד עוד כיצד להתאים אישית את המטפל בפעולות דוא"ל.

במקרה זה, הקישור בתוך פרמטר השאילתה continueURL יהיה קישור FDL שהעומס שלו הוא כתובת ה- URL שצוינה באובייקט ActionCodeSettings . בעוד שאתה יכול ליירט ולטפל בקישור הנכנס מהאפליקציה שלך ללא תלות נוספת, אנו ממליצים להשתמש בספריית הלקוח FDL כדי לנתח עבורך את הקישור העמוק.

בעת טיפול בפעולות דוא"ל כגון אימות דוא"ל, יש לנתח את קוד הפעולה מפרמטר השאילתה oobCode מהקישור העמוק ולאחר מכן להחיל אותו באמצעות applyActionCode כדי שהשינוי ייכנס לתוקף, כלומר אימייל לאימות.

טיפול בפעולות אימייל באפליקציה לנייד

אתה יכול לציין אם ברצונך לטפל תחילה בקישור קוד הפעולה בתוך היישום הנייד שלך, בתנאי שהוא מותקן. עם אפליקציות אנדרואיד, יש לך גם את היכולת לציין דרך ה- androidInstallIfNotAvailable שהאפליקציה תותקן אם המכשיר תומך בה והיא עדיין לא מותקנת. אם הקישור נלחץ ממכשיר שאינו תומך באפליקציה לנייד, הוא נפתח מדף אינטרנט במקום זאת. זה נעשה על ידי הגדרת handleCodeInApp ל- true באובייקט FIRActionCodeSettings (Obj-C) או ActionCodeSettings (Swift). יש לציין גם את שם החבילה של ה-Android או מזהה החבילה של האפליקציה לנייד. כתובת האתר החלופית המשמשת כאן, כאשר אין אפליקציה לנייד זמינה, היא זו המוגדרת בקטע תבניות פעולות דוא"ל. ברירת מחדל מסופקת עבור כל הפרויקטים. עיין בהתאמה אישית של מטפלי דוא"ל כדי ללמוד עוד כיצד להתאים אישית את המטפל בפעולות דוא"ל.

במקרה זה, הקישור לאפליקציה לנייד שנשלח למשתמש יהיה קישור FDL שהעומס שלו הוא כתובת ה-URL של קוד הפעולה, המוגדר במסוף, עם פרמטרי השאילתה oobCode , mode , apiKey ו- continueUrl . האחרונה תהיה URL המקורית שצוינה באובייקט FIRActionCodeSettings (Obj-C) או ActionCodeSettings (Swift). בעוד שאתה יכול ליירט ולטפל בקישור הנכנס מהאפליקציה שלך ללא תלות נוספת, אנו ממליצים להשתמש בספריית הלקוח FDL כדי לנתח עבורך את הקישור העמוק. ניתן להחיל את קוד הפעולה ישירות מאפליקציה לנייד בדומה לאופן שבו הוא מטופל מזרימת האינטרנט המתוארת בסעיף התאמה אישית של מטפלי אימייל .

בעת טיפול בפעולות דוא"ל כגון אימות דוא"ל, יש לנתח את קוד הפעולה מפרמטר השאילתה oobCode מהקישור העמוק ולאחר מכן להחיל אותו באמצעות applyActionCode כדי שהשינוי ייכנס לתוקף, כלומר אימייל לאימות.