从二维码打开 Firebase 深层链接只需在应用程序中打开,无需读取 URL

问题描述 投票:0回答:1

我正在使用 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()
    }
    
}

screenshot of scanning QR code in ios camera app

正如所附图片中显示的选项,当我在 safari 中打开时,它会在预览页面中打开到 safari,然后我点击打开,它会正常读取。但是当我在 BeBigger 中点击打开时,它只识别出应该在我的应用程序中打开它。我认为这是 Firebase Deeplinks 的问题,任何人都有解决方法,也许是首先强制 URL 进入 safari 的方法?下面是使用深层链接生成的示例 URL:

https://bebigger.page.link/tiRtza413UDMKcyN8
,它解码为
https://bebigger.app/?location=incoming_friend_requests&id=NTDLrYfUWlhFVNQA1zwcg6qLNNg2
。谢谢

firebase swiftui firebase-dynamic-links
1个回答
0
投票

在您的应用程序上使用此方法

WindowGroup
:

.onContinueUserActivity(NSUserActivityTypeBrowsingWeb) { userActivity in
    guard let url = userActivity.webpageURL else { return }
    // TODO: same handling as done in onOpenURL()
    onOpenWith(url: url)
}
© www.soinside.com 2019 - 2024. All rights reserved.