ایجاد لینک های پویا در iOS

شما می‌توانید با استفاده از API سازنده Firebase Dynamic Links Dynamic Links کوتاه یا بلند ایجاد کنید. این API یا یک Dynamic Link بلند یا یک شیء حاوی پارامترهای Dynamic Link را می‌پذیرد و URLهایی مانند مثال‌های زیر را برمی‌گرداند:

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

پیش‌نیازها

قبل از شروع، مطمئن شوید که Firebase را به پروژه iOS خود اضافه کرده‌اید .

برای نصب و مدیریت وابستگی‌های Firebase از Swift Package Manager استفاده کنید.

  1. در Xcode، با باز کردن پروژه برنامه خود، به File > Add Packages بروید.
  2. وقتی از شما خواسته شد، مخزن SDK پلتفرم‌های اپل فایربیس را اضافه کنید:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. کتابخانه Dynamic Links را انتخاب کنید.
  5. پرچم -ObjC را به بخش Other Linker Flags در تنظیمات ساخت هدف خود اضافه کنید.
  6. برای تجربه بهینه با Dynamic Links ، توصیه می‌کنیم Google Analytics در پروژه Firebase خود فعال کنید و Firebase SDK را برای Google Analytics به برنامه خود اضافه کنید. می‌توانید کتابخانه را بدون مجموعه IDFA یا با مجموعه IDFA انتخاب کنید. به سوالات متداول ما در مورد آخرین سازماندهی ماژول‌ها در Google Analytics برای Firebase SDK مراجعه کنید.
  7. پس از اتمام، Xcode به طور خودکار شروع به حل و دانلود وابستگی‌های شما در پس‌زمینه می‌کند.

اکنون، برخی از مراحل پیکربندی را انجام دهید:

  1. در کنسول Firebase ، بخش Dynamic Links را باز کنید.
  2. اگر قبلاً شرایط خدمات را نپذیرفته‌اید و پیشوند URI را برای Dynamic Links خود تنظیم نکرده‌اید، در صورت درخواست، این کار را انجام دهید.

    اگر از قبل پیشوند URL Dynamic Links را دارید، آن را یادداشت کنید. هنگام ایجاد Dynamic Links به صورت برنامه‌نویسی، باید آن را ارائه دهید.

  3. توصیه می‌شود : الگوهای URL مجاز در لینک‌های عمیق و لینک‌های جایگزین خود را مشخص کنید. با انجام این کار، از ایجاد Dynamic Links توسط اشخاص غیرمجاز که از دامنه شما به سایت‌هایی که کنترلی بر آنها ندارید هدایت می‌شوند، جلوگیری می‌کنید. به بخش «اجازه دادن به الگوهای خاص URL» مراجعه کنید.
  4. مطمئن شوید که شناسه فروشگاه برنامه و پیشوند شناسه برنامه شما در تنظیمات برنامه مشخص شده است. برای مشاهده و ویرایش تنظیمات برنامه، به صفحه تنظیمات پروژه Firebase خود بروید و برنامه iOS خود را انتخاب کنید.

    با باز کردن فایل apple-app-site-association که در دامنه Dynamic Links شما میزبانی می‌شود، تأیید کنید که پروژه Firebase شما به درستی برای استفاده از Dynamic Links در برنامه iOS شما پیکربندی شده است. 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 خالی است، دوباره بررسی کنید که آیا پیشوند App ID خود را مشخص کرده‌اید یا خیر. توجه داشته باشید که پیشوند App ID شما ممکن است با Team ID شما یکسان نباشد.

فایربیس را به برنامه خود اضافه کنید

  1. ماژول FirebaseCore را در UIApplicationDelegate خود وارد کنید، و همچنین هر ماژول Firebase دیگری که app delegate شما از آن استفاده می‌کند. به عنوان مثال، برای استفاده از Cloud Firestore و Authentication :

    سویفت‌یو‌آی

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

    سویفت

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    هدف-سی

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. یک نمونه اشتراکی FirebaseApp در متد application 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];
  3. اگر از SwiftUI استفاده می‌کنید، باید یک نماینده برنامه ایجاد کنید و آن را از طریق UIApplicationDelegateAdaptor یا NSApplicationDelegateAdaptor به ساختار App خود پیوست کنید. همچنین باید swizzling نماینده برنامه را غیرفعال کنید. برای اطلاعات بیشتر، به دستورالعمل‌های 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 مراجعه کنید و با دنبال کردن فرم گام به گام، یکی را به صورت دستی ایجاد کنید.

از API سازنده iOS استفاده کنید

