Firebase Dynamic Links no acorta la URL

Aug 29 2020

Estoy intentando que Dynamic Links acorte mi URL con el siguiente código:

guard let link = URL(string: "https://myapp.com") else { return }
let dynamicLinksDomainURIPrefix = "https://app.myapp.com/link"
let linkBuilder = DynamicLinkComponents(link: link, domainURIPrefix: dynamicLinksDomainURIPrefix)
linkBuilder?.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.myapp.ios")

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

let options = DynamicLinkComponentsOptions()
options.pathLength = .short
linkBuilder?.options = options
linkBuilder?.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Está imprimiendo bien la URL larga, pero la línea a continuación (para la URL corta) nunca se llama:

print("The short URL is: \(url)")

Porque urldevuelve cero y no tengo idea de por qué. Nada de lo que he encontrado en las guías o en línea me ha llevado en la dirección correcta.

¿¿Qué estoy haciendo mal??

Respuestas

1 AustinAstorga Sep 28 2020 at 01:50

Creo que es porque lo siguiente es incorrecto:

guard let url = url, error != nil else { return }

Está diciendo que se asegure de que haya una URL no nula y que haya un error.

Creo que los documentos de Firebase están equivocados. En cambio, quieres:

guard let url = url, error == nil else { return }
DebashishDas Sep 28 2020 at 02:08

Lo que has hecho aquí:

linkBuilder?.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

si está desenvolviendo la URL y verificando si el error contiene algún error, entonces está imprimiendo 'La URL corta es: (url)' , significa que si shorten () tiene éxito y no hay ningún error, su método de impresión nunca se ejecutará.

Lo que tiene que hacer es, primero verifique si el error no contiene ningún error que llame a print ()

linkBuilder?.shorten() { url, warnings, error in
  guard error == nil else { return }
  if let shortUrl = url {
      print("The short url is \(shortUrl)")
  }
}