إنشاء روابط ديناميكية على نظام التشغيل iOS

يمكنك إنشاء Dynamic Links قصيرة أو طويلة باستخدام Firebase Dynamic Links Builder API. تقبل واجهة برمجة التطبيقات هذه إما علامة Dynamic Link طويلة أو عنصرًا يحتوي على Dynamic Link. وتعرض عناوين URL مثل الأمثلة التالية:

https://example.com/link/WXYZ
https://example.page.link/WXYZ

المتطلبات الأساسية

قبل البدء، تأكَّد من إضافة Firebase إلى جهاز iOS مشروعك.

يمكنك استخدام "مدير حزم Swift" لتثبيت اعتماديات Firebase وإدارتها.

  1. في Xcode، انتقِل إلى File (ملف) > بعد فتح مشروع التطبيق الخاص بك. إضافة حِزم
  2. أضِف مستودع حزمة تطوير البرامج (SDK) لمنصّات Firebase Apple عندما يُطلب منك ذلك:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. اختَر مكتبة "Dynamic Links".
  5. أضِف العلامة -ObjC إلى القسم علامات الروابط الأخرى في إعدادات إصدار هدفك.
  6. للحصول على تجربة مثالية مع Dynamic Links، ننصح تفعيل Google Analytics في مشروعك على Firebase وإضافة حزمة تطوير البرامج (SDK) لمنصّة Firebase الخاصة بخدمة "إحصاءات Google" إلى تطبيقك. يمكنك اختيار إما المكتبة التي لا تتضمن جمع معرّف المعلِنين (IDFA) أو من خلال جمع معرّف المعلِنين (IDFA).
  7. عند الانتهاء، سيبدأ Xcode تلقائيًا في حل وتنزيل ملف والتبعيات في الخلفية.

والآن، نفِّذ بعض خطوات الضبط:

  1. في وحدة تحكُّم Firebase، افتح القسم Dynamic Links.
  2. في حال لم يسبق لك قبول بنود الخدمة وضبط بادئة معرّف الموارد المنتظم (URI) في Dynamic Links، يمكنك إجراء ذلك عندما يُطلب منك ذلك.

    إذا كان لديك بادئة معرّف الموارد المنتظم (URI) Dynamic Links من قبل، يُرجى تدوينها. عليك إجراء ما يلي: عند إنشاء Dynamic Links آليًا.

  3. إجراء مقترَح: تحديد أنماط عناوين URL المسموح بها في الروابط لصفحات معيّنة والروابط الاحتياطية. فمن خلال إجراء ذلك، تمنع الجهات غير المصرّح بها من جارٍ إنشاء Dynamic Links التي تُعيد التوجيه من نطاقك إلى مواقع إلكترونية لا تتحكّم فيها. راجع السماح بـ أنماط عناوين URL:
  4. يُرجى التأكُّد من أنّ رقم تعريف تطبيقك في App Store وبادئة معرّف التطبيق المحدّدة في إعدادات التطبيق. لعرض إعدادات تطبيقك وتعديلها، يُرجى الانتقال إلى بمشروعك على Firebase صفحة الإعدادات واختر تطبيق iOS.

    تأكَّد من ضبط مشروع Firebase بشكل صحيح لاستخدامه. Dynamic Links في تطبيق 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 إلى تطبيقك

  1. استيراد وحدة FirebaseCore في UIApplicationDelegate بالإضافة إلى أي تطبيق آخر وحدات Firebase التي يستخدمها تطبيقك المفوَّض على سبيل المثال، لاستخدام Cloud Firestore وAuthentication:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. ضبط FirebaseApp المثيل المشترك في حساب مفوَّض تطبيقك طريقة application(_:didFinishLaunchingWithOptions:):

    SwiftUI

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. إذا كنت تستخدم 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

إذا أردت إنشاء Dynamic Link واحد، إما لأغراض الاختبار أو لفريق التسويق في مؤسستك. لإنشاء رابط يمكن استخدامه بسهولة في منشور على وسائل التواصل الاجتماعي، فإن أبسط الطرق زيارة وحدة تحكّم "Firebase" وإنشاء موقع يدويًا من خلال اتباع النموذج خطوة بخطوة.

