İOS'ta Dinamik Bağlantılar Oluşturun

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

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

Önkoş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 Paket Yöneticisini kullanın.

  1. Xcode'da uygulama projeniz açıkken Dosya > Paket Ekle'ye gidin.
  2. İstendiğinde Firebase Apple platformları SDK deposunu ekleyin:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Dinamik Bağlantılar kitaplığını seçin.
  5. -ObjC bayrağını hedefinizin derleme ayarlarının Diğer Bağlayıcı Bayrakları bölümüne ekleyin.
  6. Dinamik Bağlantılarla en iyi deneyimi 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 koleksiyonu olmayan veya IDFA koleksiyonu olan kütüphaneyi seçebilirsiniz.
  7. Bitirdiğinizde Xcode, bağımlılıklarınızı arka planda otomatik olarak çözmeye ve indirmeye başlayacaktır.

Şimdi bazı yapılandırma adımlarını gerçekleştirin:

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

    Zaten bir Dinamik Bağlantılar URI önekiniz varsa bunu not edin. Programlı olarak Dinamik Bağlantılar oluşturduğunuzda bunu sağlamanız gerekir.

  3. Önerilen : Derin bağlantılarınızda ve yedek bağlantılarınızda izin verilen URL modellerini belirtin. Bunu yaparak, yetkisiz tarafların alanınızdan kontrol etmediğiniz sitelere yönlendirme yapan Dinamik Bağlantılar oluşturmasını önlersiniz. Bkz. Belirli URL kalıplarına izin verme .
  4. Uygulamanızın ayarlarında uygulamanızın App Store Kimliğinin ve Uygulama Kimliği önekinizin belirtildiğinden emin olun. Uygulamanızın ayarlarını görüntülemek ve düzenlemek için Firebase projenizin Ayarlar sayfasına gidin ve iOS uygulamanızı seçin.

    Dinamik Bağlantılar alanınızda barındırılan apple-app-site-association dosyasını açarak Firebase projenizin iOS uygulamanızda Dinamik Bağlantıları kullanacak şekilde düzgün şekilde yapılandırıldığını doğrulayın. Firebase apple-app-site-association dosyasını alan adının kökünden ve .well-known alt dizininden sunacaktır. Ö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 bir referans içerir. Örneğin:

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

    details özelliği boşsa Uygulama Kimliği önekinizi belirttiğinizi bir kez daha 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 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
    // ...
          

    Süratli

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Amaç-C

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

    SwiftUI

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Süratli

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Amaç-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. SwiftUI kullanıyorsanız, bir uygulama temsilcisi oluşturmalı ve bunu UIApplicationDelegateAdaptor veya NSApplicationDelegateAdaptor aracılığıyla App yapınıza eklemelisiniz. Ayrıca uygulama temsilcisinin swizzling özelliğini de devre dışı bırakmalısınız. Daha fazla bilgi için SwiftUI talimatlarına bakın.

    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 şeyde kullanılabilecek bir bağlantıyı kolayca oluşturması için tek bir Dinamik Bağlantı oluşturmak istiyorsanız, en basit yol Firebase konsolunu ziyaret edip bir tane oluşturmak olacaktır. adım adım formu manuel olarak takip ederek.

iOS Builder API'sini kullanın

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

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

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

Süratli

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
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)")

Amaç-C

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
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 ardından shorten() çağırın.

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

Süratli

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

Amaç-C

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
[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 Dinamik Bağlantılar, birisinin geçerli bir Dinamik Bağlantıyı tahmin etmesini son derece düşük bir ihtimal haline getiren 17 karakterlik bağlantı sonekleriyle oluşturulur. Kullanım durumunuz açısından, birisinin kısa bir bağlantıyı başarılı bir şekilde tahmin etmesinin bir zararı yoksa, yalnızca benzersiz olması gereken uzunlukta son ekler oluşturmayı tercih edebilirsiniz; bunu, dynamicLinkComponentsOptions özelliğini ayarlayarak yapabilirsiniz:

Süratli

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
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)")
}

Amaç-C

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
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 Dinamik Bağlantı Oluşturucu API'sini kullanabilirsiniz. Ayrıntılar için API referansına bakın.

Aşağıdaki örnek, birkaç ortak parametrenin ayarlandığı bir Dinamik Bağlantı oluşturur:

Süratli

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
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)")

Amaç-C

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
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 nesneler ve özelliklerle ayarlayabilirsiniz:

DynamicLink Bileşenleri
bağlantı

Uygulamanızın açılacağı bağlantı. Uygulamanızın işleyebileceği, uygulamaya özel mantığı (kullanıcıya bir kuponla kredi vermek veya bir karşılama ekranı görüntülemek gibi) başlatan, genellikle uygulamanın içeriği veya yükü gibi bir URL belirtin. Bu bağlantı iyi biçimlendirilmiş bir URL olmalı, URL'si düzgün şekilde kodlanmış olmalı, HTTP veya HTTPS kullanmalı ve başka bir Dinamik Bağlantı olamaz.

