Oluşturduğunuz handleUniversalLink:
dynamicLinkFromCustomSchemeURL:
almak için, uygulamanıza Dynamic Links SDK'sını handleUniversalLink:
ve uygulamanız yüklendiğinde dynamicLinkFromCustomSchemeURL:
yöntemlerini dynamicLinkFromCustomSchemeURL:
geçirilen verileri almalısınız.
Önkoşullar
Firebase Dynamic Links, iOS 8 veya daha yenisini gerektirir. Uygulamanızda iOS 7'yi hedefleyebilirsiniz, ancak uygulama iOS 8 veya daha yeni bir sürümde çalışmıyorsa tüm Firebase Dynamic Links SDK çağrıları işlemsiz olacaktır.
Firebase ve Dynamic Links SDK'sını kurun
- Firebase'i iOS projenize ekleyin . Aşağıdaki kapsülü Pod dosyanıza
Podfile
:pod 'Firebase/Analytics' pod 'Firebase/DynamicLinks'
-
pod install
çalıştırın ve oluşturulan.xcworkspace
dosyasını açın. - Firebase konsolunda Dinamik Bağlantılar bölümünü açın. Yapmanız istenirse hizmet şartlarını kabul edin.
Uygulamanızın App Store 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 gidin ve iOS uygulamanızı seçin.
Aşağıdaki URL'yi açarak, Firebase projenizin iOS uygulamanızda Dynamic Links'i kullanmak için doğru şekilde yapılandırıldığını 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 önekine ve paket kimliğine bir referans içerir. Örneğin:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}
details
alanı boşsa, Uygulama Kimliği önekinizi belirttiğinizi iki kez kontrol edin. Uygulama Kimliği ön ekinizin Ekip Kimliğinizle aynı olmayabileceğini unutmayın.İsteğe bağlı : Dynamic Links SDK'sının iOS çalışma alanı kullanımını devre dışı bırakın.
Varsayılan olarak, Dynamic Links SDK, yükleme sonrası derin bağlantıların güvenilirliğini artırmak için çalışma alanını kullanır. Çalışma alanını kullanarak Dynamic Links, bir kullanıcı bir Dinamik Bağlantıyı açtığında ancak önce uygulamanızı yüklemesi gerektiğinde, kullanıcının uygulamayı yüklemeden sonra ilk kez açarken hemen orijinal bağlantı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ı bir Dinamik Bağlantı URL'si içeriyorsa, uygulamanızın çalışma alanına eriştiğine dair bir bildirim görürler ve bu da 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
.
Uygulamanızda Dynamic Links'i 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ı, Dynamic Links 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 aşağıdaki İlişkili Etki Alanları listesine ekleyin:
applinks:your_dynamic_links_domain
- Tamamen özel bir alanla Dinamik Bağlantılar almak istiyorsanız, Xcode projenizin
Info.plist
dosyasındaFirebaseDynamicLinksCustomDomains
adlı bir anahtar oluşturun ve bunu uygulamanızın Dynamic Links URL öneklerine ayarlayın. Örneğin:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - Sizin de Firebase modülü içe
UIApplicationDelegate
:Swift
import Firebase
Amaç-C
@import Firebase;
- Genellikle uygulamanızın uygulamasında bir
FirebaseApp
paylaşılan örneği yapılandırınapplication:didFinishLaunchingWithOptions:
yöntem:Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Amaç-C
// Use Firebase library to configure APIs [FIRApp configure];
- Ardından,
application:continueUserActivity:restorationHandler:
yöntem, uygulama zaten yüklendiğinde Evrensel Bağlantılar olarak alınan bağlantıları işleyin (iOS 9 ve daha yeni sürümlerde):Swift
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
- (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:sourceApplication:annotation:
(iOS 8 ve daha eski) veapplication:openURL:options:
(iOS 9 ve üstü) yöntemler, uygulamanızın özel URL şeması aracılığıyla alınan bağlantılarıapplication:openURL:sourceApplication:annotation:
. Bu yöntemler, uygulamanız iOS 8 ve daha eski sürümlerde bir bağlantı aldığında ve herhangi bir iOS sürümüne yüklendikten sonra uygulamanız ilk kez açıldığında çağrılır.Dinamik Bağlantı, uygulamanızın ilk başlatılışında (iOS'un herhangi bir sürümünde) bulunamazsa, bu yöntem,
FIRDynamicLink
url
nil
ayarlanarak çağrılır ve SDK'nın eşleşen bir bekleyen Dinamik Bağlantı bulamadığını gösterir.Swift
@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
- (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; }