Oluşturduğunuz Firebase Dynamic Links değerini almak için Dynamic Links SDK'sını uygulamanıza eklemeniz ve uygulamanız yüklendiğinde handleUniversalLink: ve dynamicLinkFromCustomSchemeURL: yöntemlerini çağırarak Dynamic Link içinde iletilen verileri almanız gerekir.
Ön koşullar
Başlamadan önce Firebase'i iOS projenize eklediğinizden emin olun.
Firebase'i ve Dynamic Links SDK'sını kurma
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- Xcode'da uygulama projeniz açıkken File > Add Packages'a (Dosya > Paket Ekle) gidin.
- İstendiğinde Firebase Apple platformları SDK deposunu ekleyin:
- Dynamic Links kitaplığını seçin.
- Hedefinizin derleme ayarlarının Other Linker Flags (Diğer Bağlayıcı İşaretleri) bölümüne
-ObjCişaretini ekleyin. - 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.
- İşlem tamamlandığında Xcode, arka planda bağımlılıklarınızı otomatik olarak çözmeye ve indirmeye başlar.
https://github.com/firebase/firebase-ios-sdk.git
Şimdi bazı yapılandırma adımlarını uygulayın:
- Firebase konsolunda Dynamic Links bölümünü açın. İstenirse hizmet şartlarını kabul edin.
-
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.
Firebase projenizin iOS uygulamanızda Dynamic Links kullanacak şekilde doğru yapılandırıldığını aşağıdaki URL'yi açarak onaylayabilirsiniz:
https://your_dynamic_links_domain/apple-app-site-association
Uygulamanız bağlıysa
apple-app-site-associationdosyası, 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":["NOT /_/*","/*"]}]}}detailsalanı boşsa uygulama kimliği ön ekinizi belirttiğinizden emin olun. Uygulama kimliği önekinizin, ekip kimliğinizle aynı olmayabileceğini unutmayın. -
İsteğe bağlı: Dynamic Links SDK'sının iOS panosunu kullanmasını devre dışı bırakın.
Dynamic Links SDK'sı, yükleme sonrası derin bağlantıların güvenilirliğini artırmak için varsayılan olarak panoyu kullanır. Dynamic Links, panoyu kullanarak, bir kullanıcı Dynamic Link açtığında ancak önce uygulamanızı yüklemesi gerektiğinde, yükleme işleminden sonra uygulamayı ilk kez açarken doğrudan orijinal bağlantılı içeriğe gidebilmesini sağlayabilir.
Bu yöntemin dezavantajı, panonun kullanılmasının iOS 14 ve sonraki sürümlerde bildirim tetiklemesidir. Bu nedenle, kullanıcılar uygulamanızı ilk kez açtığında, panoda bir URL varsa uygulamanızın panoya eriştiğini belirten bir bildirim görürler. Bu durum kafa karışıklığına neden olabilir.
Bu davranışı devre dışı bırakmak için Xcode projenizin
Info.plistdosyasını düzenleyin veFirebaseDeepLinkPasteboardRetrievalEnabledanahtarınıNOolarak ayarlayın.
Uygulamanızda Dynamic Links sayfasını açın.
- Uygulamanızın Xcode projesinin Info (Bilgi) sekmesinde, Dynamic Links için kullanılacak yeni bir URL türü oluşturun. Identifier (Tanımlayıcı) alanını benzersiz bir değere, URL scheme (URL şeması) alanını ise Dynamic Links tarafından kullanılan varsayılan URL şeması olan paket kimliğinize ayarlayın.
- Uygulamanızın Xcode projesinin Capabilities (Özellikler) sekmesinde Associated Domains'i (İlişkili Alanlar) etkinleştirin ve Associated Domains (İlişkili Alanlar) listesine aşağıdakileri ekleyin:
applinks:your_dynamic_links_domain
- Dynamic Links bağlantılarını tamamen özel bir alan adıyla almak istiyorsanız Xcode projenizin
Info.plistdosyasındaFirebaseDynamicLinksCustomDomainsadlı bir anahtar oluşturun ve bu anahtarı uygulamanızın Dynamic Links URL ön eklerine ayarlayın. Örneğin:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share FirebaseCoremodülünüUIApplicationDelegatedosyanı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; // ...
- Uygulama temsilcinizin
application(_:didFinishLaunchingWithOptions:)yönteminde paylaşılan birFirebaseAppö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];
- SwiftUI kullanıyorsanız bir uygulama temsilcisi oluşturmanız ve bunu
UIApplicationDelegateAdaptorveyaNSApplicationDelegateAdaptoraracılığıylaAppyapı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() } } } }
- Ardından,
application:continueUserActivity:restorationHandler:yönteminde, uygulama zaten yüklüyken Geçiş Bağlantıları olarak alınan bağlantıları işleyin:Swift
Not: Bu ürün macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde kullanılamaz.func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { let handled = DynamicLinks.dynamicLinks() .handleUniversalLink(userActivity.webpageURL!) { dynamiclink, error in // ... } return handled }
Objective-C
Not: Bu ürün macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde kullanılamaz.- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler: #if defined(__IPHONE_12_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_12_0) (nonnull void (^)(NSArray<id
> *_Nullable))restorationHandler { #else (nonnull void (^)(NSArray *_Nullable))restorationHandler { #endif // __IPHONE_12_0 BOOL handled = [[FIRDynamicLinks dynamicLinks] handleUniversalLink:userActivity.webpageURL completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) { // ... }]; return handled; } - Son olarak, uygulamanızın özel URL şeması aracılığıyla alınan bağlantıları
application:openURL:options:içinde işleyin. Bu yöntem, uygulamanız yüklendikten sonra ilk kez açıldığında çağrılır.Uygulamanız ilk kez başlatıldığında Dynamic Link bulunamazsa bu yöntem,
DynamicLink'ninurldeğerinilolarak ayarlanmış şekilde çağrılır. Bu, SDK'nın eşleşen bir bekleyen Dynamic Link bulamadığını gösterir.Swift
Not: Bu ürün macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde kullanılamaz.@available(iOS 9.0, *) func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool { return application(app, open: url, sourceApplication: options[UIApplication.OpenURLOptionsKey .sourceApplication] as? String, annotation: "") } func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) { // Handle the deep link. For example, show the deep-linked content or // apply a promotional offer to the user's account. // ... return true } return false }
Objective-C
Not: Bu ürün macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde kullanılamaz.- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary
*)options { return [self application:app openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url]; if (dynamicLink) { if (dynamicLink.url) { // Handle the deep link. For example, show the deep-linked content, // apply a promotional offer to the user's account or show customized onboarding view. // ... } else { // Dynamic link has empty deep link. This situation will happens if // Firebase Dynamic Links iOS SDK tried to retrieve pending dynamic link, // but pending link is not available for this device/App combination. // At this point you may display default onboarding view. } return YES; } return NO; }