لتلقي روابط 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، أنشئ ملفًا شخصيًا لتوفير المتطلبات اللازمة لتطبيقك. مع تفعيل إمكانية "النطاق المرتبط".
في Xcode، نفِّذ ما يلي:
افتح تطبيقك أسفل العنوان TARGETS.
في توقيع المستند "القدرات"، والتأكد من تسجيل فريقك، ضبط الملف الشخصي لإدارة الحسابات.
في توقيع المستند يمكنك تفعيل Associated Domains (النطاقات المرتبطة) و أضِف ما يلي إلى قائمة "النطاقات المرتبطة" (استبدِل المثال بنطاقك):
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) للروابط الديناميكية لوحة اللصق لتحسين موثوقية الروابط لمواضع معيّنة بعد التثبيت. باستخدام لوحة اللصق، "ديناميكي" يمكن للروابط التأكّد من أنّ المستخدم يفتح رابطًا ديناميكيًا ولكن يحتاج إلى ذلك. تثبيت تطبيقك أولاً، يمكن للمستخدم الانتقال على الفور إلى التطبيق الأصلي المحتوى المرتبط عند فتح التطبيق لأول مرة بعد التثبيت.
والجانب السلبي لهذا الخيار هو أن استخدام لوحة اللصق يؤدي إلى على نظام التشغيل iOS 14 والإصدارات الأحدث. لذلك، عندما يفتح المستخدمون لأول مرة إذا احتوت لوحة اللصق على عنوان 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
".
getter:
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
).
في حال اختبار رابط ديناميكي من حالة تطبيق تم إنهاؤه (أي تم إغلاق التطبيق بسرعة).