شما میتوانید با استفاده از API سازنده Firebase Dynamic Links Dynamic Links کوتاه یا بلند ایجاد کنید. این API یا یک Dynamic Link بلند یا یک شیء حاوی پارامترهای Dynamic Link را میپذیرد و URLهایی مانند مثالهای زیر را برمیگرداند:
https://example.com/link/WXYZ https://example.page.link/WXYZ
پیشنیازها
قبل از شروع، مطمئن شوید که Firebase را به پروژه iOS خود اضافه کردهاید .
فایربیس و SDK Dynamic Links راهاندازی کنید
برای نصب و مدیریت وابستگیهای Firebase از Swift Package Manager استفاده کنید.
- در Xcode، با باز کردن پروژه برنامه خود، به File > Add Packages بروید.
- وقتی از شما خواسته شد، مخزن SDK پلتفرمهای اپل فایربیس را اضافه کنید:
- کتابخانه Dynamic Links را انتخاب کنید.
- پرچم
-ObjCرا به بخش Other Linker Flags در تنظیمات ساخت هدف خود اضافه کنید. - برای تجربه بهینه با Dynamic Links ، توصیه میکنیم Google Analytics در پروژه Firebase خود فعال کنید و Firebase SDK را برای Google Analytics به برنامه خود اضافه کنید. میتوانید کتابخانه را بدون مجموعه IDFA یا با مجموعه IDFA انتخاب کنید. به سوالات متداول ما در مورد آخرین سازماندهی ماژولها در Google Analytics برای Firebase SDK مراجعه کنید.
- پس از اتمام، Xcode به طور خودکار شروع به حل و دانلود وابستگیهای شما در پسزمینه میکند.
https://github.com/firebase/firebase-ios-sdk.git
اکنون، برخی از مراحل پیکربندی را انجام دهید:
- در کنسول Firebase ، بخش Dynamic Links را باز کنید.
اگر قبلاً شرایط خدمات را نپذیرفتهاید و پیشوند URI را برای Dynamic Links خود تنظیم نکردهاید، در صورت درخواست، این کار را انجام دهید.
اگر از قبل پیشوند URL Dynamic Links را دارید، آن را یادداشت کنید. هنگام ایجاد Dynamic Links به صورت برنامهنویسی، باید آن را ارائه دهید.

- توصیه میشود : الگوهای URL مجاز در لینکهای عمیق و لینکهای جایگزین خود را مشخص کنید. با انجام این کار، از ایجاد Dynamic Links توسط اشخاص غیرمجاز که از دامنه شما به سایتهایی که کنترلی بر آنها ندارید هدایت میشوند، جلوگیری میکنید. به بخش «اجازه دادن به الگوهای خاص URL» مراجعه کنید.
مطمئن شوید که شناسه فروشگاه برنامه و پیشوند شناسه برنامه شما در تنظیمات برنامه مشخص شده است. برای مشاهده و ویرایش تنظیمات برنامه، به صفحه تنظیمات پروژه 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 شما یکسان نباشد.
فایربیس را به برنامه خود اضافه کنید
- ماژول
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; // ...
- یک نمونه اشتراکی
FirebaseAppدر متد applicationapplication(_: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];
- اگر از 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 از پارامترها
برای ایجاد یک Dynamic Link ، یک شیء DynamicLinkComponents جدید ایجاد کنید و پارامترهای Dynamic Link را با تنظیم ویژگیهای مربوطه شیء مشخص کنید. سپس، پیوند طولانی را از ویژگی url شیء دریافت کنید یا پیوند کوتاه را با فراخوانی shorten() دریافت کنید.
مثال مینیمال زیر یک Dynamic Link طولانی به https://www.example.com/my-page ایجاد میکند که با برنامه iOS شما در 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);
برای ایجاد یک Dynamic Link کوتاه، یک 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); }];
به طور پیشفرض، Dynamic Links کوتاه با پسوندهای لینک ۱۷ کاراکتری تولید میشوند که حدس زدن یک Dynamic Link معتبر را بسیار بعید میکند. اگر برای مورد استفاده شما، حدس زدن موفقیتآمیز یک لینک کوتاه توسط کسی ضرری ندارد، ممکن است ترجیح دهید پسوندهایی تولید کنید که فقط تا زمانی که برای منحصر به فرد بودن لازم است، طول داشته باشند، که میتوانید با تنظیم ویژگی 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
شما میتوانید از API سازنده Dynamic Link برای ایجاد Dynamic Links با هر یک از پارامترهای پشتیبانی شده استفاده کنید. برای جزئیات بیشتر به مرجع API مراجعه کنید.
مثال زیر یک Dynamic Link با چندین پارامتر مشترک ایجاد میکند:
سویفت
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);
شما میتوانید پارامترهای 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 بلند، اگر میخواهید لینکی با پسوند کوتاه ایجاد کنید Dynamic Link بلند را به همراه یک شیء DynamicLinkComponentsOptions به shortenURL(url:options:) ارسال کنید:
سویفت
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 سفارشی برای Dynamic Links
به طور پیشفرض، Dynamic Links از شناسه بسته برنامه شما به عنوان طرح URL مورد نیاز برای باز کردن برنامه شما استفاده میکند. توصیه میکنیم برای ساده نگه داشتن پیادهسازی، از این مقدار پیشفرض استفاده کنید.
با این حال، توسعهدهندگانی که از قبل از یک طرح URL سفارشی برای اهداف دیگر استفاده میکنند، ممکن است بخواهند از همین طرح URL سفارشی برای Dynamic Links خود نیز استفاده کنند. اگر در این شرایط هستید، میتوانید با دنبال کردن این مراحل، یک طرح URL متفاوت برای Firebase Dynamic Links خود تعیین کنید:
- هنگام تنظیم برنامه خود، قبل از پیکربندی نمونه مشترک
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; }
- هر زمان که هرگونه Dynamic Link ایجاد میکنید، باید طرح URL سفارشی مورد استفاده برنامه خود را مشخص کنید. میتوانید این کار را از طریق کنسول Firebase ، تنظیم
customSchemeدر Builder API، تعیین پارامترiusدر URL خود یا ارسال پارامترiosCustomSchemeبه REST API انجام دهید.
مراحل بعدی
حالا که Dynamic Links ایجاد کردهاید، باید برنامه خود را طوری تنظیم کنید که Dynamic Links دریافت کند و پس از باز شدن توسط کاربر، آنها را به مکان مناسب در برنامه شما ارسال کند.
برای دریافت Dynamic Links در برنامه خود، به مستندات مربوط به iOS ، اندروید ، C++ و Unity مراجعه کنید.