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

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

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

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

قبل البدء، تأكد من إضافة Firebase إلى المشروع الذي يعمل بنظام iOS .

  1. إضافة إلى Firebase المشروع الذي يعمل بنظام iOS .
  2. تشمل جراب التالية في حياتك Podfile :
    pod 'Firebase/Analytics'
    pod 'Firebase/DynamicLinks'
        
  3. تشغيل pod install وفتح إنشاؤها .xcworkspace الملف.
  4. في وحدة تحكم Firebase، فتح الباب الحيوي الوصلات.
  5. إذا لم تكن قد وافقت بالفعل على شروط الخدمة وقمت بتعيين بادئة URI للارتباطات الديناميكية الخاصة بك ، فقم بذلك عندما يُطلب منك ذلك.

    إذا كان لديك بالفعل بادئة URI للروابط الديناميكية ، فقم بتدوينها. تحتاج إلى توفيره عند إنشاء روابط ديناميكية برمجيًا.

  6. الموصى بها: تحديد أنماط URL المسموح بها في الروابط العميقة والروابط تراجعية. من خلال القيام بذلك ، فإنك تمنع الأطراف غير المصرح لها من إنشاء روابط ديناميكية تعيد التوجيه من نطاقك إلى مواقع لا تتحكم فيها. انظر السماح أنماط محددة URL .
  7. تأكد من تحديد معرف متجر التطبيقات الخاص بك وبادئة معرف التطبيق في إعدادات التطبيق. لعرض وتحرير إعدادات التطبيق الخاص بك، انتقل إلى مشروع Firebase الخاص بك صفحة إعدادات واختر التطبيق الذي يعمل بنظام iOS.

    تأكد من أن يتم تكوين مشروع Firebase بشكل صحيح لاستخدام دينامية سريعة في تطبيق iOS من خلال فتح apple-app-site-association ملف يتم استضافتها على نطاق ديناميكي ينكات. 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 يحتوي ملف اشارة الى بادئة التطبيقات ID التطبيق ورمز الرزمة. على سبيل المثال:

    {"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}

    إذا كانت details الملكية فارغة، انقر نقرا مزدوجا الاختيار الذي حددته بادئة التطبيقات ID الخاص بك. لاحظ أن بادئة معرف التطبيق الخاص بك قد لا تكون هي نفسها معرّف الفريق الخاص بك.

أضف Firebase إلى تطبيقك

  1. استيراد وحدة Firebase في حياتك UIApplicationDelegate :

    سويفت

    import Firebase

    ج موضوعية

    @import Firebase;
  2. تكوين ل FirebaseApp المشتركة المثال، عادة في التطبيق الخاص بك application:didFinishLaunchingWithOptions: الأسلوب:

    سويفت

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

    ج موضوعية

    // Use Firebase library to configure APIs
    [FIRApp configure];

استخدم وحدة تحكم Firebase

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

استخدم iOS Builder API

يمكنك استخدام واجهة برمجة تطبيقات iOS Builder لإنشاء روابط ديناميكية من المعلمات ، أو لتقصير ارتباط ديناميكي طويل.

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

على سبيل المثال الحد الأدنى التالي بإنشاء الارتباط الحيوي طويلا ل https://www.example.com/my-page الذي يفتح مع تطبيقات نظام التشغيل iOS الخاص بك على دائرة الرقابة الداخلية والتطبيق com.example.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. يبدو المجال A الارتباط الحيوي مثل الأمثلة التالية:
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 مختلف للروابط الديناميكية لـ Firebase باتباع الخطوات التالية:

  1. عند إعداد التطبيق الخاص بك، تأكد من تحديد مخطط URL الافتراضي لاستخدامها من قبل التطبيق الخاص بك قبل تكوين الخاص FirebaseApp المثال المشتركة:

    سويفت

    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
    }
    

    ج موضوعية

    - (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. عندما تنشئ أي رابط ديناميكي ، ستحتاج إلى تحديد مخطط URL المخصص الذي يستخدمه تطبيقك. يمكنك القيام بذلك من خلال وحدة Firebase، وتحديد customScheme في API باني، تحديد ius معلمة في URL الخاص بك، أو إرسال iosCustomScheme المعلمة إلى API REST

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

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

للحصول على دينامية سريعة في التطبيق الخاص بك، راجع وثائق دائرة الرقابة الداخلية ، الروبوت ، C ++ ، و الوحدة .