iOS'te Dinamik Bağlantılar oluşturma

Firebase Dynamic Links Builder API ile kısa veya uzun Dinamik Bağlantılar oluşturabilirsiniz. Bu API, uzun bir Dinamik Bağlantı ya da Dinamik Bağlantı parametreleri içeren bir nesneyi kabul eder ve aşağıdaki örneklere benzer URL'leri döndürür:

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

Ön koşullar

Başlamadan önce Firebase'i iOS projenize eklediğinizden emin olun.

Firebase bağımlılıklarını yükleyip yönetmek için Swift Package Manager'ı kullanın.

  1. Xcode'da, uygulamanız açıkken File > Add Packages'a (Dosya > Paket Ekle) gidin.
  2. İstendiğinde Firebase Apple platformlar SDK deposunu ekleyin:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Dynamic Links kitaplığını seçin.
  5. -ObjC işaretini, hedefinizin derleme ayarlarındaki Diğer Bağlayıcı İşaretleri bölümüne ekleyin.
  6. Dynamic Links ile optimum bir deneyim elde etmek için Firebase projenizde Google Analytics'i etkinleştirmenizi ve Google Analytics için Firebase SDK'sını uygulamanıza eklemenizi öneririz. IDFA toplama olmayan veya IDFA toplamalı kitaplığı seçebilirsiniz.
  7. İşlem tamamlandığında Xcode, arka planda bağımlılıklarınızı otomatik olarak çözümlemeye ve indirmeye başlar.

Şimdi bazı yapılandırma adımlarını uygulayın:

  1. Firebase konsolunda Dinamik Bağlantılar bölümünü açın.
  2. Hizmet şartlarını henüz kabul etmediyseniz ve Dynamic Links'iniz için bir URI öneki ayarlamadıysanız istendiğinde bunu yapın.

    Halihazırda bir Dynamic Links URI ön ekiniz varsa bunu not edin. Programatik olarak Dynamic Links oluştururken bu kodu sağlamanız gerekir.

  3. Önerilen: Derin bağlantılarınızda ve yedek bağlantılarınızda izin verilen URL kalıplarını belirtin. Böylece yetkisiz tarafların, alanınızdan kontrol etmediğiniz sitelere yönlendiren Dinamik Bağlantılar oluşturmasını önlersiniz. Belirli URL kalıplarına izin verme bölümüne bakın.
  4. Uygulamanızın App Store Kimliği ve Uygulama Kimliği ön ekinizin, uygulamanızın ayarlarında belirtildiğinden emin olun. Uygulamanızın ayarlarını görüntülemek ve düzenlemek için Firebase projenizin Ayarlar sayfasına gidip iOS uygulamanızı seçin.

    Dynamic Links alanınızda barındırılan apple-app-site-association dosyasını açarak Firebase projenizin iOS uygulamanızda Dynamic Links'i kullanacak şekilde doğru şekilde yapılandırıldığından emin olun. Firebase, apple-app-site-association dosyasını hem alanın kök dizininden hem de .well-known alt dizininden sunar. Örneğin:

        https://example.com/apple-app-site-association
        https://example.com/.well-known/apple-app-site-association
        

    Uygulamanız bağlıysa apple-app-site-association dosyası, uygulamanızın Uygulama Kimliği önekine ve paket kimliğine referans içerir. Örnek:

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

    details özelliği boşsa Uygulama Kimliği ön ekinizi belirttiğinizi tekrar kontrol edin. Uygulama kimliği ön ekinizin, Ekip Kimliğinizle aynı olmayabileceğini unutmayın.

Firebase'i uygulamanıza ekleyin

  1. FirebaseCore modülünü UIApplicationDelegate uygulamanıza ve yetki verdiğiniz kullanıcının kullandığı diğer tüm Firebase modüllerini içe aktarın. Örneğin, Cloud Firestore ve Authentication'ı kullanmak için:

    Hızlı Kullanıcı Arayüzü

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

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Uygulama yetkilinizin application(_:didFinishLaunchingWithOptions:) yönteminde FirebaseApp paylaşılan bir örnek yapılandırın:

    Hızlı Kullanıcı Arayüzü

    // 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 kullanıyorsanız bir uygulama temsilcisi oluşturmanız ve UIApplicationDelegateAdaptor veya NSApplicationDelegateAdaptor aracılığıyla App yapınıza eklemeniz gerekir. Uygulama yetkilendirmesi kaydırmayı da devre dışı bırakmanız gerekir. Daha fazla bilgi için SwiftUI talimatlarına bakın.

    Hızlı Kullanıcı Arayüzü

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          

Firebase konsolunu kullanma

Test amacıyla veya pazarlama ekibinizin sosyal medya yayını gibi bir yerde kullanılabilecek bir bağlantıyı kolayca oluşturması için tek bir Dinamik Bağlantı oluşturmak istiyorsanız en basit yöntem Firebase konsolunu ziyaret edip adım adım açıklamalı formu takip ederek manuel olarak bir bağlantı oluşturmaktır.

