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

Firebase Dynamic Links Builder API ile kısa veya uzun Dynamic Links oluşturabilirsiniz. Bu API, uzun bir Dynamic Link veya Dynamic Link parametrelerini içeren bir nesneyi kabul eder ve aşağıdaki örneklerdeki gibi URL'ler 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üklemek ve yönetmek için Swift Package Manager'ı kullanın.

Firebase SDK'larını Apple projenize eklemenin farklı yollarını öğrenmek için
  1. Xcode'da uygulama projeniz 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. Hedefinizin derleme ayarlarının Other Linker Flags (Diğer Bağlayıcı İşaretleri) bölümüne -ObjC işaretini ekleyin.
  6. Dynamic Links ile en iyi deneyimi yaşamak için Firebase projenizde Google Analytics etkinleştirmenizi ve Google Analytics için Firebase SDK'sını uygulamanıza eklemenizi öneririz. IDFA toplama özelliği olan veya olmayan kitaplığı seçebilirsiniz. Firebase SDK'sı için Google Analytics'daki en son modül organizasyonu ile ilgili SSS sayfamıza göz atın.
  7. İşlem tamamlandığında Xcode, arka planda bağımlılıklarınızı otomatik olarak çözmeye ve indirmeye başlar.

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

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

    Zaten bir Dynamic Links URI ön ekiniz varsa bunu not edin. Dynamic Links öğesini programatik olarak oluştururken bu değeri 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ünüz dışındaki sitelere yönlendirme yapan Dynamic Links oluşturmasını engellersiniz. Belirli URL kalıplarına izin verme başlıklı makaleyi inceleyin.
  4. Uygulamanızın uygulama mağazası kimliğinin ve uygulama kimliği önekinizin 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 kullanacak şekilde doğru yapılandırıldığını onaylayın. Firebase, apple-app-site-association dosyasını alan adının kökünden ve .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 ön ekine ve paket kimliğine referans içerir. Örneğin:

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

    details özelliği boşsa uygulama kimliği ön ekinizi belirttiğinizden emin olun. Uygulama kimliği önekinizin, ekip kimliğinizle aynı olmayabileceğini unutmayın.

Firebase'i uygulamanıza ekleyin

  1. FirebaseCore modülünü UIApplicationDelegate dosyanıza ve uygulama temsilcinizin kullandığı diğer Firebase modüllerine aktarın. Örneğin, Cloud Firestore ve Authentication kullanmak için:

    SwiftUI

    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 temsilcinizin application(_:didFinishLaunchingWithOptions:) yönteminde paylaşılan bir FirebaseApp örneği yapılandırın:

    SwiftUI

    // 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 bunu UIApplicationDelegateAdaptor veya NSApplicationDelegateAdaptor aracılığıyla App yapınıza eklemeniz gerekir. Ayrıca, uygulama temsilcisi swizzling'ini de devre dışı bırakmanız gerekir. Daha fazla bilgi için SwiftUI talimatlarını inceleyin.

    SwiftUI

    @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 gönderisi gibi bir yerde kullanılabilecek bir bağlantıyı kolayca oluşturması için tek bir Dynamic Link oluşturmak istiyorsanız en basit yöntem, Firebase konsolunu ziyaret etmek ve adım adım formunu takip ederek manuel olarak bir tane oluşturmaktır.

iOS Builder API'yi kullanma

Parametrelerden Dynamic Links oluşturmak veya uzun bir Dynamic Link URL'sini kısaltmak için iOS Builder API'yi kullanabilirsiniz.

Dynamic Link oluşturmak için yeni bir DynamicLinkComponents nesnesi oluşturun ve nesnenin ilgili ö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 minimal örnekte, iOS'te iOS uygulamanızla ve Android'de com.example.android uygulamasıyla açılan, https://www.example.com/my-page için uzun bir Dynamic Link 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.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 Dynamic Link oluşturmak için aynı şekilde bir DynamicLinkComponents oluşturun ve ardından shorten() yöntemini çağırın.

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

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, 17 karakterlik bağlantı son ekleriyle oluşturulur. Bu sayede, birinin geçerli bir Dynamic Link tahmin etmesi son derece düşük bir ihtimaldir. Kullanım alanınızda, birinin kısa bağlantıyı doğru tahmin etmesinin bir sakıncası yoksa yalnızca benzersiz olacak kadar uzunlukta son ekler oluşturmayı tercih edebilirsiniz. Bunu yapmak için dynamicLinkComponentsOptions özelliğini ayarlayabilirsiniz:

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 birini kullanarak Dynamic Links oluşturmak için Dynamic Link Builder API'yi kullanabilirsiniz. Ayrıntılar için API referansına bakın.

Aşağıdaki örnekte, birkaç yaygın parametre kümesiyle bir Dynamic Link 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);

Dynamic Link parametrelerini aşağıdaki nesneler ve özelliklerle ayarlayabilirsiniz:

DynamicLinkComponents
bağlantı

