Oluşturduğunuz Firebase Dynamic Links öğesini almak için uygulamanıza Dynamic Links SDK'sını eklemeniz ve uygulamanız yüklendiğinde Dynamic Link içinde iletilen verileri almak için handleUniversalLink:
ve dynamicLinkFromCustomSchemeURL:
yöntemlerini çağırmanız gerekir.
Ön koşullar
Başlamadan önce Firebase'i iOS projenize eklediğinizden emin olun.
Firebase ve Dynamic Links SDK'sını ayarlama
Firebase bağımlılarını yüklemek ve yönetmek için Swift Package Manager'ı kullanın.
Firebase SDK'larını Apple projenize eklemenin farklı yolları (ör. doğrudan çerçeveleri içe aktarma ve CocoaPods kullanma) hakkında bilgi edinmek için- Xcode'da, uygulamanız açıkken Dosya > Paket Ekle'ye gidin.
- İstendiğinde Firebase Apple platformları SDK deposunu ekleyin:
- Dynamic Links kitaplığını seçin.
-ObjC
işaretini, hedefinizin derleme ayarlarının Diğer Bağlantı Oluşturucu İşaretleri bölümüne ekleyin.- Dynamic Links ile en iyi deneyimi yaşamak 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 kitaplığı seçebilirsiniz.
- İşlem tamamlandığında Xcode, arka planda bağımlılarınızı otomatik olarak çözümlemeye ve indirmeye başlar.
https://github.com/firebase/firebase-ios-sdk.git
Ardından, 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 App Store kimliğinin ve uygulama kimliği ön ekinin 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.
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-association
dosyası, uygulamanızın uygulama kimliği ön ekine ve paket kimliğine referans verir. Örneğin:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}
details
alanı boşsa uygulama kimliği ön ekini belirttiğinizden emin olun. Uygulama kimliği ön ekinizin, ekip kimliğinizle aynı olmayabileceğini unutmayın. -
İsteğe bağlı: Dynamic Links SDK'sının iOS panosunun kullanımını devre dışı bırakın.
Dynamic Links SDK'sı, varsayılan olarak yükleme sonrası derin bağlantıların güvenilirliğini artırmak için yapıştırma panosunu kullanır. Dynamic Links, yapıştırma tahtasını kullanarak kullanıcı bir Dynamic Link açtığında ancak önce uygulamanızı yüklemesi gerektiğinde, yükleme işleminden sonra uygulamayı ilk kez açtığında kullanıcının hemen bağlı orijinal içeriğe gidebileceğinden emin olabilir.
Bunun dezavantajı, iOS 14 ve sonraki sürümlerde yapıştırma panonun kullanılmasının bildirim tetiklemesi Bu nedenle, kullanıcılar uygulamanızı ilk kez açtığında, yapıştırma panosunun URL içermesi durumunda uygulamanızın yapıştırma panosuna eriştiğine dair bir bildirim görürler. Bu durum kafa karışıklığına 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 Dynamic Links'ü açma
- Uygulamanızın Xcode projesinin Bilgi sekmesinde, Dynamic Links için kullanılacak yeni bir URL türü oluşturun. Tanımlayıcı alanını benzersiz bir değere, URL şeması alanını ise Dynamic Links tarafından kullanılan varsayılan URL şeması olan paket tanımlayıcınıza ayarlayın.
- Uygulamanızın Xcode projesinin Özellikler sekmesinde, İlişkili Alanlar'ı etkinleştirin ve İlişkili Alanlar listesine aşağıdakileri ekleyin:
applinks:your_dynamic_links_domain
- Tamamen özel bir alan ile Dynamic Links almak istiyorsanız Xcode projenizin
Info.plist
dosyasındaFirebaseDynamicLinksCustomDomains
adlı 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 FirebaseCore
modülünü ve uygulama temsilcinizin kullandığı diğer tüm Firebase modülleriniUIApplicationDelegate
dosyanıza 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 birFirebaseApp
shared instance 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
UIApplicationDelegateAdaptor
veyaNSApplicationDelegateAdaptor
aracılığıylaApp
yapınıza eklemeniz gerekir. Ayrıca uygulama temsilcisi değiştirme işlemini de devre dışı bırakmanız gerekir. 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() } } } }
- Ardından,
application:continueUserActivity:restorationHandler:
yönteminde, uygulama yüklüyken geçiş bağlantısı 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<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:
içinde uygulamanızın özel URL şeması aracılığıyla alınan bağlantıları işleyin. Bu yöntem, uygulamanız yüklendikten sonra ilk kez açıldığında çağrılır.Uygulamanızın ilk başlatılmasında Dynamic Link bulunamazsa bu yöntem,
DynamicLink
'unurl
özelliğinil
olarak 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<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; }