Firebase Dynamic Links tidak memperpendek URL

Aug 29 2020

Saya mencoba mendapatkan Dynamic Links untuk mempersingkat URL saya dengan kode berikut:

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)")
}

Ini baik-baik saja mencetak URL panjang, tetapi baris di bawah (untuk URL singkat) tidak pernah dipanggil:

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

Karena urlpengembaliannya nihil dan saya tidak tahu kenapa. Tidak ada yang saya temukan di panduan atau online yang membawa saya ke arah yang benar.

Apa yang saya lakukan salah ??

Jawaban

1 AustinAstorga Sep 28 2020 at 01:50

Saya pikir itu karena yang berikut ini salah:

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

Anda mengatakan pastikan ada URL yang bukan nihil dan pastikan ada kesalahan.

Menurut saya dokumen Firebase salah. Sebaliknya, Anda menginginkan:

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

Apa yang telah Anda lakukan di sini:

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

adalah Anda membuka bungkus url dan memeriksa apakah kesalahan mengandung beberapa Kesalahan, maka Anda mencetak 'URL singkatnya adalah: (url)' itu berarti jika shorten () berhasil dan tidak ada Kesalahan metode pencetakan Anda tidak akan pernah dijalankan.

Yang harus Anda lakukan adalah, Pertama periksa apakah kesalahan tidak mengandung Kesalahan apa pun daripada panggilan print ()

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