شما می‌توانید از API سازنده iOS برای ساخت Dynamic Links از پارامترها یا کوتاه کردن یک Dynamic Link طولانی استفاده کنید.

برای ایجاد یک Dynamic Link ، یک شیء DynamicLinkComponents جدید ایجاد کنید و پارامترهای Dynamic Link را با تنظیم ویژگی‌های مربوطه شیء مشخص کنید. سپس، پیوند طولانی را از ویژگی url شیء دریافت کنید یا پیوند کوتاه را با فراخوانی shorten() دریافت کنید.

مثال مینیمال زیر یک Dynamic Link طولانی به https://www.example.com/my-page ایجاد می‌کند که با برنامه iOS شما در iOS و برنامه com.example.android در اندروید باز می‌شود:

سویفت

توجه: این محصول 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)")

هدف-سی

توجه: این محصول 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() یک کنترل‌کننده تکمیل را می‌پذیرد که هنگام تکمیل درخواست فراخوانی می‌شود. برای مثال:

سویفت

توجه: این محصول 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)")
}

هدف-سی

توجه: این محصول 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 کوتاه با پسوندهای لینک ۱۷ کاراکتری تولید می‌شوند که حدس زدن یک Dynamic Link معتبر را بسیار بعید می‌کند. اگر برای مورد استفاده شما، حدس زدن موفقیت‌آمیز یک لینک کوتاه توسط کسی ضرری ندارد، ممکن است ترجیح دهید پسوندهایی تولید کنید که فقط تا زمانی که برای منحصر به فرد بودن لازم است، طول داشته باشند، که می‌توانید با تنظیم ویژگی dynamicLinkComponentsOptions این کار را انجام دهید:

سویفت

توجه: این محصول 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)")
}

هدف-سی

توجه: این محصول 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);
}];
      

شما می‌توانید از API سازنده Dynamic Link برای ایجاد Dynamic Links با هر یک از پارامترهای پشتیبانی شده استفاده کنید. برای جزئیات بیشتر به مرجع API مراجعه کنید.

مثال زیر یک Dynamic Link با چندین پارامتر مشترک ایجاد می‌کند:

سویفت

توجه: این محصول 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)")

هدف-سی

توجه: این محصول 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 با اشیاء و ویژگی‌های زیر تنظیم کنید:

کامپوننت‌های لینک پویا
پیوند

لینکی که برنامه شما باز خواهد کرد. یک URL مشخص کنید که برنامه شما می‌تواند آن را مدیریت کند، معمولاً محتوای برنامه یا محتوای برنامه که منطق خاص برنامه را آغاز می‌کند (مانند اعطای کوپن به کاربر یا نمایش صفحه خوشامدگویی). این لینک باید یک URL با فرمت مناسب باشد، به درستی URL-encode شده باشد، از HTTP یا HTTPS استفاده کند و نمی‌تواند یک لینک پویای دیگر باشد.

