با Firebase Dynamic Links Builder API می توانید پیوندهای پویا کوتاه یا طولانی ایجاد کنید. این API یا یک پیوند پویا طولانی یا یک شی حاوی پارامترهای پیوند پویا را میپذیرد و نشانیهای اینترنتی مانند مثالهای زیر را برمیگرداند:
https://example.com/link/WXYZ https://example.page.link/WXYZ
پیش نیازها
قبل از شروع، مطمئن شوید که Firebase را به پروژه iOS خود اضافه کنید .
Firebase و Dynamic Links SDK را راه اندازی کنید
برای نصب و مدیریت وابستگی های Firebase از Swift Package Manager استفاده کنید.
- در Xcode، با باز بودن پروژه برنامه، به File > Add Packages بروید.
- هنگامی که از شما خواسته شد، مخزن SDK پلتفرم های Apple Firebase را اضافه کنید:
- کتابخانه پیوندهای پویا را انتخاب کنید.
- برای تجربه بهینه با Dynamic Links، توصیه میکنیم Google Analytics را در پروژه Firebase خود فعال کنید و Firebase SDK برای Google Analytics را به برنامه خود اضافه کنید. شما می توانید کتابخانه را بدون مجموعه IDFA یا با مجموعه IDFA انتخاب کنید.
- پس از اتمام، Xcode به طور خودکار شروع به حل و دانلود وابستگی های شما در پس زمینه می کند.
https://github.com/firebase/firebase-ios-sdk
اکنون، چند مرحله پیکربندی را انجام دهید:
- در کنسول Firebase، بخش Dynamic Links را باز کنید.
اگر قبلاً شرایط خدمات را نپذیرفته اید و یک پیشوند URI برای پیوندهای پویا خود تنظیم نکرده اید، وقتی از شما خواسته شد این کار را انجام دهید.
اگر قبلاً یک پیشوند URI پیوندهای پویا دارید، آن را یادداشت کنید. هنگام ایجاد پیوندهای پویا باید آن را ارائه دهید.
- توصیه شده : الگوهای URL مجاز در پیوندهای عمیق و پیوندهای بازگشتی خود را مشخص کنید. با انجام این کار، از ایجاد پیوندهای پویا توسط اشخاص غیرمجاز که از دامنه شما به سایت هایی که تحت کنترل شما نیستند هدایت می شوند، جلوگیری می کنید. به اجازه الگوهای URL خاص مراجعه کنید.
مطمئن شوید که شناسه App Store برنامه و پیشوند App ID شما در تنظیمات برنامه شما مشخص شده باشد. برای مشاهده و ویرایش تنظیمات برنامه خود، به صفحه تنظیمات پروژه 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 خود را مشخص کرده اید. توجه داشته باشید که پیشوند شناسه برنامه شما ممکن است با شناسه تیم شما یکی نباشد.
Firebase را به برنامه خود اضافه کنید
- ماژول
FirebaseCore
را درUIApplicationDelegate
خود و همچنین هر ماژول Firebase دیگری که نماینده برنامه شما استفاده میکند، وارد کنید. به عنوان مثال، برای استفاده از Cloud Firestore و Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
سریع
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
هدف-C
@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()
هدف-C
// Use Firebase library to configure APIs [FIRApp configure];
- اگر از SwiftUI استفاده میکنید، باید یک نماینده برنامه ایجاد کنید و آن را از طریق
UIApplicationDelegateAdaptor
یاNSApplicationDelegateAdaptor
به ساختارApp
خود متصل کنید. همچنین باید swizzling نمایندگی برنامه را غیرفعال کنید. برای اطلاعات بیشتر، دستورالعمل های 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 API برای ایجاد پیوندهای پویا از روی پارامترها یا کوتاه کردن یک پیوند پویا طولانی استفاده کنید.
یک پیوند پویا از پارامترها ایجاد کنید
برای ایجاد یک پیوند پویا، یک شیء جدید DynamicLinkComponents
ایجاد کنید و پارامترهای Dynamic Link را با تنظیم خصوصیات مربوط به شی مشخص کنید. سپس، پیوند طولانی را از ویژگی 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)")
هدف-C
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)") }
هدف-C
[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)") }
هدف-C
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)")
هدف-C
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 را با اشیاء و ویژگی های زیر تنظیم کنید:
DynamicLinkComponents | |
---|---|
ارتباط دادن | پیوندی که برنامه شما باز خواهد شد. نشانی اینترنتی را مشخص کنید که برنامه شما بتواند آن را مدیریت کند، معمولاً محتوای برنامه یا بارگذاری بار، که منطق خاص برنامه را آغاز می کند (مانند اعتبار دادن به کاربر با یک کوپن یا نمایش صفحه خوش آمدگویی). این پیوند باید یک URL با قالب بندی مناسب باشد، به درستی کدگذاری URL داشته باشد، از HTTP یا HTTPS استفاده کند و نمی تواند پیوند پویا دیگری باشد. |
دامنهURIPrefix | پیشوند URL لینک پویا شما، که می توانید آن را در کنسول Firebase پیدا کنید. یک دامنه Dynamic Link مانند مثالهای زیر است: https://example.com/link https://example.page.link |
DynamicLinkAndroidParameters | |
---|---|
fallbackURL | پیوندی که وقتی برنامه نصب نشده باشد باز می شود. این را برای انجام کاری غیر از نصب برنامه خود از فروشگاه Play در زمانی که برنامه نصب نشده است مشخص کنید، مانند باز کردن نسخه وب تلفن همراه محتوا، یا نمایش یک صفحه تبلیغاتی برای برنامه شما. |
حداقل نسخه | versionCode حداقل نسخه برنامه شما که می تواند پیوند را باز کند. اگر برنامه نصبشده نسخه قدیمیتر باشد، کاربر برای ارتقای برنامه به فروشگاه Play منتقل میشود. |
DynamicLinkIOSparameters | |
---|---|
appStoreID | شناسه App Store برنامه شما، برای ارسال کاربران به App Store زمانی که برنامه نصب نشده باشد استفاده میشود |
fallbackURL | پیوندی که وقتی برنامه نصب نشده باشد باز می شود. این را برای انجام کاری غیر از نصب برنامه از App Store در زمانی که برنامه نصب نشده است مشخص کنید، مانند باز کردن نسخه وب موبایل محتوا یا نمایش صفحه تبلیغاتی برای برنامه خود. |
طرح سفارشی | طرح URL سفارشی برنامه شما، اگر چیزی غیر از شناسه بسته برنامه شما تعریف شده باشد |
iPadFallbackURL | پیوندی که وقتی برنامه نصب نشده باشد در iPad باز می شود. برای انجام کاری غیر از نصب برنامه از App Store زمانی که برنامه نصب نشده است، این مورد را مشخص کنید، مانند باز کردن نسخه وب محتوا یا نمایش یک صفحه تبلیغاتی برای برنامه خود. |
iPadBundleID | شناسه بسته برنامه iOS برای استفاده در iPad برای باز کردن پیوند. برنامه باید از صفحه نمای کلی کنسول Firebase به پروژه شما متصل شود. |
MinimumAppVersion | شماره نسخه حداقل نسخه برنامه شما که می تواند پیوند را باز کند. این پرچم پس از باز شدن به برنامه شما منتقل می شود و برنامه شما باید تصمیم بگیرد که با آن چه کاری انجام دهد. |
DynamicLinkNavigationInfoParameters | |
---|---|
forcedRedirectEnabled | اگر روی «1» تنظیم شده است، وقتی پیوند پویا باز شد، از صفحه پیشنمایش برنامه رد شوید و در عوض به برنامه یا فروشگاه هدایت شوید. صفحه پیشنمایش برنامه (به طور پیشفرض فعال است) میتواند کاربران را با باز کردن پیوندهای پویا در برنامهها با اطمینان بیشتری به مناسبترین مقصد بفرستد. با این حال، اگر انتظار دارید پیوند پویا فقط در برنامههایی باز شود که میتوانند لینکهای پویا را بدون این صفحه به طور قابل اعتماد باز کنند، میتوانید با این پارامتر آن را غیرفعال کنید. این پارامتر فقط روی رفتار Dynamic Link در iOS تأثیر می گذارد. |
DynamicLinkSocialMetaTagParameters | |
---|---|
عنوان | عنوانی که هنگام اشتراک گذاری پیوند پویا در یک پست اجتماعی استفاده می شود. |
توضیحاتمتن | توضیحاتی که باید هنگام اشتراک گذاری پیوند پویا در یک پست اجتماعی استفاده شود. |
imageURL | نشانی وب یک تصویر مربوط به این پیوند. تصویر باید حداقل 300x200 پیکسل و کمتر از 300 کیلوبایت باشد. |
DynamicLinkGoogleAnalyticsParameters | |
---|---|
منبع متوسط پویش مدت، اصطلاح محتوا | پارامترهای تجزیه و تحلیل گوگل پلی این پارامترها ( utm_source ، utm_medium ، utm_campaign ، utm_term ، utm_content ) به فروشگاه Play منتقل میشوند و همچنین به بار پیوند اضافه میشوند. |
DynamicLinkItunesConnectAnalyticsParameters | |
---|---|
ارائه دهنده توکن affiliateToken CampaignToken | پارامترهای تجزیه و تحلیل iTunes Connect. این پارامترها ( pt , at , ct ) به App Store ارسال می شوند. |
یک پیوند پویا طولانی را کوتاه کنید
برای کوتاه کردن یک پیوند داینامیک طولانی، اگر میخواهید پیوندی با پسوند کوتاه ایجاد کنید، پیوند دینامیک طولانی را به 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)") }
هدف-C
[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 از شناسه بسته برنامه شما به عنوان طرح URL مورد نیاز برای باز کردن برنامه شما استفاده میکند. توصیه میکنیم این مقدار پیشفرض را حفظ کنید تا پیادهسازی خود را ساده نگه دارید.
با این حال، توسعه دهندگانی که در حال حاضر از یک طرح URL سفارشی برای اهداف دیگر استفاده می کنند، ممکن است بخواهند از همین طرح URL سفارشی برای پیوندهای پویا خود نیز استفاده کنند. اگر در این شرایط هستید، میتوانید با دنبال کردن این مراحل، یک طرح URL متفاوت برای پیوندهای دینامیک Firebase خود تعیین کنید:
- هنگام راهاندازی برنامهتان، قبل از پیکربندی نمونه اشتراکگذاری شده
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 }
هدف-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; }
- هر زمان که پیوند پویا ایجاد می کنید، باید طرح URL سفارشی که برنامه شما استفاده می کند را مشخص کنید. می توانید این کار را از طریق کنسول Firebase انجام دهید،
customScheme
در Builder API تعیین کنید، پارامترius
را در URL خود مشخص کنید، یا پارامترiosCustomScheme
را به REST API ارسال کنید.
مراحل بعدی
اکنون که پیوندهای پویا را ایجاد کرده اید، باید برنامه خود را طوری تنظیم کنید که پیوندهای پویا را دریافت کند و پس از باز کردن کاربران، آنها را به مکان مناسبی در برنامه خود بفرستید.
برای دریافت پیوندهای پویا در برنامه خود، به اسناد iOS ، Android ، C++ و Unity مراجعه کنید.