Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Criar links dinâmicos no iOS

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Você pode criar links dinâmicos curtos ou longos com a API Firebase Dynamic Links Builder. Essa API aceita um link dinâmico longo ou um objeto contendo parâmetros de link dinâmico e retorna URLs como os exemplos a seguir:

https://example.com/link/WXYZ
https://example.page.link/WXYZ

Pré-requisitos

Antes de começar, certifique-se de adicionar o Firebase ao seu projeto iOS .

Use o Swift Package Manager para instalar e gerenciar as dependências do Firebase.

  1. No Xcode, com seu projeto de aplicativo aberto, navegue até File > Add Packages .
  2. Quando solicitado, adicione o repositório do SDK das plataformas Firebase Apple:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Escolha a biblioteca de links dinâmicos.
  5. Para uma experiência ideal com links dinâmicos, 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 de IDFA ou com coleção de IDFA.
  6. Quando terminar, o Xcode começará automaticamente a resolver e baixar suas dependências em segundo plano.

Agora, execute algumas etapas de configuração:

  1. No console do Firebase, abra a seção Dynamic Links .
  2. Se você ainda não aceitou os termos de serviço e definiu um prefixo de URI para seus links dinâmicos, faça isso quando solicitado.

    Se você já tiver um prefixo de URI de links dinâmicos, anote-o. Você precisa fornecê-lo ao criar links dinâmicos programaticamente.

  3. Recomendado : especifique os padrões de URL permitidos em seus links diretos e links substitutos. Ao fazer isso, você impede que partes não autorizadas criem links dinâmicos que redirecionam do seu domínio para sites que você não controla. Consulte Permitir padrões de URL específicos .
  4. Certifique-se de que o ID da App Store do seu aplicativo e o prefixo do ID do 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 seu projeto do Firebase e selecione seu aplicativo para iOS.

    Confirme se seu projeto do Firebase está configurado corretamente para usar Dynamic Links em seu aplicativo iOS abrindo o arquivo apple-app-site-association que está hospedado em seu domínio de Dynamic Links. O Firebase fornecerá o arquivo apple-app-site-association da raiz do domínio, bem como o subdiretório .well-known . Por exemplo:

        https://example.com/apple-app-site-association
        https://example.com/.well-known/apple-app-site-association
        

    Se 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":["/*"]}]}}

    Se a propriedade de details estiver vazia, verifique novamente se você especificou o prefixo do App ID. Observe que o prefixo do ID do aplicativo pode não ser o mesmo que o ID da equipe.

Adicionar o Firebase ao seu aplicativo

  1. Importe o módulo FirebaseCore em seu UIApplicationDelegate , bem como qualquer outro módulo Firebase usado pelo delegado do aplicativo. Por exemplo, para usar o Cloud Firestore e a autenticação:

    Rápido

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objetivo-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Configure uma instância compartilhada do FirebaseApp no ​​método application(_:didFinishLaunchingWithOptions:) do representante do seu aplicativo:

    Rápido

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objetivo-C

    // Use Firebase library to configure APIs
    [FIRApp configure];

Usar o console do Firebase

Se você deseja gerar um único link dinâmico, seja para fins de teste ou para que sua equipe de marketing crie facilmente um link que possa ser usado em algo como uma postagem de mídia social, a maneira mais simples seria visitar o console do Firebase e criar um manualmente seguindo o formulário passo a passo.

Use a API do iOS Builder

Você pode usar a API do iOS Builder para criar links dinâmicos a partir de parâmetros ou para encurtar um link dinâmico longo.

Para criar um vínculo dinâmico, crie um novo objeto DynamicLinkComponents e especifique os parâmetros do vínculo dinâmico definindo as propriedades correspondentes do objeto. Em seguida, obtenha o link longo da propriedade url do objeto ou obtenha o link curto chamando short shorten() .

O exemplo mínimo a seguir cria um link dinâmico longo para https://www.example.com/my-page que é aberto com seu aplicativo iOS no iOS e o aplicativo com.example.android no Android:

Rápido

Observação: este produto Firebase não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.
guard let link = URL(string: "https://www.example.com/my-page") else { return }
let dynamicLinksDomainURIPrefix = "https://example.com/link"
let linkBuilder = DynamicLinkComponents(link: link, domainURIPrefix: dynamicLinksDomainURIPRefix)
linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios")
linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android")

guard let longDynamicLink = linkBuilder.url else { return }
print("The long URL is: \(longDynamicLink)")

Objetivo-C

Observação: este produto Firebase não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.
NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"];
NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link";
FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc]
                                         initWithLink:link
                                               domainURIPrefix:dynamicLinksDomainURIPrefix];
linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc]
                             initWithBundleID:@"com.example.ios"];
linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc]
                                 initWithPackageName:@"com.example.android"];

NSLog(@"The long URL is: %@", linkBuilder.url);

Para criar um link dinâmico curto, crie um DynamicLinkComponents da mesma maneira e, em seguida, chame short shorten() .

Construir um link curto requer uma chamada de rede, portanto, em vez de retornar o link diretamente, short shorten() aceita um manipulador de conclusão, que é chamado quando a solicitação é concluída. Por exemplo:

Rápido

Observação: este produto Firebase não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.
linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objetivo-C

Observação: este produto Firebase não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL,
                                     NSArray<NSString *> * _Nullable warnings,
                                     NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];
      

Por padrão, links dinâmicos curtos são gerados com sufixos de link de 17 caracteres que tornam extremamente improvável que alguém possa adivinhar um link dinâmico válido. Se, para o seu caso de uso, não houver problema em alguém adivinhar com sucesso um link curto, talvez você prefira gerar sufixos que sejam apenas o tempo necessário para serem exclusivos, o que você pode fazer definindo a propriedade dynamicLinkComponentsOptions :

Rápido

Observação: este produto Firebase não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.
linkBuilder.options = DynamicLinkComponentsOptions()
linkBuilder.options.pathLength = .short
linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objetivo-C

Observação: este produto Firebase não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.
linkBuilder.dynamicLinkComponentsOptions = [[FIRDynamicLinkComponentsOptions alloc] init];
linkBuilder.dynamicLinkComponentsOptions.pathLength = FIRShortDynamicLinkPathLengthShort;
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL,
                                     NSArray<NSString *> * _Nullable warnings,
                                     NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];
      

Você pode usar a API do Dynamic Link Builder para criar links dinâmicos com qualquer um dos parâmetros compatíveis. Consulte a referência da API para obter detalhes.

O exemplo a seguir cria um Dynamic Link com vários parâmetros comuns definidos:

Rápido

Observação: este produto Firebase não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.
guard let link = URL(string: "https://www.example.com/my-page") else { return }
let dynamicLinksDomainURIPrefix = "https://example.com/link"
let linkBuilder = DynamicLinkComponents(link: link, domainURIPRefix: dynamicLinksDomainURIPrefix)

linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios")
linkBuilder.iOSParameters.appStoreID = "123456789"
linkBuilder.iOSParameters.minimumAppVersion = "1.2.3"

linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android")
linkBuilder.androidParameters.minimumVersion = 123

linkBuilder.analyticsParameters = DynamicLinkGoogleAnalyticsParameters(source: "orkut",
                                                                       medium: "social",
                                                                       campaign: "example-promo")

linkBuilder.iTunesConnectParameters = DynamicLinkItunesConnectAnalyticsParameters()
linkBuilder.iTunesConnectParameters.providerToken = "123456"
linkBuilder.iTunesConnectParameters.campaignToken = "example-promo"

linkBuilder.socialMetaTagParameters = DynamicLinkSocialMetaTagParameters()
linkBuilder.socialMetaTagParameters.title = "Example of a Dynamic Link"
linkBuilder.socialMetaTagParameters.descriptionText = "This link works whether the app is installed or not!"
linkBuilder.socialMetaTagParameters.imageURL = "https://www.example.com/my-image.jpg"

guard let longDynamicLink = linkBuilder.url else { return }
print("The long URL is: \(longDynamicLink)")

Objetivo-C

Observação: este produto Firebase não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.
NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"];
NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link";
FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc]
                                         initWithLink:link
                                         domainURIPrefix:dynamicLinksDomainURIPrefix];

linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc]
                             initWithBundleID:@"com.example.ios"];
linkBuilder.iOSParameters.appStoreID = @"123456789";
linkBuilder.iOSParameters.minimumAppVersion = @"1.2.3";

linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc]
                                 initWithPackageName:@"com.example.android"];
linkBuilder.androidParameters.minimumVersion = 123;

linkBuilder.analyticsParameters = [[FIRDynamicLinkGoogleAnalyticsParameters alloc]
                                   initWithSource:@"orkut"
                                           medium:@"social"
                                         campaign:@"example-promo"];

linkBuilder.iTunesConnectParameters = [[FIRDynamicLinkItunesConnectAnalyticsParameters alloc] init];
linkBuilder.iTunesConnectParameters.providerToken = @"123456";
linkBuilder.iTunesConnectParameters.campaignToken = @"example-promo";

linkBuilder.socialMetaTagParameters = [[FIRDynamicLinkSocialMetaTagParameters alloc] init];
linkBuilder.socialMetaTagParameters.title = @"Example of a Dynamic Link";
linkBuilder.socialMetaTagParameters.descriptionText = @"This link works whether the app is installed or not!";
linkBuilder.socialMetaTagParameters.imageURL = @"https://www.example.com/my-image.jpg";

NSLog(@"The long URL is: %@", linkBuilder.url);

Você pode definir os parâmetros do Dynamic Link com os seguintes objetos e propriedades:

Componentes do DynamicLink
link

O link que seu aplicativo abrirá. Especifique uma URL que seu aplicativo pode manipular, normalmente o conteúdo ou carga útil do aplicativo, que inicia a lógica específica do aplicativo (como creditar o usuário com um cupom ou exibir uma tela de boas-vindas). Esse link deve ser um URL bem formatado, ser codificado em URL corretamente, usar HTTP ou HTTPS e não pode ser outro Link dinâmico.

domínioURIPrefix Seu prefixo de URL de link dinâmico, que você encontra no Firebase console. Um domínio Dynamic Link se parece com os seguintes exemplos:
https://example.com/link
https://example.page.link
DynamicLinkAndroidParameters
URL alternativo O link para abrir quando o aplicativo não estiver instalado. Especifique isso para fazer algo diferente de instalar seu aplicativo da Play Store quando o aplicativo não estiver instalado, como abrir a versão da Web para dispositivos móveis do conteúdo ou exibir uma página promocional para seu aplicativo.
versão mínima O versionCode da versão mínima do seu aplicativo que pode abrir o link. Se o aplicativo instalado for uma versão mais antiga, o usuário será direcionado à Play Store para atualizar o aplicativo.
Parâmetros DynamicLinkIOS
appStoreID O ID da App Store do seu aplicativo, usado para enviar usuários à App Store quando o aplicativo não está instalado
URL alternativo O link para abrir quando o aplicativo não estiver instalado. Especifique isso para fazer algo diferente de instalar seu aplicativo da App Store quando o aplicativo não estiver instalado, como abrir a versão da Web para dispositivos móveis do conteúdo ou exibir uma página promocional para seu aplicativo.
esquema personalizado O esquema de URL personalizado do seu aplicativo, se definido como algo diferente do ID do pacote do seu aplicativo
URL Fallback do iPad O link para abrir em iPads quando o aplicativo não estiver instalado. Especifique isso para fazer algo diferente de instalar seu aplicativo da App Store quando o aplicativo não estiver instalado, como abrir a versão web do conteúdo ou exibir uma página promocional para seu aplicativo.
ID do pacote iPad O ID do pacote do aplicativo iOS a ser usado em iPads para abrir o link. O aplicativo deve estar conectado ao seu projeto na página Visão geral do console do Firebase.
versão mínima do aplicativo O número da versão mínima do seu aplicativo que pode abrir o link. Esse sinalizador é passado para seu aplicativo quando ele é aberto, e seu aplicativo deve decidir o que fazer com ele.
DynamicLinkNavigationInfoParameters
forçadoRedirectAtivado Se definido como '1', ignore a página de visualização do aplicativo quando o link dinâmico for aberto e redirecione para o aplicativo ou loja. A página de visualização do aplicativo (ativada por padrão) pode enviar usuários de forma mais confiável para o destino mais apropriado quando eles abrem links dinâmicos em aplicativos; no entanto, se você espera que um link dinâmico seja aberto apenas em aplicativos que podem abrir links dinâmicos de forma confiável sem esta página, você pode desativá-lo com este parâmetro. Este parâmetro afetará o comportamento do Dynamic Link apenas no iOS.
DynamicLinkSocialMetaTagParameters
título O título a ser usado quando o Link dinâmico é compartilhado em uma postagem social.
descriçãoTexto A descrição a ser usada quando o Link dinâmico é compartilhado em uma postagem social.
imagem URL O URL para uma imagem relacionada a este link. A imagem deve ter pelo menos 300 x 200 px e menos de 300 KB.
DynamicLinkGoogleAnalyticsParameters
fonte
médio
campanha
prazo
contente
Parâmetros de análise do Google Play. Esses parâmetros ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) são passados ​​para a Play Store e anexados à carga útil do link.
Parâmetros DynamicLinkItunesConnectAnalytics
provedorToken
afiliadoToken
CampaignToken
Parâmetros de análise do iTunes Connect. Esses parâmetros ( pt , at , ct ) são passados ​​para a App Store.

Para encurtar um link dinâmico longo, passe o link dinâmico longo para shortenURL(url:options:) junto com um objeto DynamicLinkComponentsOptions se quiser gerar um link com um sufixo curto:

Rápido

Observação: este produto Firebase não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.
DynamicLinkComponents.shortenURL(url: longLinkUrl, options: nil) { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objetivo-C

Observação: este produto Firebase não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.
[FIRDynamicLinkComponents shortenURL:longLinkUrl
                             options:nil
                          completion:^(NSURL * _Nullable shortURL,
                                       NSArray<NSString *> * _Nullable warnings,
                                       NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];

Por padrão, o Dynamic Links usa o identificador de pacote do seu aplicativo como o esquema de URL necessário para abrir seu aplicativo. Recomendamos manter esse valor padrão para manter sua implementação simples.

No entanto, os desenvolvedores que já estão usando um esquema de URL personalizado para outros fins também podem usar esse mesmo esquema de URL personalizado para seus links dinâmicos. Se você estiver nessa situação, poderá especificar um esquema de URL diferente para seus links dinâmicos do Firebase seguindo estas etapas:

  1. Ao configurar seu aplicativo, certifique-se de especificar o esquema de URL padrão a ser usado pelo seu aplicativo antes de configurar sua instância compartilhada do FirebaseApp :

    Rápido

    Observação: este produto Firebase não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.
    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplication
                       .LaunchOptionsKey: Any]?) -> Bool {
      // Set deepLinkURLScheme to the custom URL scheme you defined in your
      // Xcode project.
      FirebaseOptions.defaultOptions()?.deepLinkURLScheme = customURLScheme
      FirebaseApp.configure()
    
      return true
    }
    

    Objetivo-C

    Observação: este produto Firebase não está disponível em destinos macOS, Mac Catalyst, tvOS ou watchOS.
    - (BOOL)application:(UIApplication *)application
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      // Set deepLinkURLScheme to the custom URL scheme you defined in your
      // Xcode project.
      [FIROptions defaultOptions].deepLinkURLScheme = CUSTOM_URL_SCHEME;
      [FIRApp configure];
    
      return YES;
    }
  2. Sempre que você criar um link dinâmico, precisará especificar o esquema de URL personalizado que seu aplicativo usa. Você pode fazer isso por meio do console do Firebase, definindo o customScheme na API Builder, especificando o parâmetro ius em sua URL ou enviando o parâmetro iosCustomScheme para a API REST

Próximos passos

Agora que você criou Dynamic Links, você precisa configurar seu aplicativo para receber Dynamic Links e enviar usuários para o lugar certo em seu aplicativo depois que um usuário os abrir.

Para receber links dinâmicos em seu aplicativo, consulte a documentação para iOS , Android , C++ e Unity .