لتلقي روابط Firebase الديناميكية التي قمت بإنشائها ، يجب عليك تضمين Dynamic Links SDK في تطبيقك واستدعاء handleUniversalLink:
و dynamicLinkFromCustomSchemeURL:
أساليب عند تحميل تطبيقك للحصول على البيانات التي تم تمريرها في الرابط الديناميكي.
المتطلبات الأساسية
قبل أن تبدأ ، تأكد من إضافة Firebase إلى مشروع iOS الخاص بك .
إعداد Firebase و Dynamic Links SDK
استخدم Swift Package Manager لتثبيت وإدارة تبعيات Firebase.
- في Xcode ، مع فتح مشروع التطبيق الخاص بك ، انتقل إلى ملف> إضافة حزم .
- عند المطالبة ، أضف مستودع SDK لأنظمة Apple الأساسية لـ Firebase:
- اختر مكتبة الروابط الديناميكية.
- للحصول على تجربة مثالية مع الروابط الديناميكية ، نوصي بتمكين Google Analytics في مشروع Firebase وإضافة Firebase SDK لـ Google Analytics إلى تطبيقك. يمكنك تحديد المكتبة بدون مجموعة IDFA أو مع مجموعة IDFA.
- عند الانتهاء ، سيبدأ Xcode تلقائيًا في حل وتنزيل التبعيات الخاصة بك في الخلفية.
https://github.com/firebase/firebase-ios-sdk
الآن ، قم بتنفيذ بعض خطوات التكوين:
- في وحدة تحكم 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.
بشكل افتراضي ، تستخدم حزمة 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 والمصادقة:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
سويفت
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
ج موضوعية
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- قم بتهيئة مثيل
FirebaseApp
مشترك فيapplication(_:didFinishLaunchingWithOptions:)
:SwiftUI
// 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
. يجب عليك أيضًا تعطيل استخدام مفوض التطبيق. لمزيد من المعلومات ، راجع تعليمات SwiftUI .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:
method ، تعامل مع الروابط المستلمة كروابط عامة عندما يكون التطبيق مثبتًا بالفعل:سويفت
ملاحظة: هذا المنتج غير متوفر على أهداف 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; }