استخدام iOS Builder API

يمكنك استخدام iOS Builder API لإنشاء Dynamic Links من المَعلمات، أو من أجل اختصار قيمة Dynamic Link طويلة

لإنشاء Dynamic Link، عليك إنشاء عنصر DynamicLinkComponents جديد. وتحديد المعلَمات Dynamic Link من خلال ضبط قيمة المواقع. بعد ذلك، عليك الحصول على الرابط الطويل من url الخاص بالكائن. الموقع أو الحصول على الرابط القصير من خلال طلب الرقم shorten().

المثال الأدنى التالي ينشئ علامة Dynamic Link طويلة إلى https://www.example.com/my-page الذي يفتح مع تطبيق iOS على نظام التشغيل iOS وتطبيق com.example.android على نظام التشغيل Android:

Swift

ملاحظة: لا يتوفّر منتج Firebase هذا على أنظمة التشغيل macOS أو Mac Catalyst أو tvOS أو WatchOS.
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)")

Objective-C

ملاحظة: لا يتوفّر منتج Firebase هذا على أنظمة التشغيل macOS أو Mac Catalyst أو tvOS أو WatchOS.
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);

لإنشاء فيديو Dynamic Link قصير، أنشِئ DynamicLinkComponents بالطريقة نفسها، ثم تستدعي shorten().

فإنشاء رابط قصير يتطلب اتصالاً عبر الشبكة، لذا بدلاً من عرض الرابط، يقبل shorten() معالِج الإكمال، الذي عند اكتمال الطلب. على سبيل المثال:

Swift

ملاحظة: لا يتوفّر منتج Firebase هذا على أنظمة التشغيل macOS أو Mac Catalyst أو tvOS أو WatchOS.
linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objective-C

ملاحظة: لا يتوفّر منتج Firebase هذا على أنظمة التشغيل macOS أو Mac Catalyst أو tvOS أو WatchOS.
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL,
                                     NSArray<NSString *> * _Nullable warnings,
                                     NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];
      

يتم تلقائيًا إنشاء Dynamic Links القصيرة باستخدام لاحقات روابط مؤلفة من 17 حرفًا. بحيث يصعب على أي شخص تخمين قيمة Dynamic Link صالحة. إذا، لـ في حالة الاستخدام، فلن يكون هناك ضرر من تخمين شخص ما بنجاح لرابط قصير، قد تفضل إنشاء لاحقات طالما كان ذلك ضروريًا فقط فريدة من نوعها، والتي يمكنك القيام بها من خلال تعيين الخاصية "dynamicLinkComponentsOptions":

Swift

ملاحظة: لا يتوفّر منتج Firebase هذا على أنظمة التشغيل macOS أو Mac Catalyst أو tvOS أو WatchOS.
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)")
}

Objective-C

ملاحظة: لا يتوفّر منتج Firebase هذا على أنظمة التشغيل macOS أو Mac Catalyst أو tvOS أو WatchOS.
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 لإنشاء Dynamic Links باستخدام أي من والمعلمات المدعومة. يمكنك الاطّلاع على مرجع واجهة برمجة التطبيقات للاطّلاع على التفاصيل.

ينشئ المثال التالي Dynamic Link يتضمّن عدة معلَمات شائعة. مجموعة:

Swift

ملاحظة: لا يتوفّر منتج Firebase هذا على أنظمة التشغيل macOS أو Mac Catalyst أو tvOS أو WatchOS.
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)")

Objective-C

ملاحظة: لا يتوفّر منتج Firebase هذا على أنظمة التشغيل macOS أو Mac Catalyst أو tvOS أو WatchOS.
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);

يمكنك ضبط مَعلمات Dynamic Link باستخدام العناصر والخصائص التالية:

مكونات DynamicLink
الرابط