Uygulamanızın açacağı bağlantı. Uygulamanızın işleyebileceği bir URL belirtin. Bu URL genellikle uygulamaya özgü mantığı (ör. kullanıcıya kupon verme veya karşılama ekranı gösterme) başlatan uygulama içeriği veya yüküdür. Bu bağlantı, düzgün biçimlendirilmiş bir URL olmalı, doğru şekilde URL kodlamalı olmalı, HTTP veya HTTPS kullanmalı ve başka bir Dynamic Link olmamalıdır.

domainURIPrefix Firebase konsolunda bulabileceğiniz Dynamic Link URL önekiniz. Dynamic Link alan adı aşağıdaki örneklere benzer:
https://example.com/link
https://example.page.link
DynamicLinkAndroidParameters
fallbackURL Uygulama yüklü olmadığında açılacak bağlantı. Uygulama yüklü olmadığında, uygulamanızı Play 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 için bir tanıtım sayfası göstermek) için bunu belirtin.
minimumVersion Bağlantıyı açabilen uygulamanızın minimum sürümünün versionCode. Yüklü uygulama eski bir sürümse kullanıcı, uygulamayı yeni sürüme geçirmek için Play Store'a yönlendirilir.
DynamicLinkIOSParameters
appStoreID Uygulamanız yüklü olmadığında kullanıcıları uygulama mağazasına yönlendirmek için kullanılan uygulama mağazası kimliği
fallbackURL Uygulama yüklü olmadığında açılacak bağlantı. Uygulama yüklü olmadığında, uygulamanızı uygulama mağazasından yüklemek dışında bir işlem yapmak (ör. içeriğin mobil web sürümünü açmak veya uygulamanız için bir tanıtım sayfası göstermek) için bunu belirtin.
customScheme Uygulamanızın paket kimliğinden farklı bir şekilde tanımlanmışsa uygulamanızın özel URL şeması
iPadFallbackURL Uygulama yüklü olmadığında iPad'lerde açılacak bağlantı. Uygulama yüklü olmadığında, uygulamanızı uygulama mağazasından 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östermek) için bunu belirtin.
iPadBundleID Bağlantıyı açmak için iPad'lerde kullanılacak iOS uygulamasının paket kimliği. Uygulama, Firebase Console'un Genel Bakış sayfasından projenize bağlanmalıdır.
minimumAppVersion Uygulamanızın bağlantıyı açabilen minimum sürümünün sürüm numarası. Bu işaret, açıldığında uygulamanıza iletilir ve uygulamanız bu işaretle ne yapacağına karar vermelidir.
DynamicLinkNavigationInfoParameters
forcedRedirectEnabled "1" olarak ayarlanırsa Dynamic Link açıldığında uygulama önizleme sayfası atlanır ve uygulama veya mağazaya yönlendirilir. Uygulama önizleme sayfası (varsayılan olarak etkindir), kullanıcılar uygulamalarda Dynamic Links açtığında onları en uygun hedefe daha güvenilir bir şekilde gönderebilir. Ancak bir Dynamic Link bağlantısının yalnızca bu sayfa olmadan Dynamic Links bağlantısını güvenilir bir şekilde açabilen uygulamalarda açılmasını bekliyorsanız bu parametreyle sayfayı devre dışı bırakabilirsiniz. Bu parametre, Dynamic Link davranışını yalnızca iOS'te etkiler.
DynamicLinkSocialMetaTagParameters
ünvan Dynamic Link bir sosyal medya gönderisinde paylaşıldığında kullanılacak başlık.
descriptionText Dynamic Link bir sosyal medya gönderisinde paylaşıldığında kullanılacak açıklama.
imageURL Bu bağlantıyla ilgili bir resmin URL'si. Resim en az 300x200 piksel ve 300 KB'tan küçük olmalıdır.
DynamicLinkGoogleAnalyticsParameters
source
medium
campaign
term
content
Google Play analiz parametreleri. Bu parametreler (utm_source, utm_medium, utm_campaign, utm_term, utm_content) Play Store'a iletilir ve bağlantı yüküne eklenir.
DynamicLinkItunesConnectAnalyticsParameters
providerToken
affiliateToken
campaignToken
iTunes Connect analiz parametreleri. Bu parametreler (pt, at, ct) uygulama mağazasına iletilir.

Uzun bir Dynamic Link kısaltmak için uzun Dynamic Link, shortenURL(url:options:) öğesine iletin. Kısa bir son ek içeren bağlantı oluşturmak istiyorsanız DynamicLinkComponentsOptions nesnesiyle birlikte 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);
}];

Dynamic Links, varsayılan olarak uygulamanızı açmak için gereken URL şeması olarak uygulamanızın paket kimliğini kullanır. Uygulamanızı basit tutmak için bu varsayılan değeri kullanmaya devam etmenizi öneririz.

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

  1. Uygulamanızı ayarlarken FirebaseApp paylaşılan ö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. Dynamic Link oluşturduğunuzda uygulamanızın kullandığı özel URL şemasını belirtmeniz gerekir. Bunu Firebase konsolu üzerinden, Builder API'de customScheme değerini ayarlayarak, URL'nizde ius parametresini belirterek veya REST API'ye iosCustomScheme parametresini göndererek yapabilirsiniz.

Sonraki adımlar

Dynamic Links oluşturduğunuza göre, uygulamanızı Dynamic Links alacak ve kullanıcılar bunları açtıktan sonra 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.