iOS Builder API'yi kullanma

Parametrelerden Dinamik Bağlantılar oluşturmak veya uzun bir Dynamic Link'i kısaltmak için iOS Builder API'yi kullanabilirsiniz.

Dinamik Bağlantı oluşturmak için yeni bir DynamicLinkComponents nesnesi oluşturun ve nesnenin karşılık gelen özelliklerini ayarlayarak Dynamic Link parametrelerini belirtin. Ardından, nesnenin url özelliğinden uzun bağlantıyı alın veya shorten() yöntemini çağırarak kısa bağlantıyı alın.

Aşağıdaki minimum örnek, iOS'te iOS uygulamanız ve Android'de com.example.android uygulamasıyla açılan https://www.example.com/my-page için uzun bir Dinamik Bağlantı oluşturur:

Swift

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde kullanılamaz.
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

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde kullanılamaz.
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);

Kısa bir Dinamik Bağlantı oluşturmak için aynı şekilde bir DynamicLinkComponents oluşturun ve shorten() yöntemini çağırın.

Kısa bir bağlantı oluşturmak için ağ çağrısı gerekir. Bu nedenle shorten(), bağlantıyı doğrudan döndürmek yerine, istek tamamlandığında çağrılan bir tamamlama işleyiciyi kabul eder. Örnek:

Swift

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde kullanılamaz.
linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objective-C

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde kullanılamaz.
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL,
                                     NSArray<NSString *> * _Nullable warnings,
                                     NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];
      

Varsayılan olarak, kısa Dynamic Links'in oluşturulmasında 17 karakterlik bağlantı sonekleriyle oluşturulur. Bu soneklerin geçerli bir Dinamik Bağlantı'yı tahmin etmesi son derece düşük bir ihtimaldir. Kullanım alanınızda, bir kişinin kısa bağlantıyı başarılı bir şekilde tahmin etmesinin bir zararı yoksa benzersiz olmaları için gereken süre boyunca sonekler oluşturmayı tercih edebilirsiniz. Bunu dynamicLinkComponentsOptions özelliğini ayarlayarak yapabilirsiniz:

Swift

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde kullanılamaz.
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

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde kullanılamaz.
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);
}];
      

Desteklenen parametrelerden herhangi biriyle Dinamik Bağlantılar oluşturmak için Dynamic Link Builder API'yi kullanabilirsiniz. Ayrıntılar için API referansını inceleyin.

Aşağıdaki örnekte, birkaç ortak parametrenin ayarlandığı bir Dinamik Bağlantı oluşturulmaktadır:

Swift

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde kullanılamaz.
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

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde kullanılamaz.
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);

Dinamik Bağlantı parametrelerini aşağıdaki nesne ve özelliklerle ayarlayabilirsiniz:

DynamicLinkBileşenleri
bağlantı

Uygulamanızın açacağı bağlantı. Uygulamanızın işleyebileceği bir URL (genellikle uygulama içeriği veya yükü) belirtin. Bu URL, uygulamaya özel mantığı (kullanıcıya kuponla kredi verme veya karşılama ekranı gösterme gibi) başlatacaktır. Bu bağlantı iyi biçimlendirilmiş bir URL olmalı, doğru şekilde URL kodlamalı olmalı, HTTP ya da HTTPS kullanmalı ve başka bir Dinamik Bağlantı olmamalıdır.

