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

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

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

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

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

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

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

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

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

צריך לספק מופע של ActionCodeSettings כששולחים הודעת אימייל לאיפוס סיסמה או הודעת אימייל לאימות. הממשק הזה לוקח את את הפרמטרים הבאים:

פרמטר סוג תיאור
url String

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

  • כאשר מתבצע טיפול בקישור בווידג'טים של פעולה באינטרנט, זהו הפרמטר העמוק בפרמטר של השאילתה continueUrl.
  • כשהקישור מטופל ישירות באפליקציה, זהו פרמטר השאילתה continueUrl בקישורי העומק של הקישור הדינמי.
iOSBundleId String הגדרת מזהה החבילה. הפעולה הזו תנסה לפתוח את הקישור באפליקציה של Apple אם מותקן. האפליקציה צריכה להיות רשומה במסוף. אם לא מזהה החבילה שצוין, הערך בשדה הזה מוגדר כמזהה החבילה של את החבילה הראשית של האפליקציה.
androidPackageName String מגדיר את שם החבילה של Android. הפעולה הזו תנסה לפתוח את הקישור אפליקציית Android, אם היא מותקנת.
androidInstallApp בוליאני קובע אם להתקין את אפליקציית Android אם המכשיר תומך בה והאפליקציה עדיין לא מותקנת. אם השדה הזה מופיע ללא packageName, תופיע הודעת שגיאה עם הסבר שצריך לציין את packageName יחד עם השדה הזה.
androidMinimumVersion String גרסת האפליקציה המינימלית שנתמכת בתהליך הזה. אם המיקום צוינה גרסה ישנה יותר וגרסה ישנה יותר של האפליקציה מותקנת, המשתמש מועבר לחנות Play כדי לשדרג את האפליקציה. האפליקציה ל-Android צריך להיות רשום ב-Play Console.
handleCodeInApp בוליאני אם הקישור לפעולה באימייל ייפתח באפליקציה לנייד או באתר תחילה. ערך ברירת המחדל הוא False. אם המדיניות מוגדרת כ-True, הקישור של קוד הפעולה הקובץ יישלח כקישור אוניברסלי או כקישור לאפליקציה ל-Android וייפתח. על ידי האפליקציה, אם היא מותקנת. במקרה של False, הקוד יישלח אל קודם ווידג'ט האינטרנט ואז המשך הוא יפנה לאפליקציה אם מותקנת.
dynamicLinkDomain String מגדיר את דומיין הקישור הדינמי (או תת-הדומיין) לשימוש בקישור הנוכחי אם הוא נפתח באמצעות קישורים דינמיים ב-Firebase. כמספר מודעות דינמיות ניתן להגדיר דומיינים של קישורים לכל פרויקט, השדה הזה מספק את ביכולת לבחור אחת במפורש. אם לא מציינים דומיין, המערכת משתמשת כברירת מחדל בדומיין הראשון.

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

final user = FirebaseAuth.instance.currentUser;

final actionCodeSettings = ActionCodeSettings(
  url: "http://www.example.com/verify?email=${user?.email}",
  iOSBundleId: "com.example.ios",
  androidPackageName: "com.example.android",
);

await user?.sendEmailVerification(actionCodeSettings);

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

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

    1. במסוף Firebase, פותחים את הקטע קישורים דינמיים.

    2. אם עדיין לא אישרתם את התנאים של קישורים דינמיים ויצרתם קישורים דינמיים עשה זאת עכשיו.

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

      example.page.link

    4. יהיה צורך בערך הזה כשמגדירים את האפליקציה ל-Apple או ל-Android כך לעצור את הקישור הנכנס

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

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

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

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

אפשר לציין אם ברצונך לטפל בקישור לקוד הפעולה מהאינטרנט של האפליקציה תחילה ואז הפניה אוטומטית לדף אינטרנט אחר או לאפליקציה אחרת לנייד לאחר השלמתה בהצלחה, בתנאי שהאפליקציה לנייד זמינה. כדי לעשות זאת, מגדירים את handleCodeInApp כ-false באובייקט ActionCodeSettings. בזמן מזהה חבילה או שם חבילה ב-Android, ציון השם יאפשר למשתמש כדי להפנות חזרה לאפליקציה שצוינה לאחר השלמת קוד פעולה באימייל.

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

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

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

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

אפשר לציין אם רוצים לטפל בקישור של קוד הפעולה בתוך האפליקציה לנייד תחילה, בתנאי שהיא מותקנת. עם אפליקציות ל-Android, אפשר גם לציין באמצעות androidInstallApp יש להתקין את האפליקציה אם המכשיר תומך בה והיא עדיין לא מותקנת מותקנת. אם המשתמש לחץ על הקישור ממכשיר שלא תומך בנייד של האפליקציה, ניתן לפתוח אותו מדף אינטרנט במקום זאת. כדי לעשות זאת, מגדירים את handleCodeInApp לערך true באובייקט ActionCodeSettings. צריך לציין גם את שם החבילה או את מזהה החבילה של האפליקציה לנייד ב-Android. כתובת ה-URL החלופית לאינטרנט שתשמש כאן, במקרה שאין אפליקציה לנייד זמינה, היא זו שמוגדרת בקטע תבניות הפעולות באימייל. כברירת מחדל, המערכת מקצה חשבון לכל פרויקט. פרטים נוספים מידע נוסף על התאמה אישית של מטפלים באימייל איך להתאים אישית את ה-handler של פעולות האימייל.

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

בעת טיפול בפעולות אימייל כמו אימות אימייל, קוד הפעולה מ- צריך לנתח פרמטר שאילתה אחד (oobCode) מקישור העומק ואז להחיל אותו דרך applyActionCode כדי שהשינוי ייכנס לתוקף, כלומר אימייל לאימות.