我正在使用 Firebase 动态链接深层链接到用户个人资料。我使用用户个人资料 URL 设置了一个 QR 码,当从 safari、notes 和 imessage 中点击该 QR 码时,应用程序可以正确读取该 QR 码并路由到相应的视图。但是,当我从二维码扫描 URL 时,它仅在应用程序中打开,而不会读取任何传入的 URL。我正在使用 SwiftUI,这是我用来打开 URL 的代码
.onOpenURL { incomingURL in
print("Incoming URL is \(incomingURL)")
DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL) { dynamicLink, error in
guard error == nil else {
print("Error here: \(String(describing: error?.localizedDescription))")
return
}
if let dynamicLink = dynamicLink {
RoutingService.instance.handleIncomingDynamicLink(dynamicLink)
}
}
}
为了生成二维码,我正在使用
import CoreImage.CIFilterBuiltins
class QRCodeGenerator {
static let instance = QRCodeGenerator()
let context = CIContext()
let filter = CIFilter.qrCodeGenerator()
func generateQRCode(from string: String) -> UIImage {
filter.message = Data(string.utf8)
if let outputImage = filter.outputImage {
if let cgimg = context.createCGImage(outputImage, from: outputImage.extent) {
return UIImage(cgImage: cgimg)
}
}
return UIImage(systemName: "xmark.circle") ?? UIImage()
}
}
正如所附图片中显示的选项,当我在 safari 中打开时,它会在预览页面中打开到 safari,然后我点击打开,它会正常读取。但是当我在 BeBigger 中点击打开时,它只识别出应该在我的应用程序中打开它。我认为这是 Firebase Deeplinks 的问题,任何人都有解决方法,也许是首先强制 URL 进入 safari 的方法?下面是使用深层链接生成的示例 URL:
https://bebigger.page.link/tiRtza413UDMKcyN8
,它解码为 https://bebigger.app/?location=incoming_friend_requests&id=NTDLrYfUWlhFVNQA1zwcg6qLNNg2
。谢谢
在您的应用程序上使用此方法
WindowGroup
:
.onContinueUserActivity(NSUserActivityTypeBrowsingWeb) { userActivity in
guard let url = userActivity.webpageURL else { return }
// TODO: same handling as done in onOpenURL()
onOpenWith(url: url)
}