Firebase Dynamic Links no acorta la URL
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
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 }
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)")
}
}