لتلقي روابط Firebase الديناميكية التي قمت بإنشائها ، يجب عليك تضمين Dynamic Links SDK في تطبيقك واستدعاء أساليب handleUniversalLink:
و dynamicLinkFromCustomSchemeURL:
عند تحميل تطبيقك للحصول على البيانات التي تم تمريرها في الارتباط الديناميكي.
المتطلبات الأساسية
قبل أن تبدأ، تأكد من إضافة Firebase إلى مشروع iOS الخاص بك .
قم بإعداد Firebase وDynamic Links SDK
استخدم Swift Package Manager لتثبيت تبعيات Firebase وإدارتها.
- في Xcode، مع فتح مشروع التطبيق الخاص بك، انتقل إلى File > Add Packages .
- عندما يُطلب منك ذلك، قم بإضافة مستودع Firebase Apple الأساسي لـ SDK:
- اختر مكتبة الروابط الديناميكية.
- أضف علامة
-ObjC
إلى قسم إشارات الرابط الأخرى في إعدادات إنشاء هدفك. - للحصول على تجربة مثالية مع الروابط الديناميكية، نوصي بتمكين Google Analytics في مشروع Firebase الخاص بك وإضافة Firebase SDK لـ Google Analytics إلى تطبيقك. يمكنك تحديد المكتبة بدون مجموعة IDFA أو مع مجموعة IDFA.
- عند الانتهاء، سيبدأ Xcode تلقائيًا في حل وتنزيل تبعياتك في الخلفية.
https://github.com/firebase/firebase-ios-sdk.git
الآن قم بتنفيذ بعض خطوات التكوين:
- في وحدة تحكم Firebase ، افتح قسم الروابط الديناميكية . اقبل شروط الخدمة إذا طُلب منك ذلك.
تأكد من تحديد معرف متجر التطبيقات الخاص بتطبيقك وبادئة معرف التطبيق في إعدادات تطبيقك. لعرض إعدادات تطبيقك وتعديلها، انتقل إلى صفحة إعدادات مشروع Firebase وحدد تطبيق iOS الخاص بك.
يمكنك التأكد من تكوين مشروع Firebase الخاص بك بشكل صحيح لاستخدام الروابط الديناميكية في تطبيق iOS الخاص بك عن طريق فتح عنوان URL التالي:
https://your_dynamic_links_domain/apple-app-site-association
إذا كان تطبيقك متصلاً، فإن ملف
apple-app-site-association
يحتوي على مرجع إلى بادئة معرف التطبيق الخاص بتطبيقك ومعرف الحزمة. على سبيل المثال:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}
إذا كان حقل
details
فارغًا، فتحقق جيدًا من أنك حددت بادئة معرف التطبيق الخاص بك. لاحظ أن بادئة معرف التطبيق الخاص بك قد لا تكون هي نفس معرف الفريق الخاص بك.اختياري : قم بتعطيل استخدام Dynamic Links SDK للوحة اللصق لنظام التشغيل iOS.
افتراضيًا، تستخدم Dynamic Links SDK لوحة اللصق لتحسين موثوقية الروابط العميقة بعد التثبيت. باستخدام لوحة اللصق، يمكن للارتباطات الديناميكية التأكد من أنه عندما يفتح المستخدم رابطًا ديناميكيًا ولكنه يحتاج إلى تثبيت تطبيقك أولاً، يمكن للمستخدم الانتقال فورًا إلى المحتوى المرتبط الأصلي عند فتح التطبيق لأول مرة بعد التثبيت.
الجانب السلبي لذلك هو أن استخدام لوحة اللصق يؤدي إلى ظهور إشعار على نظام التشغيل iOS 14 والإصدارات الأحدث. لذلك، في المرة الأولى التي يفتح فيها المستخدمون تطبيقك، إذا كانت لوحة اللصق تحتوي على عنوان URL، فسوف يرون إشعارًا بأن تطبيقك قد وصل إلى لوحة اللصق، مما قد يسبب ارتباكًا.
لتعطيل هذا السلوك، قم بتحرير ملف
Info.plist
الخاص بمشروع Xcode الخاص بك وقم بتعيين مفتاحFirebaseDeepLinkPasteboardRetrievalEnabled
علىNO
.
افتح الروابط الديناميكية في تطبيقك
- في علامة تبويب المعلومات في مشروع Xcode لتطبيقك، قم بإنشاء نوع عنوان URL جديد لاستخدامه في الارتباطات الديناميكية. قم بتعيين حقل المعرف إلى قيمة فريدة وحقل نظام عنوان URL ليكون معرف الحزمة الخاص بك، وهو نظام عنوان URL الافتراضي الذي تستخدمه الارتباطات الديناميكية.
- في علامة التبويب "القدرات " في مشروع Xcode الخاص بتطبيقك، قم بتمكين النطاقات المرتبطة وأضف ما يلي إلى قائمة النطاقات المرتبطة :
applinks:your_dynamic_links_domain
- إذا كنت ترغب في تلقي الارتباطات الديناميكية بنطاق مخصص بالكامل ، في ملف
Info.plist
الخاص بمشروع Xcode، قم بإنشاء مفتاح يسمىFirebaseDynamicLinksCustomDomains
وقم بتعيينه على بادئات URL للارتباطات الديناميكية لتطبيقك. على سبيل المثال:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - قم باستيراد وحدة
FirebaseCore
فيUIApplicationDelegate
، بالإضافة إلى أي وحدات Firebase أخرى يستخدمها مندوب تطبيقك. على سبيل المثال، لاستخدام Cloud Firestore والمصادقة:سويفتويي
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
سويفت
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
ج موضوعية
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- قم بتكوين مثيل
FirebaseApp
مشترك في طريقةapplication(_:didFinishLaunchingWithOptions:)
:سويفتويي
// Use Firebase library to configure APIs FirebaseApp.configure()
سويفت
// Use Firebase library to configure APIs FirebaseApp.configure()
ج موضوعية
// Use Firebase library to configure APIs [FIRApp configure];
- إذا كنت تستخدم SwiftUI، فيجب عليك إنشاء مفوض تطبيق وإرفاقه ببنية
App
الخاص بك عبرUIApplicationDelegateAdaptor
أوNSApplicationDelegateAdaptor
. يجب عليك أيضًا تعطيل swizzling مندوب التطبيق. لمزيد من المعلومات، راجع تعليمات SwiftUI .سويفتويي
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- بعد ذلك، في
application:continueUserActivity:restorationHandler:
تعامل مع الروابط المستلمة كارتباطات عالمية عندما يكون التطبيق مثبتًا بالفعل:سويفت
ملاحظة: هذا المنتج غير متوفر على أهداف macOS أو Mac Catalyst أو tvOS أو watchOS.func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { let handled = DynamicLinks.dynamicLinks() .handleUniversalLink(userActivity.webpageURL!) { dynamiclink, error in // ... } return handled }
ج موضوعية
ملاحظة: هذا المنتج غير متوفر على أهداف macOS أو Mac Catalyst أو tvOS أو watchOS.- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler: #if defined(__IPHONE_12_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_12_0) (nonnull void (^)(NSArray<id<UIUserActivityRestoring>> *_Nullable))restorationHandler { #else (nonnull void (^)(NSArray *_Nullable))restorationHandler { #endif // __IPHONE_12_0 BOOL handled = [[FIRDynamicLinks dynamicLinks] handleUniversalLink:userActivity.webpageURL completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) { // ... }]; return handled; }
- أخيرًا، في
application:openURL:options:
التعامل مع الروابط المستلمة من خلال نظام عنوان URL المخصص لتطبيقك. يتم استدعاء هذه الطريقة عند فتح تطبيقك لأول مرة بعد التثبيت.إذا لم يتم العثور على الارتباط الديناميكي عند التشغيل الأول لتطبيقك، فسيتم استدعاء هذه الطريقة مع تعيين
url
الخاص بـDynamicLink
علىnil
، مما يشير إلى فشل SDK في العثور على ارتباط ديناميكي معلق مطابق.سويفت
ملاحظة: هذا المنتج غير متوفر على أهداف macOS أو Mac Catalyst أو tvOS أو watchOS.@available(iOS 9.0, *) func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool { return application(app, open: url, sourceApplication: options[UIApplication.OpenURLOptionsKey .sourceApplication] as? String, annotation: "") } func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) { // Handle the deep link. For example, show the deep-linked content or // apply a promotional offer to the user's account. // ... return true } return false }
ج موضوعية
ملاحظة: هذا المنتج غير متوفر على أهداف macOS أو Mac Catalyst أو tvOS أو watchOS.- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *, id> *)options { return [self application:app openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url]; if (dynamicLink) { if (dynamicLink.url) { // Handle the deep link. For example, show the deep-linked content, // apply a promotional offer to the user's account or show customized onboarding view. // ... } else { // Dynamic link has empty deep link. This situation will happens if // Firebase Dynamic Links iOS SDK tried to retrieve pending dynamic link, // but pending link is not available for this device/App combination. // At this point you may display default onboarding view. } return YES; } return NO; }