了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

iOS'ta Dinamik Bağlantılar Oluşturun

Firebase Dynamic Links Builder API ile 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ı kurmak ve yönetmek için Swift Paket Yöneticisi'ni kullanın.

  1. Xcode'da, uygulama projeniz açıkken File > Add Packages seçeneğine gidin.
  2. İstendiğinde, Firebase Apple platformları SDK deposunu ekleyin:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Dinamik Bağlantılar kitaplığını seçin.
  5. Dynamic Links ile optimum bir deneyim için Firebase projenizde Google Analytics'i etkinleştirmenizi ve Google Analytics için Firebase SDK'yı uygulamanıza eklemenizi öneririz. Kütüphaneyi IDFA koleksiyonu olmadan veya IDFA koleksiyonu ile seçebilirsiniz.
  6. Bittiğinde, Xcode otomatik olarak arka planda bağımlılıklarınızı çö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 ön eki ayarlamadıysanız, istendiğinde bunu yapın.

    Halihazırda bir Dinamik Bağlantılar URI önekiniz varsa, not alın. 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 kalıplarını belirtin. Bunu yaparak, yetkisiz tarafların alanınızdan sizin kontrolünüzde olmayan sitelere yönlendirme yapan Dinamik Bağlantılar oluşturmasını engellersiniz. Bkz. Belirli URL kalıplarına izin verme .
  4. Uygulamanızın App Store ID'sinin ve App ID ö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 gidin ve 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 Dinamik Bağlantıları kullanacak şekilde doğru şekilde yapılandırıldığını onaylayın. Firebase apple-app-site-association dosyasına etki alanının kökünden ve .well-known alt dizininden hizmet verecektir. Ö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 bir 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ğinizi tekrar kontrol edin. Uygulama Kimliği ön ekinizin Ekip Kimliğinizle aynı olmayabileceğini unutmayın.

Firebase'i uygulamanıza ekleyin

  1. UIApplicationDelegate uygulamanıza FirebaseCore modülünü ve uygulama temsilcinizin kullandığı diğer Firebase modüllerini içe 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 bir FirebaseApp paylaşılan örneği 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. Uygulama temsilcisi swizzling'i 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 kullanın

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 etmek ve bir tane oluşturmak olacaktır. adım adım formu manuel olarak takip edin.

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 karşılık gelen ö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ı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:

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ğ araması gerektirir, bu nedenle, bağlantıyı doğrudan döndürmek yerine, shorten() , 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, birinin geçerli bir Dinamik Bağlantıyı tahmin etmesini son derece düşük bir ihtimal haline getiren 17 karakterlik bağlantı son ekleriyle oluşturulur. Kullanım durumunuz için, birisinin bir kısa bağlantıyı başarılı bir şekilde tahmin etmesinde bir sakınca yoksa, dynamicLinkComponentsOptions özelliğini ayarlayarak yapabileceğiniz, yalnızca benzersiz olmak için gerekli olduğu sürece son ekler oluşturmayı tercih edebilirsiniz:

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 parametre seti ile 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:

Dinamik Bağlantı Bileşenleri
bağlantı

Uygulamanızın açacağı bağlantı. Uygulamanızın işleyebileceği, genellikle uygulamanın içeriği veya yükü olan ve uygulamaya özel mantığı başlatan (kullanıcıyı bir kuponla kredilendirme veya bir karşılama ekranı görüntüleme gibi) bir URL belirtin. Bu bağlantı, iyi biçimlendirilmiş bir URL olmalı, uygun şekilde URL kodlu olmalı, HTTP veya HTTPS kullanmalı ve başka bir Dinamik Bağlantı olamaz.

domainURIPrefix Firebase konsolunda bulabileceğiniz Dinamik Bağlantı URL'si ön ekiniz. Dinamik Bağlantı etki alanı aşağıdaki örneklere benzer:
https://example.com/link
https://example.page.link
DynamicLinkAndroidParametreleri
yedek URL Uygulama yüklenmediğinde açılacak bağlantı. İçeriğin mobil web sürümünü açmak veya uygulamanız için bir tanıtım sayfası görüntülemek gibi, uygulama yüklü değilken Play Store'dan uygulamanızı yüklemek dışında bir şey yapmak için bunu belirtin.
minimum Sürüm Uygulamanızın bağlantıyı açabilen minimum sürümünün versionCode . Yüklenen uygulama daha eski bir sürümse kullanıcı, uygulamayı yükseltmek için Play Store'a yönlendirilir.
DynamicLinkIOSParametreleri
uygulama mağazası kimliği Uygulamanızın, uygulama yüklü değilken kullanıcıları App Store'a göndermek için kullanılan App Store Kimliği
yedek URL Uygulama yüklenmediğinde açılacak bağlantı. İçeriğin mobil web sürümünü açmak veya uygulamanız için bir promosyon sayfası görüntülemek gibi, uygulama yüklü değilken App Store'dan uygulamanızı yüklemek dışında bir şey yapmak için 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ü değilken iPad'lerde açılacak bağlantı. İçeriğin web sürümünü açmak veya uygulamanız için bir tanıtım sayfası görüntülemek gibi, uygulama yüklü değilken uygulamanızı App Store'dan yüklemek dışında bir şey yapmak için bunu belirtin.
iPad Paket 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.
minimumUygulama Sürümü Uygulamanızın bağlantıyı açabilen minimum sürümünün sürüm numarası . Bu bayrak, açıldığında uygulamanıza iletilir ve uygulamanızın onunla ne yapacağına karar vermesi gerekir.
DynamicLinkNavigationInfoParametreleri
zorunlu Yönlendirme Etkin "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 bir şekilde gönderebilir; ancak bir Dinamik Bağlantının yalnızca bu sayfa olmadan güvenilir bir şekilde Dinamik Bağlantıları açabilen uygulamalarda açılmasını bekliyorsanız, bu parametre ile devre dışı bırakabilirsiniz. Bu parametre, Dinamik Bağlantının davranışını yalnızca iOS'ta etkiler.
DynamicLinkSocialMetaTagParametreleri
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 resmin URL'si. Resim en az 300x200 piksel ve 300 KB'den küçük olmalıdır.
DynamicLinkGoogleAnalyticsParametreleri
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ılır ve bağlantı yüküne eklenir.
DynamicLinkItunesConnectAnalyticsParametreler
sağlayıcı Simgesi
bağlı kuruluş belirteci
kampanya Simgesi
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 bir soneke sahip 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 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ı 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, Builder API'sinde customScheme ayarlayarak, URL'nizde ius parametresini belirterek veya iosCustomScheme parametresini REST API'ye göndererek Firebase konsolu aracılığıyla yapabilirsiniz.

Sonraki adımlar

Artık Dinamik Bağlantılar oluşturduğunuza göre, uygulamanızı Dinamik Bağlantılar alacak ve bir 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.