گذراندن وضعیت در کنش‌های ایمیل

هنگام ارسال کنش‌های ایمیل برای بازنشانی گذرواژه یا درستی‌سنجی ایمیل کاربر، می‌توانید وضعیت را ازطریق نشانی وب ادامه منتقل کنید. این امر به کاربر امکان می‌دهد پس‌از تکمیل کنش به برنامه برگردانده شود. علاوه‌براین، می‌توانید مشخص کنید که آیا پیوند کنش ایمیل مستقیماً از برنامه تلفن همراه (درصورت نصب بودن) به‌جای صفحه وب مدیریت شود یا نه.

این ویژگی در سناریوهای رایج زیر می‌تواند بسیار مفید باشد:

  • کاربری که درحال‌حاضر به سیستم وارد نشده است ممکن است سعی کند به محتوایی دسترسی پیدا کند که نیاز دارد کاربر به سیستم وارد شده باشد. بااین‌حال، ممکن است کاربر گذرواژه خود را فراموش کرده باشد و بنابراین جریان بازنشانی گذرواژه را راه‌اندازی کند. در پایان جریان، کاربر انتظار دارد به بخشی از برنامه که در تلاش برای دسترسی به آن بوده است برگردد.

  • برنامه فقط می‌تواند دسترسی به حساب‌های درستی‌سنجی‌شده را ارائه دهد. برای مثال، برنامه خبرنامه ممکن است کاربر را ملزم کند قبل‌از مشترک شدن، ایمیلش را درستی‌سنجی کند. کاربر ازطریق جریان درستی‌سنجی ایمیل اقدام می‌کند و انتظار دارد برای تکمیل اشتراک به برنامه برگردانده شود.

  • به‌طورکلی، وقتی کاربری در برنامه Apple جریان بازنشانی گذرواژه یا درستی‌سنجی ایمیل را شروع می‌کند، انتظار دارد جریان را در همان برنامه تکمیل کند؛ امکان انتقال وضعیت ازطریق نشانی وب ادامه این کار را ممکن می‌کند.

توانایی انتقال وضعیت ازطریق نشانی وب ادامه یک ویژگی قدرتمند است که Firebase Auth ارائه می‌دهد و می‌تواند تجربه کاربری را به‌طور قابل‌توجهی بهبود بخشد.

انتقال وضعیت نشانی وب ادامه در کنش‌های ایمیل

برای انتقال ایمن نشانی وب ادامه، باید دامنه نشانی وب را به‌عنوان دامنه مجاز اضافه کنید:

  1. در کنسول Firebase، به امنیت > اصالت‌سنجی > زبانه تنظیمات بروید.

  2. در بخش دامنه‌های مجاز، روی افزودن دامنه کلیک کنید و نشانی وب را اضافه کنید.

هنگام ارسال ایمیل بازنشانی گذرواژه یا ایمیل درستی‌سنجی، باید نمونه FIRActionCodeSettings ارائه شود. این میانای کاربری پارامترهای زیر را می‌پذیرد:

Swift

پارامتر نوع شرح
URL تار

پیوند (نشانی وب وضعیت/ادامه) را تنظیم می‌کند که در بافتارهای مختلف معانی متفاوتی دارد:

  • وقتی پیوند در ابزارک‌های کنش وب مدیریت می‌شود، این پیوند عمیق در پارامتر پُرسمان continueUrl است.
  • وقتی پیوند مستقیماً در برنامه مدیریت می‌شود، این پارامتر continueUrl پُرسمان در پیوند عمیق پیوند Hosting است.
iOSBundleID تار شناسه بسته iOS را تنظیم می‌کند تا به Firebase Authentication کمک کند تعیین کند که آیا باید پیوند فقط وب یا پیوند تلفن همراه ایجاد کند که در دستگاه Apple باز می‌شود
androidPackageName تار نام بسته Android را تنظیم می‌کند تا به Firebase Authentication کمک کند تعیین کند آیا باید پیوند فقط وب یا پیوند تلفن همراه ایجاد کند که در دستگاه Android باز می‌شود
handleCodeInApp Bool اینکه پیوند کنش ایمیل ابتدا در برنامه تلفن همراه یا پیوند وب باز شود. پیش‌فرض «نادرست» است. وقتی روی درست تنظیم شود، پیوند کد کنش به‌صورت «پیوند جهانی» یا «پیوند برنامه Android» ارسال می‌شود و اگر برنامه نصب شده باشد، با آن باز می‌شود. در حالت نادرست، کد ابتدا به ابزاره وب ارسال می‌شود و سپس درصورت نصب بودن برنامه، با ادامه دادن به برنامه هدایت می‌شوید.
linkDomain تار وقتی دامنه‌های پیوند «میزبانی» سفارشی برای پروژه‌ای تعریف می‌شود، مشخص کنید که وقتی پیوند باید توسط برنامه تلفن همراه مشخصی باز شود، از کدام دامنه استفاده شود. درغیراین‌صورت، دامنه پیش‌فرض به‌طور خودکار انتخاب می‌شود (برای مثال، PROJECT_ID.firebaseapp.com).
dynamicLinkDomain تار منسوخ‌شده. این پارامتر را مشخص نکنید.