پیشوند domainURIP پیشوند URL Dynamic Link شما، که می‌توانید آن را در کنسول Firebase پیدا کنید. یک دامنه Dynamic Link مانند مثال‌های زیر است:
https://example.com/link
https://example.page.link
پارامترهای DynamicLinkAndroid
آدرس اینترنتی جایگزین لینکی که وقتی برنامه نصب نشده است باز می‌شود. این را مشخص کنید تا وقتی برنامه نصب نشده است، کاری غیر از نصب برنامه از فروشگاه Play انجام دهد، مانند باز کردن نسخه وب موبایل محتوا یا نمایش یک صفحه تبلیغاتی برای برنامه شما.
حداقل نسخه versionCode حداقل نسخه برنامه شما که می‌تواند لینک را باز کند. اگر برنامه نصب شده نسخه قدیمی‌تری باشد، کاربر برای ارتقاء برنامه به فروشگاه Play هدایت می‌شود.
پارامترهای DynamicLinkIOS
شناسه برنامه شناسه اپ استور برنامه شما، که برای هدایت کاربران به اپ استور در زمانی که برنامه نصب نشده است، استفاده می‌شود.
آدرس اینترنتی جایگزین لینکی که وقتی برنامه نصب نشده است باز می‌شود. این را مشخص کنید تا وقتی برنامه نصب نشده است، کاری غیر از نصب برنامه از اپ استور انجام دهد، مانند باز کردن نسخه وب موبایل محتوا، یا نمایش یک صفحه تبلیغاتی برای برنامه شما.
طرح سفارشی طرح URL سفارشی برنامه شما، اگر چیزی غیر از شناسه بسته برنامه شما تعریف شده باشد
آدرس اینترنتی بازگشت به عقب آیپد لینکی که در آیپدها وقتی برنامه نصب نشده است باز می‌شود. این را مشخص کنید تا وقتی برنامه نصب نشده است، کاری غیر از نصب برنامه از اپ استور انجام دهد، مانند باز کردن نسخه وب محتوا یا نمایش یک صفحه تبلیغاتی برای برنامه شما.
آی‌دی بسته‌ی آی‌پد شناسه بسته برنامه iOS برای استفاده در iPads برای باز کردن لینک. برنامه باید از صفحه Overview کنسول Firebase به پروژه شما متصل شود.
حداقل نسخه برنامه شماره نسخه حداقل نسخه برنامه شما که می‌تواند لینک را باز کند. این پرچم هنگام باز شدن به برنامه شما منتقل می‌شود و برنامه شما باید تصمیم بگیرد که با آن چه کاری انجام دهد.
پارامترهای اطلاعات ناوبری لینک پویا
تغییر مسیر اجباریفعال شد اگر روی «۱» تنظیم شود، هنگام باز شدن Dynamic Link ، صفحه پیش‌نمایش برنامه را رد می‌کند و در عوض به برنامه یا فروشگاه هدایت می‌شود. صفحه پیش‌نمایش برنامه (که به طور پیش‌فرض فعال است) می‌تواند کاربران را هنگام باز کردن Dynamic Links در برنامه‌ها، با اطمینان بیشتری به مناسب‌ترین مقصد هدایت کند. با این حال، اگر انتظار دارید Dynamic Link فقط در برنامه‌هایی باز شود که می‌توانند Dynamic Links بدون این صفحه به طور مطمئن باز کنند، می‌توانید آن را با این پارامتر غیرفعال کنید. این پارامتر فقط بر رفتار Dynamic Link در iOS تأثیر می‌گذارد.
پارامترهای DynamicLinkSocialMetaTag
عنوان عنوانی که هنگام اشتراک‌گذاری Dynamic Link در یک پست اجتماعی استفاده می‌شود.
توضیحاتمتن توضیحی که هنگام اشتراک‌گذاری Dynamic Link در یک پست اجتماعی استفاده می‌شود.
آدرس تصویر آدرس اینترنتی (URL) تصویری مرتبط با این لینک. تصویر باید حداقل ۳۰۰x۲۰۰ پیکسل و کمتر از ۳۰۰ کیلوبایت باشد.
پارامترهای DynamicLinkGoogleAnalytics
منبع
متوسط
کمپین
اصطلاح
محتوا
پارامترهای تحلیلی گوگل پلی. این پارامترها ( utm_source ، utm_medium ، utm_campaign ، utm_term ، utm_content ) به فروشگاه پلی منتقل شده و همچنین به لینک بارگذاری شده اضافه می‌شوند.
پارامترهای DynamicLinkItunesConnectAnalytics
توکن ارائه دهنده
توکن وابسته
توکن کمپین
پارامترهای تحلیلی iTunes Connect. این پارامترها ( pt ، at ، ct ) به اپ استور منتقل می‌شوند.

برای کوتاه کردن یک Dynamic Link بلند، اگر می‌خواهید لینکی با پسوند کوتاه ایجاد کنید Dynamic Link بلند را به همراه یک شیء DynamicLinkComponentsOptions به shortenURL(url:options:) ارسال کنید:

سویفت

توجه: این محصول 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)")
}

هدف-سی

توجه: این محصول 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. هنگام تنظیم برنامه خود، قبل از پیکربندی نمونه مشترک FirebaseApp ، مطمئن شوید که طرح URL پیش‌فرض مورد استفاده توسط برنامه خود را مشخص کرده‌اید:

    سویفت

    توجه: این محصول 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;
    }
  2. هر زمان که هرگونه Dynamic Link ایجاد می‌کنید، باید طرح URL سفارشی مورد استفاده برنامه خود را مشخص کنید. می‌توانید این کار را از طریق کنسول Firebase ، تنظیم customScheme در Builder API، تعیین پارامتر ius در URL خود یا ارسال پارامتر iosCustomScheme به REST API انجام دهید.

مراحل بعدی

حالا که Dynamic Links ایجاد کرده‌اید، باید برنامه خود را طوری تنظیم کنید که Dynamic Links دریافت کند و پس از باز شدن توسط کاربر، آنها را به مکان مناسب در برنامه شما ارسال کند.

برای دریافت Dynamic Links در برنامه خود، به مستندات مربوط به iOS ، اندروید ، C++ و Unity مراجعه کنید.