يمكنك إنشاء روابط ديناميكية قصيرة أو طويلة باستخدام Firebase Dynamic Links Builder API. تقبل واجهة برمجة التطبيقات هذه إما ارتباطًا ديناميكيًا طويلاً أو كائنًا يحتوي على معلمات الارتباط الديناميكي ، وتعرض عناوين URL مثل الأمثلة التالية:
https://example.com/link/WXYZ https://example.page.link/WXYZ
المتطلبات الأساسية
قبل أن تبدأ ، تأكد من إضافة 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 ، افتح قسم الروابط الديناميكية .
إذا لم تكن قد وافقت بالفعل على شروط الخدمة وقمت بتعيين بادئة URI للارتباطات الديناميكية الخاصة بك ، فقم بذلك عندما يُطلب منك ذلك.
إذا كان لديك بالفعل بادئة URI للروابط الديناميكية ، فقم بتدوينها. تحتاج إلى توفيره عند إنشاء روابط ديناميكية برمجيًا.
- موصى به : حدد أنماط عناوين URL المسموح بها في روابطك الداخلية والروابط الاحتياطية. من خلال القيام بذلك ، فإنك تمنع الأطراف غير المصرح لها من إنشاء روابط ديناميكية تعيد التوجيه من نطاقك إلى مواقع لا تتحكم فيها. راجع السماح بأنماط URL معينة .
تأكد من تحديد معرف متجر التطبيقات الخاص بك وبادئة معرف التطبيق في إعدادات التطبيق. لعرض إعدادات تطبيقك وتعديلها ، انتقل إلى صفحة إعدادات مشروع Firebase وحدد تطبيق iOS الخاص بك.
تأكد من تكوين مشروع Firebase الخاص بك بشكل صحيح لاستخدام الروابط الديناميكية في تطبيق iOS الخاص بك عن طريق فتح ملف
apple-app-site-association
المستضاف على نطاق Dynamic Links الخاص بك. سيعرض Firebase ملفapple-app-site-association
من جذر المجال بالإضافة إلى الدليل الفرعي.well-known
. على سبيل المثال:https://example.com/apple-app-site-association https://example.com/.well-known/apple-app-site-association
إذا كان تطبيقك متصلاً ، فإن ملف
apple-app-site-association
يحتوي على مرجع لبادئة معرف التطبيق ومعرف الحزمة. على سبيل المثال:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}
إذا كانت خاصية
details
فارغة ، فتحقق جيدًا من تحديد بادئة معرف التطبيق. لاحظ أن بادئة معرف التطبيق الخاص بك قد لا تكون هي نفسها معرّف الفريق الخاص بك.
أضف Firebase إلى تطبيقك
- قم باستيراد وحدة
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() } } } }
استخدم وحدة تحكم Firebase
إذا كنت ترغب في إنشاء رابط ديناميكي واحد ، إما لأغراض الاختبار ، أو لفريق التسويق الخاص بك لإنشاء رابط يمكن استخدامه بسهولة في شيء مثل منشور على وسائل التواصل الاجتماعي ، فإن أبسط طريقة هي زيارة وحدة تحكم Firebase وإنشاء واحد يدويًا باتباع النموذج خطوة بخطوة.
استخدم iOS Builder API
يمكنك استخدام واجهة برمجة تطبيقات iOS Builder لإنشاء روابط ديناميكية من المعلمات ، أو لتقصير ارتباط ديناميكي طويل.
إنشاء ارتباط ديناميكي من المعلمات
لإنشاء ارتباط ديناميكي ، قم بإنشاء كائن DynamicLinkComponents
جديد وحدد معلمات الارتباط الديناميكي عن طريق تعيين الخصائص المقابلة للكائن. بعد ذلك ، احصل على الرابط الطويل من خاصية url
الخاصة بالكائن أو احصل على الرابط المختصر عن طريق استدعاء shorten()
.
ينشئ المثال الأدنى التالي رابطًا ديناميكيًا طويلاً إلى https://www.example.com/my-page
يفتح مع تطبيق iOS الخاص بك على iOS والتطبيق com.example.android
على Android:
سويفت
guard let link = URL(string: "https://www.example.com/my-page") else { return } let dynamicLinksDomainURIPrefix = "https://example.com/link" let linkBuilder = DynamicLinkComponents(link: link, domainURIPrefix: dynamicLinksDomainURIPRefix) linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios") linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android") guard let longDynamicLink = linkBuilder.url else { return } print("The long URL is: \(longDynamicLink)")
ج موضوعية
NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"]; NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link"; FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc] initWithLink:link domainURIPrefix:dynamicLinksDomainURIPrefix]; linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc] initWithBundleID:@"com.example.ios"]; linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc] initWithPackageName:@"com.example.android"]; NSLog(@"The long URL is: %@", linkBuilder.url);
لإنشاء ارتباط ديناميكي قصير ، قم ببناء DynamicLinkComponents
بنفس الطريقة ، ثم قم باستدعاء shorten()
.
يتطلب إنشاء ارتباط قصير اتصالاً بالشبكة ، لذا بدلاً من إعادة الارتباط مباشرةً ، يقبل shorten()
معالج الإكمال ، والذي يتم استدعاؤه عند اكتمال الطلب. على سبيل المثال:
سويفت
linkBuilder.shorten() { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
ج موضوعية
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL, NSArray<NSString *> * _Nullable warnings, NSError * _Nullable error) { if (error || shortURL == nil) { return; } NSLog(@"The short URL is: %@", shortURL); }];
بشكل افتراضي ، يتم إنشاء روابط ديناميكية قصيرة مع لواحق ارتباط مكونة من 17 حرفًا مما يجعل من غير المحتمل للغاية أن يتمكن أي شخص من تخمين ارتباط ديناميكي صالح. إذا لم يكن هناك ضرر ، بالنسبة لحالة الاستخدام الخاصة بك ، في قيام شخص ما بتخمين ارتباط قصير بنجاح ، فقد تفضل إنشاء لاحقات طالما كانت ضرورية لتكون فريدة ، وهو ما يمكنك القيام به عن طريق تعيين خاصية dynamicLinkComponentsOptions
:
سويفت
linkBuilder.options = DynamicLinkComponentsOptions() linkBuilder.options.pathLength = .short linkBuilder.shorten() { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
ج موضوعية
linkBuilder.dynamicLinkComponentsOptions = [[FIRDynamicLinkComponentsOptions alloc] init]; linkBuilder.dynamicLinkComponentsOptions.pathLength = FIRShortDynamicLinkPathLengthShort; [linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL, NSArray<NSString *> * _Nullable warnings, NSError * _Nullable error) { if (error || shortURL == nil) { return; } NSLog(@"The short URL is: %@", shortURL); }];
معلمات الارتباط الديناميكي
يمكنك استخدام Dynamic Link Builder API لإنشاء روابط ديناميكية مع أي من المعلمات المدعومة. راجع مرجع API للحصول على التفاصيل.
ينشئ المثال التالي ارتباطًا ديناميكيًا مع مجموعة معلمات شائعة متعددة:
سويفت
guard let link = URL(string: "https://www.example.com/my-page") else { return } let dynamicLinksDomainURIPrefix = "https://example.com/link" let linkBuilder = DynamicLinkComponents(link: link, domainURIPRefix: dynamicLinksDomainURIPrefix) linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios") linkBuilder.iOSParameters.appStoreID = "123456789" linkBuilder.iOSParameters.minimumAppVersion = "1.2.3" linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android") linkBuilder.androidParameters.minimumVersion = 123 linkBuilder.analyticsParameters = DynamicLinkGoogleAnalyticsParameters(source: "orkut", medium: "social", campaign: "example-promo") linkBuilder.iTunesConnectParameters = DynamicLinkItunesConnectAnalyticsParameters() linkBuilder.iTunesConnectParameters.providerToken = "123456" linkBuilder.iTunesConnectParameters.campaignToken = "example-promo" linkBuilder.socialMetaTagParameters = DynamicLinkSocialMetaTagParameters() linkBuilder.socialMetaTagParameters.title = "Example of a Dynamic Link" linkBuilder.socialMetaTagParameters.descriptionText = "This link works whether the app is installed or not!" linkBuilder.socialMetaTagParameters.imageURL = "https://www.example.com/my-image.jpg" guard let longDynamicLink = linkBuilder.url else { return } print("The long URL is: \(longDynamicLink)")
ج موضوعية
NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"]; NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link"; FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc] initWithLink:link domainURIPrefix:dynamicLinksDomainURIPrefix]; linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc] initWithBundleID:@"com.example.ios"]; linkBuilder.iOSParameters.appStoreID = @"123456789"; linkBuilder.iOSParameters.minimumAppVersion = @"1.2.3"; linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc] initWithPackageName:@"com.example.android"]; linkBuilder.androidParameters.minimumVersion = 123; linkBuilder.analyticsParameters = [[FIRDynamicLinkGoogleAnalyticsParameters alloc] initWithSource:@"orkut" medium:@"social" campaign:@"example-promo"]; linkBuilder.iTunesConnectParameters = [[FIRDynamicLinkItunesConnectAnalyticsParameters alloc] init]; linkBuilder.iTunesConnectParameters.providerToken = @"123456"; linkBuilder.iTunesConnectParameters.campaignToken = @"example-promo"; linkBuilder.socialMetaTagParameters = [[FIRDynamicLinkSocialMetaTagParameters alloc] init]; linkBuilder.socialMetaTagParameters.title = @"Example of a Dynamic Link"; linkBuilder.socialMetaTagParameters.descriptionText = @"This link works whether the app is installed or not!"; linkBuilder.socialMetaTagParameters.imageURL = @"https://www.example.com/my-image.jpg"; NSLog(@"The long URL is: %@", linkBuilder.url);
يمكنك تعيين معلمات الارتباط الديناميكي بالعناصر والخصائص التالية:
مكونات DynamicLink | |
---|---|
وصلة | الرابط الذي سيفتحه تطبيقك. حدد عنوان URL يمكن لتطبيقك التعامل معه ، عادةً ما يكون محتوى التطبيق أو حمولته ، والذي يبدأ منطقًا خاصًا بالتطبيق (مثل منح المستخدم قسيمة أو عرض شاشة ترحيب). يجب أن يكون هذا الارتباط عبارة عن عنوان URL جيد التنسيق ، وأن يكون مشفرًا بعنوان URL بشكل صحيح ، ويستخدم إما HTTP أو HTTPS ، ولا يمكن أن يكون رابطًا ديناميكيًا آخر. |
المجال | بادئة عنوان URL للرابط الديناميكي ، والتي يمكنك العثور عليها في وحدة تحكم Firebase. يشبه مجال الارتباط الديناميكي الأمثلة التالية: https://example.com/link https://example.page.link |
DynamicLinkAndroidParameters | |
---|---|
عنوان URL الاحتياطي | الرابط الذي سيتم فتحه عند عدم تثبيت التطبيق. حدد هذا للقيام بشيء آخر غير تثبيت التطبيق الخاص بك من متجر Play عندما لا يتم تثبيت التطبيق ، مثل فتح إصدار الويب للجوال من المحتوى ، أو عرض صفحة ترويجية لتطبيقك. |
الإصدار الأدنى | versionCode لأدنى إصدار من تطبيقك يمكنه فتح الرابط. إذا كان التطبيق المثبت إصدارًا أقدم ، فسيتم نقل المستخدم إلى متجر Play لترقية التطبيق. |
DynamicLinkIOS المعلمات | |
---|---|
معرف التطبيق | معرّف App Store لتطبيقك ، يُستخدم لإرسال المستخدمين إلى App Store عندما لا يكون التطبيق مثبتًا |
عنوان URL الاحتياطي | الرابط الذي سيتم فتحه عند عدم تثبيت التطبيق. حدد هذا للقيام بشيء آخر غير تثبيت تطبيقك من App Store عندما لا يكون التطبيق مثبتًا ، مثل فتح إصدار الويب للجوال من المحتوى ، أو عرض صفحة ترويجية لتطبيقك. |
customScheme | مخطط عنوان URL المخصص لتطبيقك ، إذا تم تعريفه على أنه شيء آخر غير معرّف حزمة تطبيقك |
iPadFallbackURL | الرابط الذي سيتم فتحه على أجهزة iPad في حالة عدم تثبيت التطبيق. حدد هذا للقيام بشيء آخر غير تثبيت تطبيقك من App Store عندما لا يكون التطبيق مثبتًا ، مثل فتح إصدار الويب للمحتوى ، أو عرض صفحة ترويجية لتطبيقك. |
iPadBundleID | معرّف حزمة تطبيق iOS المراد استخدامه على أجهزة iPad لفتح الرابط. يجب أن يكون التطبيق متصلاً بمشروعك من صفحة "نظرة عامة" بوحدة تحكم Firebase. |
الحد الأدنى | رقم إصدار أقل إصدار لتطبيقك يمكنه فتح الرابط. يتم تمرير هذه العلامة إلى تطبيقك عند فتحه ، ويجب أن يقرر التطبيق ما يجب فعله به. |
معلمات DynamicLinkNavigationInfoParameters | |
---|---|
ForcedRedirectEnabled | إذا تم التعيين على "1" ، فتخط صفحة معاينة التطبيق عند فتح الرابط الديناميكي ، وبدلاً من ذلك أعد التوجيه إلى التطبيق أو المتجر. يمكن لصفحة معاينة التطبيق (التي يتم تمكينها افتراضيًا) إرسال المستخدمين بشكل أكثر موثوقية إلى الوجهة الأكثر ملاءمة عند فتح الروابط الديناميكية في التطبيقات ؛ ومع ذلك ، إذا كنت تتوقع أن يتم فتح الرابط الديناميكي فقط في التطبيقات التي يمكنها فتح الروابط الديناميكية بشكل موثوق بدون هذه الصفحة ، فيمكنك تعطيله باستخدام هذه المعلمة. ستؤثر هذه المعلمة على سلوك الرابط الديناميكي فقط على نظام iOS. |
معلمات DynamicLinkSocialMetaTagParameters | |
---|---|
عنوان | العنوان المراد استخدامه عند مشاركة الرابط الديناميكي في منشور اجتماعي. |
وصف النص | الوصف المطلوب استخدامه عند مشاركة الرابط الديناميكي في منشور اجتماعي. |
رابط الصورة | عنوان URL لصورة مرتبطة بهذا الارتباط. يجب أن تكون الصورة 300 × 200 بكسل على الأقل ، وأقل من 300 كيلوبايت. |
DynamicLinkGoogleAnalyticsParameters | |
---|---|
مصدر واسطة حملة شرط محتوى | معلمات تحليلات Google Play. يتم تمرير هذه المعلمات ( utm_source ، utm_medium ، utm_campaign ، utm_term ، utm_content ) إلى متجر Play بالإضافة إلى إلحاقها بحمولة الرابط. |
DynamicLinkItunesConnectAnalytics المعلمات | |
---|---|
ProviderToken التابعة حملة | معلمات تحليلات iTunes Connect. يتم تمرير هذه المعلمات ( pt ، at ، ct ) إلى متجر التطبيقات. |
تقصير ارتباط ديناميكي طويل
لتقصير ارتباط ديناميكي طويل ، مرر الارتباط الديناميكي الطويل لتقصير shortenURL(url:options:)
مع كائن DynamicLinkComponentsOptions
إذا كنت تريد إنشاء ارتباط له لاحقة قصيرة:
سويفت
DynamicLinkComponents.shortenURL(url: longLinkUrl, options: nil) { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
ج موضوعية
[FIRDynamicLinkComponents shortenURL:longLinkUrl options:nil completion:^(NSURL * _Nullable shortURL, NSArray<NSString *> * _Nullable warnings, NSError * _Nullable error) { if (error || shortURL == nil) { return; } NSLog(@"The short URL is: %@", shortURL); }];
تحديد مخطط URL مخصص للروابط الديناميكية
بشكل افتراضي ، تستخدم الروابط الديناميكية معرف حزمة التطبيق الخاص بك كمخطط URL المطلوب لفتح التطبيق الخاص بك. نوصي بالبقاء مع هذه القيمة الافتراضية لإبقاء التنفيذ بسيطًا.
ومع ذلك ، قد يرغب المطورون الذين يستخدمون بالفعل مخطط URL مخصصًا لأغراض أخرى في استخدام نفس مخطط URL المخصص للروابط الديناميكية الخاصة بهم أيضًا. إذا كنت في هذا الموقف ، فيمكنك تحديد نظام URL مختلف للروابط الديناميكية لـ Firebase باتباع الخطوات التالية:
- عند إعداد تطبيقك ، تأكد من تحديد مخطط عنوان URL الافتراضي ليستخدمه تطبيقك قبل تكوين مثيل
FirebaseApp
المشترك:سويفت
ملاحظة: لا يتوفر منتج Firebase هذا على أهداف macOS أو Mac Catalyst أو tvOS أو watchOS.func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication .LaunchOptionsKey: Any]?) -> Bool { // Set deepLinkURLScheme to the custom URL scheme you defined in your // Xcode project. FirebaseOptions.defaultOptions()?.deepLinkURLScheme = customURLScheme FirebaseApp.configure() return true }
ج موضوعية
ملاحظة: لا يتوفر منتج Firebase هذا على أهداف macOS أو Mac Catalyst أو tvOS أو watchOS.- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Set deepLinkURLScheme to the custom URL scheme you defined in your // Xcode project. [FIROptions defaultOptions].deepLinkURLScheme = CUSTOM_URL_SCHEME; [FIRApp configure]; return YES; }
- عندما تنشئ أي رابط ديناميكي ، ستحتاج إلى تحديد مخطط URL المخصص الذي يستخدمه تطبيقك. يمكنك القيام بذلك من خلال وحدة تحكم Firebase ، أو إعداد
customScheme
في Builder API ، أو تحديد معلمةius
في عنوان URL الخاص بك ، أو إرسال معلمةiosCustomScheme
إلى REST API
الخطوات التالية
الآن بعد أن قمت بإنشاء روابط ديناميكية ، تحتاج إلى إعداد تطبيقك لتلقي الروابط الديناميكية وإرسال المستخدمين إلى المكان الصحيح في تطبيقك بعد أن يفتحهم المستخدم.
لتلقي روابط ديناميكية في تطبيقك ، راجع الوثائق الخاصة بأنظمة iOS و Android و C ++ و Unity .