Objective-C

پارامتر نوع شرح
URL NSString

پیوند (نشانی وب وضعیت/ادامه) را تنظیم می‌کند که در بافتارهای مختلف معانی متفاوتی دارد:

  • وقتی پیوند در ابزارک‌های کنش وب مدیریت می‌شود، این پیوند عمیق در پارامتر پُرسمان continueUrl است.
  • وقتی پیوند مستقیماً در برنامه مدیریت می‌شود، این پارامتر continueUrl پُرسمان در پیوند عمیق پیوند Hosting است.
iOSBundleID NSString شناسه بسته iOS را تنظیم می‌کند تا به Firebase Authentication کمک کند تعیین کند که آیا باید پیوند فقط وب یا پیوند تلفن همراه ایجاد کند که در دستگاه Android یا Apple باز می‌شود
androidPackageName NSString نام بسته Android را تنظیم می‌کند تا به Firebase Authentication کمک کند تعیین کند آیا باید پیوند فقط وب یا پیوند تلفن همراه ایجاد کند که در دستگاه Android یا Apple باز می‌شود
handleCodeInApp BOOL اینکه پیوند کنش ایمیل ابتدا در برنامه تلفن همراه یا پیوند وب باز شود. پیش‌فرض «نادرست» است. وقتی روی درست تنظیم شود، پیوند کد کنش به‌صورت «پیوند جهانی» یا «پیوند برنامه Android» ارسال می‌شود و اگر برنامه نصب شده باشد، با آن باز می‌شود. در حالت نادرست، کد ابتدا به ابزاره وب ارسال می‌شود و سپس درصورت نصب بودن برنامه، با ادامه دادن به برنامه هدایت می‌شوید.
linkDomain NSString وقتی دامنه‌های پیوند سفارشی Hosting برای پروژه‌ای تعریف می‌شود، مشخص کنید وقتی پیوند باید توسط برنامه تلفن همراه مشخصی باز شود از کدام دامنه استفاده شود. درغیراین‌صورت، دامنه پیش‌فرض به‌طور خودکار انتخاب می‌شود (برای مثال، PROJECT_ID.firebaseapp.com).
dynamicLinkDomain NSString منسوخ‌شده. این پارامتر را مشخص نکنید.

مثال زیر نشان می‌دهد که چگونه پیوند درستی‌سنجی ایمیل ارسال کنید که ابتدا در برنامه تلفن همراه بااستفاده از دامنه پیوند سفارشی Hosting custom-domain.com باز می‌شود. پیوند عمیق حاوی بار ادامه نشانی وب 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")
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
actionCodeSettings.linkDomain = "custom-domain.com"
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;
// Specify a custom Hosting link domain to use. The domain must be
// configured in Firebase Hosting and owned by the project.
 actionCodeSettings.linkDomain = @"custom-domain.com";
 [actionCodeSettings setAndroidPackageName:@"com.example.android"];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification sent.
 }];

Firebase Authentication هنگام ارسال پیوندی که قرار است در برنامه تلفن همراه باز شود از Firebase Hosting استفاده می‌کند. برای استفاده از این ویژگی، پیوندهای Hosting باید در کنسول Firebase پیکربندی شوند.

  1. پیکربندی برنامه‌های Apple:

    1. اگر قصد دارید این پیوندها را از برنامه‌تان مدیریت کنید، باید دامنه پیوند Hosting را به‌عنوان «دامنه مرتبط» در قابلیت‌های برنامه‌تان پیکربندی کنید.
    2. برای اطلاعات بیشتر در این زمینه، به دریافت دستورالعمل‌های پیوندهای میزبانی iOS مراجعه کنید.
  2. پیکربندی برنامه‌های Android:

    1. اگر قصد دارید این پیوندها را از برنامه Android خود مدیریت کنید، نام بسته برنامه‌تان باید در تنظیمات پروژه کنسول Firebase مشخص شود. علاوه‌براین، SHA-1 و SHA-256 گواهینامه برنامه باید ارائه شود.
    2. همچنین باید فیلتر هدف را برای پیوند عمیق در فایل AndroidManifest.xml پیکربندی کنید.
    3. برای اطلاعات بیشتر در این زمینه، به دریافت دستورالعمل‌های پیوندهای میزبانی Android مراجعه کنید.

