Oluşturduğunuz Firebase Dinamik Bağlantılarını almak için uygulamanıza Dynamic Links SDK'sını dahil etmeniz ve uygulamanız yüklendiğinde Dynamic Link'te iletilen verileri almak için handleUniversalLink:
dynamicLinkFromCustomSchemeURL:
yöntemlerini çağırmanız gerekir.
Önkoşullar
Başlamadan önce Firebase'i iOS projenize eklediğinizden emin olun.
Firebase'i ve Dynamic Links SDK'yı kurun
Firebase bağımlılıklarını yüklemek ve yönetmek için Swift Paket Yöneticisini kullanın.
- Xcode'da uygulama projeniz açıkken Dosya > Paket Ekle'ye gidin.
- İstendiğinde Firebase Apple platformları SDK deposunu ekleyin:
- Dinamik Bağlantılar kitaplığını seçin.
-
-ObjC
bayrağını hedefinizin derleme ayarlarının Diğer Bağlayıcı Bayrakları bölümüne ekleyin. - 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.
- Bitirdiğinizde Xcode, bağımlılıklarınızı arka planda otomatik olarak çözmeye ve indirmeye başlayacaktır.
https://github.com/firebase/firebase-ios-sdk.git
Şimdi bazı yapılandırma adımlarını gerçekleştirin:
- Firebase konsolunda Dinamik Bağlantılar bölümünü açın. İstenirse hizmet şartlarını kabul edin.
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.
Aşağıdaki URL'yi açarak Firebase projenizin iOS uygulamanızda Dinamik Bağlantıları kullanacak şekilde düzgün şekilde yapılandırıldığını doğrulayabilirsiniz:
https://your_dynamic_links_domain/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":["NOT /_/*","/*"]}]}}
details
alanı boşsa Uygulama Kimliği ön ekinizi belirttiğinizi bir kez daha kontrol edin. Uygulama Kimliği ön ekinizin Ekip Kimliğinizle aynı olmayabileceğini unutmayın.İsteğe bağlı : Dynamic Links SDK'nın iOS çalışma alanını kullanmasını devre dışı bırakın.
Varsayılan olarak Dinamik Bağlantılar SDK'sı, yükleme sonrası derin bağlantıların güvenilirliğini artırmak için çalışma alanını kullanır. Dinamik Bağlantılar, çalışma alanını kullanarak, bir kullanıcı Dinamik Bağlantıyı açtığında ancak önce uygulamanızı yüklemesi gerektiğinde, kullanıcının uygulamayı kurulumdan sonra ilk kez açtığında hemen orijinal bağlı içeriğe gidebilmesini sağlayabilir.
Bunun dezavantajı, çalışma alanının kullanımının iOS 14 ve sonraki sürümlerde bir bildirimi tetiklemesidir. Bu nedenle, kullanıcılar uygulamanızı ilk kez açtıklarında, çalışma alanında bir URL bulunuyorsa uygulamanızın çalışma alanına eriştiğine dair bir bildirim görürler ve bu da karışıklığa neden olabilir.
Bu davranışı devre dışı bırakmak için Xcode projenizin
Info.plist
dosyasını düzenleyin veFirebaseDeepLinkPasteboardRetrievalEnabled
anahtarınıNO
olarak ayarlayın.
Uygulamanızda Dinamik Bağlantıları açın
- Uygulamanızın Xcode projesinin Bilgi sekmesinde Dinamik Bağlantılar için kullanılacak yeni bir URL türü oluşturun. Tanımlayıcı alanını benzersiz bir değere ve URL şeması alanını, Dinamik Bağlantılar tarafından kullanılan varsayılan URL şeması olan paket tanımlayıcınız olacak şekilde ayarlayın.
- Uygulamanızın Xcode projesinin Yetenekler sekmesinde İlişkili Etki Alanları'nı etkinleştirin ve İlişkili Etki Alanları listesine aşağıdakileri ekleyin:
applinks:your_dynamic_links_domain
- Tamamen özel bir alan adıyla Dinamik Bağlantılar almak istiyorsanız Xcode projenizin
Info.plist
dosyasındaFirebaseDynamicLinksCustomDomains
adlı bir anahtar oluşturun ve bunu uygulamanızın Dinamik Bağlantılar URL'si öneklerine ayarlayın. Örneğin:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share -
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; // ...
- Uygulama temsilcinizin
application(_:didFinishLaunchingWithOptions:)
yöntemindeFirebaseApp
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];
- SwiftUI kullanıyorsanız, bir uygulama temsilcisi oluşturmalı ve bunu
UIApplicationDelegateAdaptor
veyaNSApplicationDelegateAdaptor
aracılığıylaApp
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() } } } }
- Daha sonra,
application:continueUserActivity:restorationHandler:
yönteminde, uygulama zaten yüklü olduğunda Evrensel Bağlantılar olarak alınan bağlantıları yönetin:Süratli
Not: Bu ürün macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { let handled = DynamicLinks.dynamicLinks() .handleUniversalLink(userActivity.webpageURL!) { dynamiclink, error in // ... } return handled }
Amaç-C
Not: Bu ürün macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.- (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<UIUserActivityRestoring>> *_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,
application:openURL:options:
uygulamanızın özel URL şeması aracılığıyla alınan bağlantıları yönetin. Bu yöntem, uygulamanız kurulumdan sonra ilk kez açıldığında çağrılır.Uygulamanızın ilk açılışında Dinamik Bağlantı bulunamazsa, bu yöntem
DynamicLink
url
nil
olarak ayarlanarak çağrılacaktır; bu, SDK'nın eşleşen bekleyen bir Dinamik Bağlantı bulamadığını belirtir.Süratli
Not: Bu ürün macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.@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 }
Amaç-C
Not: Bu ürün macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *, id> *)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; }