لتلقي روابط Firebase الديناميكية التي أنشأتها،
يجب تضمين حزمة SDK للروابط الديناميكية في تطبيقك وطلب الطريقة FirebaseDynamicLinks.getDynamicLink()
عند تحميل تطبيقك من أجل تمرير البيانات في الرابط الديناميكي.
إعداد Firebase وحزمة تطوير البرامج (SDK) للروابط الديناميكية
تثبيت حِزم تطوير البرامج (SDK) لمنصة Firebase وإعدادها من أجل Flutter إذا لم يسبق لك إجراء ذلك
من الدليل الجذري لمشروع Flutter، شغِّل الأمر التالي لتثبيت المكوِّن الإضافي للروابط الديناميكية:
flutter pub add firebase_dynamic_links
إذا كنت تنشئ تطبيق Android، افتح صفحة إعدادات المشروع في وحدة تحكم Firebase وتأكد من تحديد مفتاح توقيع SHA-1. إذا كنت تستخدم روابط التطبيقات، يُرجى تحديد مفتاح SHA-256 أيضًا.
دمج المنصة
أكمل الخطوات التالية لدمج النظام الأساسي للأنظمة التي تنشئ تطبيقك لها.
Android
في نظام التشغيل Android، يجب إضافة فلتر أهداف جديد يرصد الروابط لمواضع معيّنة لنطاقك، نظرًا لأن الرابط الديناميكي سيعيد توجيه المستخدم إلى نطاقك إذا تم تثبيت تطبيقك. هذا الإجراء مطلوب حتى يتلقّى تطبيقك
بيانات الرابط الديناميكي بعد تثبيته أو تحديثه من "متجر Play" ونقرة واحدة على
الزر "متابعة". في AndroidManifest.xml
:
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data
android:host="example.com"
android:scheme="https"/>
</intent-filter>
عندما يفتح المستخدمون رابطًا ديناميكيًا يحتوي على رابط لموضع معيّن في المخطط والمضيف الذي تحدّده، سيبدأ تطبيقك النشاط باستخدام فلتر الأهداف هذا لمعالجة الرابط.
تتمثّل الخطوة التالية في التأكّد من تسجيل الملف المرجعي لشهادة التوقيع SHA-256 في وحدة تحكُّم Firebase الخاصة بالتطبيق. يمكنك الاطّلاع على مزيد من التفاصيل حول كيفية استرداد بصمة SHA-256 في صفحة مصادقة عميلك.
منصات Apple
أنشئ حساب مطوِّر على Apple إذا لم يكن لديك حساب.
في صفحة إعدادات المشروع ضمن وحدة تحكُّم Firebase، تأكّد من ضبط تطبيق iOS بشكل صحيح باستخدام رقم تعريف التطبيق ورقم تعريف الفريق.
في موقع Apple Developer الإلكتروني، أنشِئ ملفًا شخصيًا لإدارة الحسابات لتطبيقك مع تفعيل إمكانية "النطاق المرتبط".
في Xcode، نفِّذ ما يلي:
افتح تطبيقك أسفل العنوان TARGETS.
في صفحة "التوقيع والإمكانات"، تأكّد من تسجيل فريقك وضبط ملفك الشخصي لإدارة الحسابات.
في صفحة "توقيع" و"الإمكانات"، فعِّل النطاقات المرتبطة وأضِف ما يلي إلى قائمة "النطاقات المرتبطة" (استبدِل المثال بنطاقك):
applinks:example.page.link
في صفحة المعلومات، أضف نوع عنوان URL إلى مشروعك. اضبط حقل مخططات عناوين URL على معرّف حزمة التطبيق. (يمكن أن يكون المعرّف
Bundle ID
أو أي رقم تريده).إذا كنت قد أعددت نطاقًا خاصًا لمشروعك على Firebase، أضِف بادئة عنوان URL للرابط الديناميكي إلى ملف
Info.plist
الخاص بمشروع iOS باستخدام المفتاحFirebaseDynamicLinksCustomDomains
.<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>FirebaseDynamicLinksCustomDomains</key> <array> <string>https://custom.domain.io/path1</string> <string>https://custom.domain.io/path2</string> </array> ...other settings </dict> </plist>
اختياري: أوقِف استخدام "حزمة تطوير البرامج للروابط الديناميكية" للوحة اللصق لنظام التشغيل iOS.
بشكلٍ تلقائي، تستخدم حزمة تطوير البرامج (SDK) للروابط الديناميكية لوحة اللصق لتحسين موثوقية الروابط لصفحات في التطبيق بعد التثبيت. باستخدام لوحة اللصق، يمكن للروابط الديناميكية التأكد من أنه عندما يفتح المستخدم رابطًا ديناميكيًا ولكنه يحتاج إلى تثبيت تطبيقك أولاً، يمكنه الانتقال فورًا إلى المحتوى المرتبط الأصلي عند فتح التطبيق لأول مرة بعد التثبيت.
والجانب السلبي لهذا أنّ استخدام لوحة اللصق يؤدي إلى ظهور إشعار في الإصدار 14 من نظام التشغيل iOS والإصدارات الأحدث. ولذلك، عندما يفتح المستخدمون تطبيقك لأول مرة، إذا كانت لوحة اللصق تحتوي على عنوان URL ديناميكي لرابط، فسيشاهدون إشعارًا يفيد بأنّ تطبيقك قد وصل إلى لوحة اللصق، وهو ما قد يتسبب في حدوث التباس.
لإيقاف هذا السلوك، عدِّل ملف
Info.plist
الخاص بمشروع Xcode، واضبط المفتاحFirebaseDeepLinkPasteboardRetrievalEnabled
علىNO
.
التعامل مع الروابط لصفحات معيّنة
للتعامل مع رابط ديناميكي في تطبيقك، هناك سيناريوهان يتطلبان التنفيذ.
حالة الإنهاء
يمكنك إعداد الطرق التالية:
FirebaseDynamicLinks.getInitialLink
- يؤدي إلى إرجاعFuture<PendingDynamicLinkData?>
FirebaseDynamicLinks.onLink
- معالج الأحداث الذي يعرضStream
وتحتوي علىPendingDynamicLinkData?
سيتلقّى Android دائمًا الرابط من خلال FirebaseDynamicLinks.getInitialLink
من حالة تم إنهاؤها،
ولكن على نظام التشغيل iOS، لا يمكن ضمان ذلك. ولذلك، من المفيد إعدادهما بالترتيب التالي لضمان تلقّي تطبيقك للرابط:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseConfig.platformOptions);
// Check if you received the link via `getInitialLink` first
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();
if (initialLink != null) {
final Uri deepLink = initialLink.link;
// Example of using the dynamic link to push the user to a different screen
Navigator.pushNamed(context, deepLink.path);
}
FirebaseDynamicLinks.instance.onLink.listen(
(pendingDynamicLinkData) {
// Set up the `onLink` event listener next as it may be received here
if (pendingDynamicLinkData != null) {
final Uri deepLink = pendingDynamicLinkData.link;
// Example of using the dynamic link to push the user to a different screen
Navigator.pushNamed(context, deepLink.path);
}
},
);
runApp(MyApp(initialLink));
}
ضمن منطق تطبيقك، يمكنك التحقّق مما إذا تمت معالجة الرابط وتنفيذ إجراء، على سبيل المثال:
if (initialLink != null) {
final Uri deepLink = initialLink.link;
// Example of using the dynamic link to push the user to a different screen
Navigator.pushNamed(context, deepLink.path);
}
الخلفية / حالة الواجهة
عندما يكون التطبيق مفتوحًا أو في الخلفية، استخدِم أداة FirebaseDynamicLinks.onLink
:
FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
// Handle errors
});
بدلاً من ذلك، إذا أردت تحديد ما إذا تم استخدام رابط ديناميكي دقيق لفتح التطبيق، مرِّره إلى الطريقة getDynamicLink
بدلاً من ذلك:
String link = 'https://dynamic-link-domain/ke2Qa';
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));
اختبار رابط ديناميكي على نظام iOS الأساسي
لاختبار رابط ديناميكي على iOS، يجب استخدام جهاز فعلي. وسيكون عليك أيضًا تشغيل التطبيق في وضع الإصدار (أي flutter run --release
)،
في حال اختبار رابط ديناميكي من حالة تطبيق تم إنهاؤه (أي تم تمريره سريعًا لإغلاقه).