O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Receber links dinâmicos no iOS

Para receber os Firebase Dynamic Links que você criou, inclua o SDK do Dynamic Links no seu app e chame os métodos handleUniversalLink: e dynamicLinkFromCustomSchemeURL: quando o app for carregado para receber os dados transmitidos no link dinâmico.

Pré-requisitos

O Firebase Dynamic Links requer o iOS 8 ou posterior. É possível direcionar para o iOS 7 em seu app, mas todas as chamadas do SDK do Firebase Dynamic Links ficarão em ambiente autônomo se o aplicativo não for executado no iOS 8 ou mais recente.

  1. Adicione o Firebase ao projeto do iOS. Inclua o seguinte pod no seu Podfile:
    pod 'Firebase/Analytics'
    pod 'Firebase/DynamicLinks'
  2. Execute pod install e abra o arquivo .xcworkspace criado.
  3. No Console do Firebase, abra a seção Dynamic Links. Se solicitado, aceite os Termos de Serviço.
  4. Verifique se o ID da App Store e o prefixo do ID do app estão especificados nas configurações dele. Para visualizar e editar as configurações do app, acesse a página Configurações do projeto do Firebase e selecione o app para iOS.

    Para confirmar se o projeto do Firebase está configurado corretamente para usar links dinâmicos no app para iOS, abra o seguinte URL:

    https://your_dynamic_links_domain/apple-app-site-association

    Se o app estiver conectado, o arquivo apple-app-site-association conterá uma referência ao prefixo do ID do app e ao ID do pacote do app. Exemplo:

    {"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}

    Se o campo details estiver vazio, verifique novamente se você especificou o prefixo do ID do app. Pode ser que ele não seja igual ao ID da sua equipe.

  5. Opcional: desative o uso do SDK do Dynamic Links na área de transferência do iOS.

    Por padrão, o SDK do Dynamic Links usa a área de transferência para melhorar a confiabilidade dos links diretos pós-instalação. Ao usar a área de transferência, os Dynamic Links garantem que, quando um usuário abrir um link dinâmico, mas precisar instalar seu app primeiro, o usuário poderá acessar imediatamente o conteúdo vinculado original ao abri-lo pela primeira vez.

    A desvantagem disso é que o uso da área de trabalho aciona uma notificação no iOS 14 e em versões posteriores. Dessa forma, na primeira vez que os usuários abrirem seu app, se a área de transferência tiver um URL de link dinâmico, eles verão uma notificação de que o aplicativo acessou a área de transferência, o que pode causar confusão.

    Para desativar este comportamento, edite o arquivo Info.plist seu projeto do Xcode e defina a chave FirebaseDeepLinkPasteboardRetrievalEnabled como NO.

  1. Na guia Info do projeto Xcode do seu app, crie um novo tipo de URL a ser usado para links dinâmicos. Defina o campo Identifier como um valor exclusivo e o campo URL scheme para ser seu identificador do pacote, que é o esquema de URL padrão usado pelo Dynamic Links.
  2. Na guia Capabilities do projeto Xcode do seu app, ative "Domínios associados" e adicione o seguinte à lista Associated Domains:
    applinks:your_dynamic_links_domain
  3. Se você quiser receber links dinâmicos com um domínio totalmente personalizado, no arquivo Info.plist do projeto Xcode, crie uma chave chamada FirebaseDynamicLinksCustomDomains e defina-a para os prefixos de URL dos links dinâmicos do seu app. Exemplo:
    FirebaseDynamicLinksCustomDomains
    
      https://example.com/promos
      https://example.com/links/share
    
    
  4. Importe o módulo do Firebase no UIApplicationDelegate:

    Swift

    import Firebase

    Objective-C

    @import Firebase;
  5. Configure uma instância compartilhada do FirebaseApp, normalmente no método application:didFinishLaunchingWithOptions: do seu app:

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  6. Em seguida, no método application:continueUserActivity:restorationHandler: , processe os links recebidos como links universais quando o aplicativo já estiver instalado (no iOS 9 e versões mais recentes):

    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
    }

    Objective-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;
    }
  7. Por fim, nos métodos application:openURL:sourceApplication:annotation: (iOS 8 e versões anteriores) e application:openURL:options: (iOS 9 e versões mais recentes), processe os links recebidos por meio do esquema de URL personalizado do seu app. Esses métodos são chamados quando o app recebe um link no iOS 8 e anteriores e quando ele é aberto pela primeira vez após a instalação em qualquer versão do iOS.

    Se o link dinâmico não for encontrado na primeira inicialização do app (em qualquer versão do iOS), esse método será chamado com o url do FIRDynamicLink definido como nil, indicando que o SDK não conseguiu encontrar um link dinâmico pendente.

    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
    }

    Objective-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;
    }