Para receber os Firebase Dynamic Links que você criou , você deve incluir o SDK do Dynamic Links em seu aplicativo e chamar os métodos handleUniversalLink:
e dynamicLinkFromCustomSchemeURL:
quando seu aplicativo for carregado para obter os dados transmitidos no Dynamic Link.
Pré-requisitos
Antes de começar, adicione o Firebase ao seu projeto iOS .
Configure o Firebase e o SDK do Dynamic Links
Use o Swift Package Manager para instalar e gerenciar dependências do Firebase.
- No Xcode, com o projeto do seu aplicativo aberto, navegue até File > Add Packages .
- Quando solicitado, adicione o repositório SDK das plataformas Apple do Firebase:
- Escolha a biblioteca Dynamic Links.
- Adicione o sinalizador
-ObjC
à seção Outros sinalizadores de vinculador das configurações de compilação do seu destino. - Para uma experiência ideal com Dynamic Links, recomendamos ativar o Google Analytics em seu projeto do Firebase e adicionar o SDK do Firebase para Google Analytics ao seu aplicativo. Você pode selecionar a biblioteca sem coleção IDFA ou com coleção IDFA.
- Quando terminar, o Xcode começará automaticamente a resolver e baixar suas dependências em segundo plano.
https://github.com/firebase/firebase-ios-sdk.git
Agora, execute algumas etapas de configuração:
- No console do Firebase , abra a seção Dynamic Links . Aceite os termos de serviço se for solicitado a fazê-lo.
Certifique-se de que o ID da App Store e o prefixo do App ID do seu aplicativo estejam especificados nas configurações do seu aplicativo. Para visualizar e editar as configurações do seu aplicativo, acesse a página Configurações do projeto do Firebase e selecione seu aplicativo iOS.
Você pode confirmar se seu projeto do Firebase está configurado corretamente para usar Dynamic Links em seu aplicativo iOS abrindo o seguinte URL:
https://your_dynamic_links_domain/apple-app-site-association
Se o seu aplicativo estiver conectado, o arquivo
apple-app-site-association
conterá uma referência ao prefixo do ID do aplicativo e ao ID do pacote do seu aplicativo. Por exemplo:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}
Se o campo
details
estiver vazio, verifique novamente se você especificou o prefixo do ID do aplicativo. Observe que o prefixo do seu ID do aplicativo pode não ser igual ao seu ID da equipe.Opcional : desative o uso da área de transferência do iOS pelo SDK do Dynamic Links.
Por padrão, o SDK do Dynamic Links usa o pasteboard para melhorar a confiabilidade dos links diretos pós-instalação. Ao usar a área de trabalho, o Dynamic Links pode garantir que, quando um usuário abrir um Dynamic Link, mas precisar instalar seu aplicativo primeiro, o usuário possa ir imediatamente para o conteúdo original vinculado ao abrir o aplicativo pela primeira vez após a instalação.
A desvantagem disso é que o uso da área de transferência aciona uma notificação no iOS 14 e posterior. Assim, na primeira vez que os usuários abrirem seu aplicativo, se a área de transferência contiver uma URL, eles verão uma notificação de que seu aplicativo acessou a área de transferência, o que pode causar confusão.
Para desabilitar esse comportamento, edite o arquivo
Info.plist
do seu projeto Xcode e defina a chaveFirebaseDeepLinkPasteboardRetrievalEnabled
comoNO
.
Abra links dinâmicos em seu aplicativo
- Na guia Informações do projeto Xcode do seu aplicativo, crie um novo tipo de URL a ser usado para links dinâmicos. Defina o campo Identificador com um valor exclusivo e o campo Esquema de URL como seu identificador de pacote, que é o esquema de URL padrão usado pelo Dynamic Links.
- Na guia Capacidades do projeto Xcode do seu aplicativo, habilite Domínios Associados e adicione o seguinte à lista Domínios Associados :
applinks:your_dynamic_links_domain
- Se você deseja receber links dinâmicos com um domínio totalmente personalizado , no arquivo
Info.plist
do seu projeto Xcode, crie uma chave chamadaFirebaseDynamicLinksCustomDomains
e defina-a com os prefixos de URL dos links dinâmicos do seu aplicativo. Por exemplo:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - Importe o módulo
FirebaseCore
em seuUIApplicationDelegate
, bem como quaisquer outros módulos Firebase que seu delegado de aplicativo usa. Por exemplo, para usar o Cloud Firestore e o Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Rápido
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objetivo-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Configure uma instância compartilhada
FirebaseApp
no métodoapplication(_:didFinishLaunchingWithOptions:)
delegado do seu aplicativo:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Rápido
// Use Firebase library to configure APIs FirebaseApp.configure()
Objetivo-C
// Use Firebase library to configure APIs [FIRApp configure];
- Se estiver usando SwiftUI, você deve criar um delegado de aplicativo e anexá-lo à sua estrutura
App
viaUIApplicationDelegateAdaptor
ouNSApplicationDelegateAdaptor
. Você também deve desativar o swizzling de delegado do aplicativo. Para obter mais informações, consulte as instruções do SwiftUI .SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- A seguir, no
application:continueUserActivity:restorationHandler:
:, manipule os links recebidos como links universais quando o aplicativo já estiver instalado:Rápido
Observação: este produto não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { let handled = DynamicLinks.dynamicLinks() .handleUniversalLink(userActivity.webpageURL!) { dynamiclink, error in // ... } return handled }
Objetivo-C
Observação: este produto não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.- (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; }
- Finalmente, em
application:openURL:options:
manipule links recebidos por meio do esquema de URL personalizado do seu aplicativo. Este método é chamado quando seu aplicativo é aberto pela primeira vez após a instalação.Se o Dynamic Link não for encontrado na primeira inicialização do seu aplicativo, esse método será chamado com o
url
doDynamicLink
definido comonil
, indicando que o SDK não conseguiu encontrar um Dynamic Link pendente correspondente.Rápido
Observação: este produto não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.@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 }
Objetivo-C
Observação: este produto não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.- (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; }