سيفتح التطبيق الرابط. يجب تحديد عنوان URL يمكن لتطبيقك التعامل معه، وعادةً ما يكون محتوى التطبيق. أو الحمولة، التي تبدأ منطقًا خاصًا بالتطبيق (مثل إضافة قسيمة إلى المستخدم) لعرض شاشة ترحيب). ويجب أن يكون هذا الرابط عنوان URL بتنسيق جيد، وترميز عنوان URL بشكل صحيح، ويستخدم إما HTTP أو HTTPS، ولا يمكن أن يكون رابطًا ديناميكيًا آخر.

بادئة اسم النطاق بادئة عنوان URL للسمة Dynamic Link، والتي يمكنك العثور عليها في وحدة التحكّم Firebase. حاسمة يظهر النطاق Dynamic Link على النحو التالي:
https://example.com/link
https://example.page.link
مَعلمات DynamicLinkAndroid
عنوان URL الاحتياطي الرابط الذي يتم فتحه عندما لا يكون التطبيق مثبَّتًا. حدِّد هذا الإجراء لتنفيذ إجراء آخر غير تثبيت التطبيق من "متجر Play" إذا كان التطبيق غير مثبَّت، مثل فتح إصدار الويب على الأجهزة الجوّالة من المحتوى أو عرض صفحة ترويجية لتطبيقك.
الحد الأدنى للإصدار تمثّل هذه السمة versionCode من الحد الأدنى لإصدار التطبيق الذي يمكنه فتح الرابط. إذا كان التطبيق المُثبَّت إصدارًا قديمًا، يتم نقل المستخدم إلى "متجر Play" لترقية التطبيق.
مَعلمات DynamicLinkIOS
رقم تعريف AppStoreID رقم تعريف تطبيقك على App Store، يُستخدَم لتوجيه المستخدمين إلى App Store عند عدم تثبيت التطبيق
عنوان URL الاحتياطي الرابط الذي يتم فتحه عندما لا يكون التطبيق مثبَّتًا. حدِّد هذا الإجراء لتنفيذ إجراء آخر غير تثبيت التطبيق من App Store في حال عدم تثبيت التطبيق، مثل فتح إصدار الويب المتوافق مع الأجهزة الجوّالة من المحتوى أو عرض صفحة ترويجية لتطبيقك.
المخطّط المخصص مخطَّط عنوان URL المخصّص لتطبيقك، إذا تم تحديده على أنّه شيء مختلف عن معرّف حزمة التطبيق
عنوان iPadFallbackURL الرابط الذي يتم فتحه على أجهزة iPad عندما يكون التطبيق غير مثبَّت. حدِّد هذا الإجراء لتنفيذ إجراء آخر غير تثبيت التطبيق من App Store في حال عدم تثبيت التطبيق، مثل فتح إصدار الويب من المحتوى أو عرض صفحة ترويجية لتطبيقك.
معرِّف الحِزمة iPadBundleID رقم تعريف الحزمة الخاص بتطبيق iOS والمطلوب استخدامه على أجهزة iPad لفتح الرابط يجب ربط التطبيق بمشروعك من صفحة النظرة العامة في وحدة تحكّم Firebase.
الحد الأدنى من AppVersion رقم الإصدار من أدنى إصدار من تطبيقك يمكنه فتح الرابط. يتم تمرير هذه العلامة إلى تطبيقك عند فتحه، وعلى التطبيق تحديد الإجراء الذي سيتم اتخاذه بشأنه.
مَعلمات DynamicLinkالتنقلInfo
forcedredirectEnabled في حال الضبط على "1"، يمكنك تخطّي صفحة معاينة التطبيق عند فتح "Dynamic Link"، وإعادة التوجيه إلى التطبيق أو المتجر بدلاً من ذلك. يمكن لصفحة معاينة التطبيق (المفعَّلة تلقائيًا) توجيه المستخدمين إلى الوجهة الأكثر ملاءمةً عند فتح Dynamic Links في التطبيقات. ومع ذلك، إذا كنت تتوقع أن يتم فتح Dynamic Link فقط في التطبيقات التي يمكنها فتح Dynamic Links بشكل موثوق بدون هذه الصفحة، يمكنك إيقافها باستخدام هذه المعلَمة. ستؤثر هذه المَعلمة في سلوك Dynamic Link على نظام التشغيل iOS فقط.
مَعلمات DynamicLinkSocialMetaTagمَعلمات
العنوان العنوان الذي يجب استخدامه عند نشر Dynamic Link في مشاركة على الشبكات الاجتماعية.
نص الوصف الوصف المستخدم عند نشر Dynamic Link في مشاركة على الشبكات الاجتماعية.
imageURL (عنوان URL للصورة) تمثّل هذه السمة عنوان URL لصورة ذات صلة بهذا الرابط. يجب ألا يقلّ حجم الصورة عن 300 × 200 بكسل وألا يزيد عن 300 كيلوبايت.
مَعلمات DynamicLinkGoogleAnalytics
مصدر
متوسط
حملة
عبارة
محتوى
مَعلمات "إحصاءات Google Play" هذه المعلمات (utm_source، utm_medium، utm_campaign وutm_term وutm_content) يتم تمريرها إلى "متجر Play" ويتم إلحاقها بحمولة الرابط.
DynamicLinkItunesConnectAnalyticsparameters
موفِّر الرمز المميّز
affiliateToken
campaignToken
معلَمات إحصاءات iTunes Connect هذه المعلمات (pt، at، ct) إلى App Store.