مدیریت کنش‌های ایمیل در برنامه وب

می‌توانید مشخص کنید که آیا می‌خواهید پیوند کد کنش را ابتدا از برنامه وب مدیریت کنید و سپس پس‌از تکمیل موفقیت‌آمیز، به صفحه وب یا برنامه تلفن همراه دیگری هدایت کنید، به‌شرطی که برنامه تلفن همراه دردسترس باشد. این کار با تنظیم handleCodeInApp روی false در FIRActionCodeSettings (Obj-C) یا ActionCodeSettings (Swift) انجام می‌شود. اگرچه شناسه بسته یا نام بسته Android الزامی نیست، ارائه آن‌ها به کاربر امکان می‌دهد پس‌از تکمیل کد کنش ایمیل به برنامه مشخص‌شده هدایت شود.

نشانی وب استفاده‌شده در اینجا، نشانی وبی است که در بخش الگوهای کنش ایمیل پیکربندی شده است. یک مورد پیش‌فرض برای همه پروژه‌ها آماده می‌شود. برای کسب اطلاعات بیشتر درباره نحوه سفارشی‌سازی کردن مدیریت‌کننده کنش ایمیل، به سفارشی‌سازی مدیریت‌کننده‌های ایمیل مراجعه کنید.

در این مورد، پیوند درون پارامتر پُرسمان continueURL پیوند Hosting خواهد بود که بار آن URL مشخص‌شده در شیء ActionCodeSettings است.

هنگام مدیریت کنش‌های ایمیل مثل درستی‌سنجی ایمیل، کد کنش از پارامتر پُرسمان oobCode باید از پیوند عمیق تجزیه شود و سپس ازطریق applyActionCode اعمال شود تا تغییر اعمال شود، یعنی ایمیل درستی‌سنجی شود.

مدیریت کنش‌های ایمیل در برنامه تلفن همراه

می‌توانید مشخص کنید که آیا می‌خواهید پیوند کد کنش را ابتدا در برنامه تلفن همراهتان مدیریت کنید یا نه، البته به شرطی که نصب شده باشد. اگر پیوند از دستگاهی که از برنامه تلفن همراه پشتیبانی نمی‌کند کلیک شود، به‌جای آن از صفحه وب باز می‌شود. این کار با تنظیم handleCodeInApp روی true در FIRActionCodeSettings (Obj-C) یا ActionCodeSettings (Swift) انجام می‌شود. نام بسته Android یا شناسه بسته نرم‌افزاری برنامه تلفن همراه نیز باید مشخص شود. نشانی وب اصلاح حالت که در اینجا استفاده می‌شود، زمانی که برنامه تلفن همراه دردسترس نباشد، نشانی وبی است که در بخش الگوهای کنش ایمیل پیکربندی شده است. یک مورد پیش‌فرض برای همه پروژه‌ها تدارک دیده شده است. برای کسب اطلاعات بیشتر درباره نحوه سفارشی‌سازی کردن مدیریت‌کننده کنش ایمیل، به سفارشی‌سازی مدیریت‌کننده‌های ایمیل مراجعه کنید.

در این مورد، پیوند برنامه تلفن همراه ارسال‌شده به کاربر پیوند Hosting خواهد بود که پیام آن نشانی وب کد کنش است که در «کنسول» با پُرسمان پارامترهای oobCode، mode، apiKey، و continueUrl پیکربندی شده است. مورد دوم URL اصلی خواهد بود که در FIRActionCodeSettings (Obj-C) یا ActionCodeSettings (Swift) مشخص شده است. کد کنش را می‌توان مستقیماً از برنامه تلفن همراه اعمال کرد، مشابه نحوه مدیریت آن از جریان وب که در بخش سفارشی‌سازی مدیریت‌کننده‌های ایمیل توضیح داده شده است.

هنگام مدیریت کنش‌های ایمیل مثل درستی‌سنجی ایمیل، کد کنش از پارامتر پُرسمان oobCode باید از پیوند عمیق تجزیه شود و سپس ازطریق applyActionCode اعمال شود تا تغییر اعمال شود، یعنی ایمیل درستی‌سنجی شود.