domainURIÖneki Firebase konsolunda bulabileceğiniz Dinamik Bağlantı URL'si ön ekiniz. Dinamik Bağlantı alan adı, aşağıdaki örneklere benzer:
https://example.com/link
https://example.page.link
Dinamik BağlantıAndroidParametreleri
yedekURL Uygulama yüklenmediğinde açılacak bağlantı. Uygulama yüklü değilken Play Store'dan uygulamanızı yüklemek dışında bir işlem yapmak (ör. içeriğin mobil web sürümünü açmak veya uygulamanızın tanıtım sayfasını görüntülemek) için bunu belirtin.
minimumSürüm Uygulamanızın bağlantıyı açabilen minimum sürümünün versionCode değeri. Yüklü uygulama daha eski bir sürümse kullanıcı, uygulamayı yeni sürüme geçirmesi için Play Store'a yönlendirilir.
DynamicLinkIOSParameters
uygulamaMağaza Kimliği Uygulamanızın App Store kimliği (uygulama yüklü olmadığında kullanıcıları App Store'a göndermek için kullanılır)
yedekURL Uygulama yüklenmediğinde açılacak bağlantı. Uygulama yüklü değilken uygulamanızı App Store'dan yüklemek dışında bir işlem yapmak (ör. içeriğin mobil web sürümünü açmak veya uygulamanızın tanıtım sayfasını görüntülemek) için bunu belirtin.
özelŞema Uygulamanızın özel URL şeması (uygulamanızın paket kimliğinden farklı bir şekilde tanımlanırsa)
iPadFallbackURL'si Uygulama yüklü olmadığında iPad'lerde açılacak bağlantı. Uygulama yüklü değilken uygulamanızı App Store'dan yüklemek dışında bir işlem yapmak (ör. içeriğin web sürümünü açmak veya uygulamanızın tanıtım sayfasını görüntülemek) için bunu belirtin.
iPadPaket Kimliği Bağlantıyı açmak için iPad'lerde kullanılacak iOS uygulamasının paket kimliği. Uygulama, Firebase konsolunun Genel bakış sayfasından projenize bağlanmalıdır.
minimumUygulamaSürümü Uygulamanızın bağlantıyı açabilen minimum sürümünün sürüm numarası. Bu işaret, uygulamanıza açıldığında aktarılır ve uygulamanızın bununla ne yapacağına karar vermesi gerekir.
DynamicLinkGezinmeInfoParameters
forcedRedirectEnabled Politika "1" olarak ayarlanırsa Dinamik Bağlantı açıldığında uygulama önizleme sayfasını atlayıp bunun yerine uygulamaya veya mağazaya yönlendirin. Uygulama önizleme sayfası (varsayılan olarak etkindir), kullanıcıları uygulamalarda Dinamik Bağlantıları açtıklarında en uygun hedefe daha güvenilir bir şekilde gönderebilir. Ancak, Dinamik Bağlantı'nın yalnızca Dinamik Bağlantıları bu sayfa olmadan güvenilir bir şekilde açabilen uygulamalarda açılmasını bekliyorsanız bu parametreyle devre dışı bırakabilirsiniz. Bu parametre, Dinamik Bağlantı'nın yalnızca iOS'teki davranışını etkiler.
DynamicLinkSocialMetaTagParameters
ünvan Dinamik Bağlantı, bir sosyal medya yayınında paylaşıldığında kullanılacak başlık.
açıklamaMetni Dinamik Bağlantı, bir sosyal medya yayınında paylaşıldığında kullanılacak açıklama.
resimURL'si Bu bağlantıyla ilgili bir resmin URL'si. Resim boyutu en az 300x200 piksel, en fazla 300 KB boyutunda olmalıdır.
DynamicLinkGoogleAnalyticsParameters
kaynak
aracı
kampanya
terim
içerik
Google Play Analytics parametreleri. Bu parametreler (utm_source, utm_medium, utm_campaign, utm_term, utm_content) Play Store'a aktarılır ve bağlantı yüküne eklenir.
DynamicLinkItunesConnectAnalyticsParameters
providerToken
affiliateToken
campaignToken
iTunes Connect analiz parametreleri. Bu parametreler (pt, at, ct) App Store'a iletilir.

Uzun bir Dinamik Bağlantı'yı kısaltmak için, kısa son eki olan bir bağlantı oluşturmak isterseniz uzun Dinamik Bağlantı'yı bir DynamicLinkComponentsOptions nesnesiyle birlikte shortenURL(url:options:) öğesine iletin:

Swift

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde kullanılamaz.
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

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde kullanılamaz.
[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);
}];

Varsayılan olarak Dynamic Links, uygulamanızı açmak için gereken URL şeması olarak uygulamanızın paket tanımlayıcısını kullanır. Uygulamanızı daha basit hale getirmek için bu varsayılan değeri kullanmanızı öneririz.

Bununla birlikte, halihazırda başka amaçlar için özel URL şemasını kullanan geliştiriciler, aynı özel URL şemasını Dynamic Links için de kullanmak isteyebilirler. Bu durumdaysanız aşağıdaki adımları uygulayarak Firebase Dynamic Links'iniz için farklı bir URL şeması belirtebilirsiniz:

  1. Uygulamanızı kurarken, paylaşılan FirebaseApp örneğinizi yapılandırmadan önce uygulamanız tarafından kullanılacak varsayılan URL şemasını belirttiğinizden emin olun:

    Swift

    Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde kullanılamaz.
    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

    Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde kullanılamaz.
    - (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. Her Dinamik Bağlantı oluşturduğunuzda, uygulamanızın kullandığı özel URL şemasını belirtmeniz gerekir. Bu işlemi Firebase konsolunda, Builder API'de customScheme parametresini ayarlayarak, URL'nizde ius parametresini belirterek veya iosCustomScheme parametresini REST API'ye göndererek yapabilirsiniz.

Sonraki adımlar

Artık Dynamic Links'i oluşturduğunuza göre uygulamanızı Dynamic Links'i alacak ve kullanıcı bunları açtıktan sonra kullanıcıları uygulamanızda doğru yere yönlendirecek şekilde ayarlamanız gerekir.

Uygulamanızda Dynamic Links almak için iOS, Android, C++ ve Unity belgelerine bakın.