etki alanıURIPönek Firebase konsolunda bulabileceğiniz Dinamik Bağlantı URL'si ön ekiniz. Dinamik Bağlantı alanı aşağıdaki örneklere benzer:
https://example.com/link
https://example.page.link
DynamicLinkAndroidParametreler
yedekURL Uygulama yüklenmediğinde açılacak bağlantı. Uygulama yüklenmediğinde Play Store'dan uygulamanızı yüklemek dışında bir şey yapmak (örneğin, içeriğin mobil web sürümünü açmak veya uygulamanız için bir tanıtım sayfası görüntülemek) için bunu belirtin.
minimum Sürüm Uygulamanızın bağlantıyı açabilecek minimum sürümünün versionCode . Yüklenen uygulama daha eski bir sürümse kullanıcı, uygulamayı yükseltmesi için Play Store'a yönlendirilir.
DynamicLinkIOSParametreleri
uygulama mağazası kimliği Uygulamanız yüklü olmadığında kullanıcıları App Store'a göndermek için kullanılan uygulamanızın App Store Kimliği
yedekURL Uygulama yüklenmediğinde açılacak bağlantı. Uygulama yüklenmediğinde App Store'dan uygulamanızı yüklemek dışında bir şey yapmak için (örneğin, içeriğin mobil web sürümünü açmak veya uygulamanız için bir tanıtım sayfası görüntülemek) bunu belirtin.
özel şema Uygulamanızın paket kimliğinden farklı bir şey olarak tanımlanmışsa, uygulamanızın özel URL şeması
iPadYedek URL'si Uygulama yüklü olmadığında iPad'lerde açılacak bağlantı. Uygulama yüklenmediğinde App Store'dan uygulamanızı yüklemek dışında, içeriğin web sürümünü açmak veya uygulamanız için bir tanıtım sayfası görüntülemek gibi başka bir işlem yapmak için bunu belirtin.
iPadBundleID Bağlantıyı açmak için iPad'lerde kullanılacak iOS uygulamasının paket kimliği. Uygulamanın, Firebase konsolunun Genel Bakış sayfasından projenize bağlanması gerekir.
minimumUygulama Sürümü Uygulamanızın bağlantıyı açabilecek minimum sürümünün sürüm numarası . Bu bayrak, açıldığında uygulamanıza iletilir ve uygulamanızın bununla ne yapacağına karar vermesi gerekir.
DynamicLinkNavigationInfoParametreleri
zorunluYönlendirme Etkinleştirildi '1' olarak ayarlanırsa Dinamik Bağlantı açıldığında uygulama önizleme sayfasını atlayın ve bunun yerine uygulamaya veya mağazaya yönlendirin. Uygulama önizleme sayfası (varsayılan olarak etkindir), uygulamalarda Dinamik Bağlantıları açtıklarında kullanıcıları en uygun hedefe daha güvenilir şekilde gönderebilir; ancak bu sayfa olmadan yalnızca Dinamik Bağlantıları güvenilir bir şekilde açabilen uygulamalarda Dinamik Bağlantının açılmasını bekliyorsanız bu parametreyle devre dışı bırakabilirsiniz. Bu parametre Dinamik Bağlantının davranışını yalnızca iOS'ta etkileyecektir.
DynamicLinkSocialMetaTagParametreler
başlık Dinamik Bağlantı bir sosyal gönderide paylaşıldığında kullanılacak başlık.
açıklamaMetin Dinamik Bağlantı bir sosyal gönderide paylaşıldığında kullanılacak açıklama.
resim URL'si Bu bağlantıyla ilgili bir görselin URL'si. Resim en az 300x200 piksel ve 300 KB'tan küçük olmalıdır.
DynamicLinkGoogleAnalyticsParametreler
kaynak
orta
kampanya
terim
içerik
Google Play analiz parametreleri. Bu parametreler ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) Play Store'a aktarıldığı gibi bağlantı yüküne de eklenir.
DynamicLinkItunesConnectAnalyticsParametreler
sağlayıcıToken
affiliateToken
kampanyaToken
iTunes Connect analiz parametreleri. Bu parametreler ( pt , at , ct ) App Store'a aktarılır.

Uzun bir Dinamik Bağlantıyı kısaltmak için, kısa bir sonek içeren bir bağlantı oluşturmak istiyorsanız uzun Dinamik Bağlantıyı bir DynamicLinkComponentsOptions nesnesiyle birlikte shortenURL(url:options:) iletin:

Süratli

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
DynamicLinkComponents.shortenURL(url: longLinkUrl, options: nil) { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Amaç-C

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
[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 Dinamik Bağlantılar, uygulamanızı açmak için gereken URL şeması olarak uygulamanızın paket tanımlayıcısını kullanır. Uygulamanızı basit tutmak için bu varsayılan değerde kalmanızı öneririz.

Ancak, halihazırda başka amaçlar için özel bir URL şeması kullanan geliştiriciler, aynı özel URL şemasını Dinamik Bağlantıları için de kullanmak isteyebilirler. Bu durumdaysanız aşağıdaki adımları izleyerek Firebase Dinamik Bağlantılarınız için farklı bir URL şeması belirleyebilirsiniz:

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

    Süratli

    Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
    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
    }
    

    Amaç-C

    Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
    - (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. Herhangi bir Dinamik Bağlantı oluşturduğunuzda, uygulamanızın kullandığı özel URL şemasını belirtmeniz gerekecektir. Bunu, Firebase konsolu aracılığıyla, Builder API'sinde customScheme ayarlayarak, URL'nizde ius parametresini belirterek veya iosCustomScheme parametresini REST API'ye göndererek yapabilirsiniz.

Sonraki adımlar

Artık Dinamik Bağlantılar oluşturduğunuza göre, uygulamanızı Dinamik Bağlantıları alacak ve kullanıcı bunları açtıktan sonra kullanıcıları uygulamanızda doğru yere gönderecek şekilde ayarlamanız gerekir.

Uygulamanızda Dinamik Bağlantılar almak için iOS , Android , C++ ve Unity belgelerine bakın.