firebase - 如果未安装应用程序,Swiftui Firebase 动态链接不起作用?
问题描述
我正在尝试在 SwiftUI 项目中实现 Firebase 动态链接,如果应用程序打开,动态链接工作正常,但如果未安装应用程序,则应用程序无法捕获链接。
应用委托已注册:
@main
struct NF_APP: App {
public static let api:REST_API = REST_API.main
@Environment(\.scenePhase) var scenePhase
@UIApplicationDelegateAdaptor(APP_delegate.self) private var appDelegate
@main
struct app: App {
....
WindowGroup {
w_splash()
.onOpenURL { (url) in
handleIncomingLink(url)//<-- working fine if app is open
}
应用委托方法:
func application(
_ app: UIApplication,
open url: URL,
options: [UIApplication.OpenURLOptionsKey : Any] = [:]
) -> Bool {
print("------------- >>>> sourceApplication <<<<-----------------")
if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) {
// Handle the deep link. For example, show the deep-linked content or
// apply a promotional offer to the user's account.
// ...
print("[SOURCE APPLICATION] DynamicLink : \(dynamicLink)")
print("[SOURCE APPLICATION] DynamicLink URL : \(String(describing: dynamicLink.url?.absoluteString))")
print("[SOURCE APPLICATION] URL : \(String(describing: url))")
if dynamicLink.url != nil ,
let theUrl:String = dynamicLink.url?.absoluteString
{
self.matchReferal(theUrl)
}
return true
}
return ApplicationDelegate.shared.application(
app,
open: url,
sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
annotation: options[UIApplication.OpenURLOptionsKey.annotation]
)
}
//Catch referral code when app is already installed
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
print("------------- >>>> restorationHandler <<<<-----------------")
print("[DYNAMIC LINK] user clicked dynamic link which is = \(String(describing: userActivity.webpageURL))")
let handled = DynamicLinks.dynamicLinks().handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
if error != nil
{
print("[DYNAMIC LINK] error is \(String(describing: error))")
}else
if dynamiclink?.url != nil ,
let theUrl:String = dynamiclink?.url?.absoluteString
{
self.matchReferal(theUrl)
}
}
return handled
}
//FIREA BASE DYNAMIC LINK CONIFIG START BELOW
func application(_ application: UIApplication, continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
print("------------- >>>> userActivity <<<<-----------------")
let handled = DynamicLinks.dynamicLinks().handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
if error != nil
{
print("[DYNAMIC LINK] error is \(String(describing: error))")
}else
if dynamiclink?.url != nil ,
let theUrl:String = dynamiclink?.url?.absoluteString
{
print("[DYNAMIC][LINK] Dynamic link found \(theUrl)")
}
}
return handled
}
func application(_ application: UIApplication, open url: URL, sourceApplication: String?,
annotation: Any) -> Bool {
print("------------- >>>> sourceApplication <<<<-----------------")
if let _ = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) {
let _ = DynamicLinks.dynamicLinks().handleUniversalLink(url) { dynamiclink, error in
if error != nil
{
print("[DYNAMIC LINK] error is \(String(describing: error))")
}else
if dynamiclink?.url != nil ,
let theUrl:String = dynamiclink?.url?.absoluteString
{
print("[DYNAMIC][LINK] Dynamic link found \(theUrl)")
}
}
return true
}
return false
}
知道为什么吗?
解决方案
推荐阅读
- clojure - 如何从多方法中调用默认多方法
- java - 通过递归创建有效路径的完整列表
- apache-kafka-connect - Setting default value on a Kafka Connect Struct Schema
- java - `checkstyle-suppressions.xml` 的位置?
- python - python烧瓶如何显示图像
- scala - 在 Scala 中,需要将可能为 null 的值与可能为“null”的搜索字符串进行比较
- entity - D8 如何在 field--entity-reference.html.twig 文件的词汇术语中检索自定义字段的值?
- .net - Windows 事件日志中引用的“框架版本”是什么?
- r - 为另一个变量的每个 id 创建一个等于最后一个非 NA 值的变量
- ms-word - 将页脚添加到具有包含空格的列标题的 flextable 对象