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

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

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

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

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

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

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

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

    1. במסוף Firebase , פתח את הקטע קישורים דינמיים .
    2. אם עדיין לא הסכמתם לתנאי ה-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). יהיה צורך לציין גם את שם החבילה או מזהה החבילה של האפליקציה לנייד. כתובת האתר החלופית המשמשת כאן, כאשר אין אפליקציה לנייד זמינה, היא זו שהוגדרה בקטע תבניות פעולות דוא"ל. ברירת מחדל מסופקת עבור כל הפרויקטים. עיין בהתאמה אישית של מטפלי דוא"ל כדי ללמוד עוד כיצד להתאים אישית את המטפל בפעולות דוא"ל.

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

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