لتقصير قيمة Dynamic Link الطويلة، يمكنك ضبط قيمة Dynamic Link الطويلة على shortenURL(url:options:) مع DynamicLinkComponentsOptions إذا أردت إنشاء عنصر رابط مع لاحقة قصيرة:

Swift

ملاحظة: لا يتوفّر منتج Firebase هذا على أنظمة التشغيل macOS أو Mac Catalyst أو tvOS أو WatchOS.
DynamicLinkComponents.shortenURL(url: longLinkUrl, options: nil) { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objective-C

ملاحظة: لا يتوفّر منتج Firebase هذا على أنظمة التشغيل macOS أو Mac Catalyst أو tvOS أو WatchOS.
[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);
}];

يستخدم Dynamic Links تلقائيًا معرّف حِزمة تطبيقك باعتباره مخطط عنوان URL المطلوب لفتح التطبيق. ننصحك بالاعتماد على هذه القيمة التلقائية لتبسيط عملية التنفيذ.

مع ذلك، قد يحتاج المطوّرون الذين يستخدمون مخطط عناوين URL مخصّصة لأغراض أخرى إلى استخدام نظام عنوان URL المخصص نفسه مع Dynamic Links أيضًا. إذا كنت في هذا الموقف، فيمكنك تحديد مخطط عنوان URL مختلف لـ Firebase Dynamic Links باتّباع الخطوات التالية:

  1. عند إعداد التطبيق، يُرجى التأكُّد من تحديد مخطط عنوان URL التلقائي ليستخدمه تطبيقك قبل ضبط المثيل المشترك لجهاز FirebaseApp:

    Swift

    ملاحظة: لا يتوفّر منتج 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
    }

    Objective-C

    ملاحظة: لا يتوفّر منتج 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;
    }
  2. عند إنشاء أي Dynamic Link، عليك تحديد مخطط عنوان URL المخصّص الذي التطبيق عبر الإنترنت. يمكنك إجراء ذلك من خلال وحدة تحكّم Firebase وضبط customScheme في Builder API. تحدّد مَعلمة ius في عنوان URL الخاص بك، أو تُرسل المَعلمة iosCustomScheme إلى واجهة برمجة تطبيقات REST

الخطوات التالية

الآن وبعد أن أنشأت Dynamic Links، عليك إعداد تطبيقك لتلقّي Dynamic Links وتوجيه المستخدمين إلى المكان الصحيح في تطبيقك بعد أن يفتحهم المستخدم.

لتلقّي مبلغ Dynamic Links في تطبيقك، يُرجى الاطّلاع على مستندات iOS، Android، C++ الانسجام: