يمكنك تمرير الحالة عبر عنوان URL للمتابعة عند إرسال إجراءات عبر البريد الإلكتروني لإعادة ضبط كلمات المرور أو إثبات ملكية عنوان البريد الإلكتروني للمستخدم. ويتيح ذلك للمستخدم العودة إلى التطبيق بعد إكمال الإجراء. بالإضافة إلى ذلك، يمكنك تحديد ما إذا كنت تريد معالجة رابط لاتّخاذ إجراء في الرسالة الإلكترونية مباشرةً من تطبيق على الجهاز الجوّال عند تثبيته بدلاً من صفحة ويب.
يمكن أن يكون هذا مفيدًا للغاية في السيناريوهات الشائعة التالية:
قد يحاول مستخدم غير مسجّل الدخول حاليًا الوصول إلى محتوى يتطلب تسجيل الدخول. ومع ذلك، قد يكون المستخدم قد نسي كلمة المرور، وبالتالي بدأ عملية إعادة ضبطها. في نهاية المسار، يتوقّع المستخدم العودة إلى قسم التطبيق الذي كان يحاول الوصول إليه.
يمكن للتطبيق أن يتيح الوصول إلى الحسابات التي تم إثبات ملكيتها فقط. على سبيل المثال، قد يتطلّب تطبيق نشرات إخبارية من المستخدم إثبات ملكيته لعنوان البريد الإلكتروني قبل الاشتراك. سيمر المستخدم بعملية تأكيد عنوان البريد الإلكتروني ويتوقّع أن يعود إلى التطبيق لإكمال اشتراكه.
بشكل عام، عندما يبدأ المستخدم عملية إعادة ضبط كلمة المرور أو تأكيد عنوان البريد الإلكتروني على تطبيق Apple، يتوقّع إكمال العملية داخل التطبيق، وتتيح إمكانية تمرير الحالة من خلال متابعة عنوان URL إكمال العملية.
تُعدّ إمكانية تمرير الحالة من خلال عنوان URL لمتابعة العملية ميزة فعّالة توفّرها خدمة Firebase Auth ويمكن أن تحسّن تجربة المستخدم بشكل كبير.
تمرير حالة/عنوان URL للمتابعة في إجراءات البريد الإلكتروني
من أجل تمرير عنوان URL للمتابعة بشكل آمن، عليك إضافة نطاق عنوان URL كنطاق معتمَد:
في وحدة تحكّم Firebase، انتقِل إلى علامة التبويب الإعدادات ضمن الأمان > المصادقة.
في قسم النطاقات المعتمَدة، انقر على إضافة نطاق وأضِف عنوان URL.
يجب توفير مثيل ActionCodeSettings عند إرسال رسالة إلكترونية لإعادة ضبط كلمة المرور أو رسالة إلكترونية لتأكيد الحساب. تتطلّب واجهة برمجة التطبيقات هذه المَعلمات التالية:
| المَعلمة | النوع | الوصف | |||
|---|---|---|---|---|---|
url |
سلسلة | تضبط هذه السمة الرابط (عنوان URL الخاص بالحالة أو المتابعة) الذي له معانٍ مختلفة في السياقات المختلفة:
|
|||
iOSBundleId |
سلسلة | تضبط هذه السمة معرّف الحزمة. سيحاول هذا الإجراء فتح الرابط في تطبيق Apple إذا كان مثبّتًا. يجب تسجيل التطبيق في Play Console. في حال عدم توفير معرّف الحزمة، يتم ضبط قيمة هذا الحقل على معرّف الحزمة للحزمة الرئيسية للتطبيق. | |||
androidPackageName |
سلسلة | تضبط هذه السمة اسم حزمة Android. سيحاول هذا الإجراء فتح الرابط في تطبيق Android إذا كان مثبّتًا. | |||
androidInstallApp |
bool | تحدِّد هذه السمة ما إذا كان سيتم تثبيت تطبيق Android إذا كان الجهاز متوافقًا معه ولم يكن التطبيق مثبّتًا من قبل. إذا تم توفير هذا الحقل بدون packageName، سيظهر خطأ يوضّح أنّه يجب توفير packageName مع هذا الحقل. | |||
androidMinimumVersion |
سلسلة | الحد الأدنى لإصدار التطبيق المتوافق مع هذه العملية. في حال تحديد قيمة minimumVersion وتم تثبيت إصدار أقدم من التطبيق، سيتم توجيه المستخدم إلى متجر Google Play لترقية التطبيق. يجب تسجيل تطبيق Android في Play Console. | |||
handleCodeInApp |
bool | تحديد ما إذا كان سيتم فتح رابط لاتّخاذ إجراء في الرسالة الإلكترونية في تطبيق على الجهاز الجوّال أو رابط ويب أولاً القيمة التلقائية هي "خطأ". في حال ضبط هذه السمة على "صحيح"، سيتم إرسال رابط رمز الإجراء كرابط عام أو رابط تطبيق Android وسيتم فتحه من خلال التطبيق إذا كان مثبّتًا. في حالة عدم التطابق، سيتم إرسال الرمز إلى التطبيق المصغّر على الويب أولاً، ثم سيتم إعادة التوجيه إلى التطبيق عند المتابعة إذا كان مثبّتًا. | |||
dynamicLinkDomain |
سلسلة | (تم إيقافه نهائيًا، استخدِم linkDomain) يضبط نطاق الرابط الديناميكي (أو النطاق الفرعي) الذي سيتم استخدامه للرابط الحالي إذا كان سيتم فتحه باستخدام "روابط Firebase الديناميكية". بما أنّه يمكن ضبط نطاقات روابط ديناميكية متعددة لكل مشروع، يتيح هذا الحقل إمكانية اختيار أحدها بشكل صريح. في حال عدم توفير أي نطاق، سيتم استخدام النطاق الأول تلقائيًا. | linkDomain |
سلسلة | نطاق مخصّص اختياري في استضافة Firebase لاستخدامه عند فتح الرابط من خلال تطبيق محدّد على الأجهزة الجوّالة. يجب ضبط النطاق في استضافة Firebase وأن يكون المشروع هو مالكه. يجب ألا يكون هذا النطاق هو نطاق Hosting تلقائي (`web.app` أو `firebaseapp.com`). ويحلّ هذا الإعداد محلّ الإعداد المتوقّف نهائيًا `dynamicLinkDomain`. |
يوضّح المثال التالي كيفية إرسال رابط تأكيد عنوان البريد الإلكتروني الذي سيتم فتحه أولاً في تطبيق على الأجهزة الجوّالة كرابط ديناميكي من Firebase باستخدام نطاق الرابط الديناميكي المخصّص example.page.link (تطبيق iOS com.example.ios أو تطبيق Android com.example.android حيث سيتم تثبيت التطبيق إذا لم يكن مثبّتًا من قبل وكان الحد الأدنى للإصدار هو 12). سيحتوي الرابط لصفحة معيّنة في التطبيق على حمولة عنوان 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 الديناميكية"
تستخدم خدمة Firebase Auth روابط Firebase الديناميكية عند إرسال رابط من المفترض أن يتم فتحه في تطبيق على الأجهزة الجوّالة. لاستخدام هذه الميزة، يجب إعداد "الروابط الديناميكية" في وحدة تحكّم Firebase.
فعِّل "روابط Firebase الديناميكية" باتّباع الخطوات التالية:
في "وحدة تحكّم Firebase"، افتح قسم الروابط الديناميكية.
إذا لم تكن قد وافقت بعد على بنود خدمة Dynamic Links وأنشأت نطاقًا لـ Dynamic Links، عليك إجراء ذلك الآن.
إذا سبق لك إنشاء نطاق Dynamic Links، سجِّله. عادةً ما يكون نطاق "روابط التطبيق الديناميكية" مشابهاً للمثال التالي:
example.page.link
ستحتاج إلى هذه القيمة عند ضبط تطبيق Apple أو Android لاعتراض الرابط الوارد.
إعداد تطبيقات Android:
- إذا كنت تخطّط للتعامل مع هذه الروابط من تطبيق Android، يجب تحديد اسم حزمة Android في إعدادات المشروع في Firebase Console. بالإضافة إلى ذلك، يجب تقديم خوارزميتَي SHA-1 وSHA-256 لشهادة التطبيق.
- عليك أيضًا ضبط intent filter للرابط العميق في ملف AndroidManifest.xml.
- لمزيد من المعلومات حول هذا الموضوع، يُرجى الرجوع إلى تعليمات تلقّي الروابط الديناميكية على Android.
إعداد تطبيقات Apple:
- إذا كنت تخطّط للتعامل مع هذه الروابط من تطبيقك، يجب تحديد معرّف الحزمة في إعدادات المشروع في "وحدة تحكّم Firebase". بالإضافة إلى ذلك، يجب تحديد رقم تعريف App Store ورقم تعريف فريق مطوّري Apple.
- عليك أيضًا ضبط نطاق الرابط العام لـ FDL كـ "نطاق مرتبط" في إمكانات تطبيقك.
- إذا كنت تخطّط لتوزيع تطبيقك على الإصدارات 8 من نظام التشغيل iOS والإصدارات الأقدم، عليك ضبط معرّف الحزمة كمخطّط مخصّص لعناوين URL الواردة.
- لمزيد من المعلومات حول هذا الموضوع، يُرجى الرجوع إلى تعليمات تلقّي الروابط الديناميكية على منصات Apple.
التعامل مع إجراءات البريد الإلكتروني في تطبيق ويب
يمكنك تحديد ما إذا كنت تريد التعامل مع رابط رمز الإجراء من تطبيق ويب أولاً ثم إعادة التوجيه إلى صفحة ويب أخرى أو تطبيق للأجهزة الجوّالة بعد الإكمال بنجاح، شرط أن يكون تطبيق الأجهزة الجوّالة متاحًا.
يتم ذلك من خلال ضبط handleCodeInApp على false في الكائن ActionCodeSettings. مع أنّ رقم تعريف الحزمة أو اسم حزمة Android غير مطلوبَين، سيسمح توفيرهما للمستخدم بإعادة التوجيه إلى التطبيق المحدّد عند إكمال رمز الإجراء عبر البريد الإلكتروني.
عنوان URL للموقع الإلكتروني المستخدَم هنا هو العنوان الذي تم ضبطه في قسم نماذج إجراءات الرسائل الإلكترونية. يتم توفير حساب تلقائي لجميع المشاريع. راجِع مقالة تخصيص معالجات البريد الإلكتروني لمعرفة المزيد حول كيفية تخصيص معالج إجراءات البريد الإلكتروني.
في هذه الحالة، سيكون الرابط ضِمن مَعلمة طلب البحث continueURL رابطًا لخدمة "روابط Firebase الديناميكية"، وستكون حمولة الرابط هي URL المحدّدة في العنصر ActionCodeSettings. على الرغم من أنّه يمكنك اعتراض الرابط الوارد من تطبيقك والتعامل معه بدون أي اعتمادية إضافية، ننصحك باستخدام مكتبة برامج عميل روابط Firebase الديناميكية (FDL) من أجل تحليل الرابط العميق نيابةً عنك.
عند التعامل مع إجراءات البريد الإلكتروني، مثل إثبات ملكية عنوان البريد الإلكتروني، يجب تحليل رمز الإجراء من مَعلمة طلب البحث oobCode في الرابط العميق ثم تطبيقه من خلال applyActionCode لكي يسري التغيير، أي إثبات ملكية عنوان البريد الإلكتروني.
التعامل مع إجراءات البريد الإلكتروني في تطبيق على الأجهزة الجوّالة
يمكنك تحديد ما إذا كنت تريد التعامل مع رابط رمز الإجراء داخل تطبيقك على الأجهزة الجوّالة أولاً، شرط أن يكون مثبّتًا. باستخدام تطبيقات Android، يمكنك أيضًا تحديد ما إذا كان سيتم تثبيت التطبيق إذا كان الجهاز متوافقًا معه ولم يكن مثبّتًا من قبل، وذلك من خلال androidInstallApp.
إذا تم النقر على الرابط من جهاز لا يتوافق مع تطبيق الجوّال، سيتم فتح الرابط من صفحة ويب بدلاً من ذلك.
يتم ذلك من خلال ضبط handleCodeInApp على true في الكائن ActionCodeSettings. يجب أيضًا تحديد اسم حزمة Android أو معرّف الحزمة الخاصين بتطبيق الأجهزة الجوّالة.عنوان URL الاحتياطي على الويب المستخدَم هنا، عندما لا يتوفّر تطبيق للأجهزة الجوّالة، هو العنوان الذي تم ضبطه في قسم نماذج إجراءات البريد الإلكتروني. يتم توفير حساب تلقائي لجميع المشاريع. راجِع مقالة
تخصيص معالجات البريد الإلكتروني لمعرفة المزيد حول
كيفية تخصيص معالج إجراءات البريد الإلكتروني.
في هذه الحالة، سيكون رابط التطبيق على الأجهزة الجوّالة الذي يتم إرساله إلى المستخدم رابطًا لـ FDL حمولته هي عنوان URL لرمز الإجراء، والذي تم إعداده في Console، مع مَعلمات طلب البحث oobCode وmode وapiKey وcontinueUrl. سيكون هذا الأخير هو URL الأصلي المحدّد في عنصر ActionCodeSettings. على الرغم من أنّه يمكنك اعتراض الرابط الوارد من تطبيقك والتعامل معه بدون أي تبعية إضافية، ننصحك باستخدام مكتبة برامج FDL للعملاء من أجل تحليل الرابط لصفحة في التطبيق. يمكن تطبيق رمز الإجراء مباشرةً من تطبيق على الجهاز الجوّال، على غرار طريقة التعامل معه من مسار الويب الموضّح في قسم تخصيص معالجات البريد الإلكتروني.
عند التعامل مع إجراءات البريد الإلكتروني، مثل إثبات ملكية عنوان البريد الإلكتروني، يجب تحليل رمز الإجراء من مَعلمة طلب البحث oobCode في الرابط العميق ثم تطبيقه من خلال applyActionCode لكي يسري التغيير، أي إثبات ملكية عنوان البريد الإلكتروني.