ios - Firebase 动态链接在应用启动时不起作用
问题描述
我创建了一个dynamic link
单击时打开应用程序的应用程序。该链接还包含打开特定页面的键。这是我的代码:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
return self.handleFirebaseDynamicLink(userActivity: userActivity)
}
这在应用程序在后台运行时有效。但是我还需要动态链接来检查URL
并在第一次启动时打开指定的页面。我能做些什么来解决这个问题?
我在这里找到了一个可接受的答案:Firebase Dynamic Link not working if app is CLOSED 但不幸的是,我不明白这是什么意思,我无法评论这个答案。
解决方案
你只从这里调用你的handleFirebaseDynamicLink
方法就是问题所在。application(_:continue:restorationHandler:)
来自苹果文档:
应用程序(_:继续:恢复处理程序:)
应用程序在收到与用户活动相关的数据时调用此方法。使用存储在 NSUserActivity 对象中的数据来重新创建用户的活动。此方法是您更新应用程序以便它可以执行相关任务的机会。
因此,仅当您的Suspended
应用Active
因为NSUserActivity
. 如果要在应用程序启动时处理数据,则需要使用另一种方法,即在您的应用程序Active
从Not running
. 这就是application(_:didFinishLaunchingWithOptions:)
方法。在这里,您可以阅读有关应用程序生命周期的更多信息。
来自苹果文档:
应用程序(_:didFinishLaunchingWithOptions:)
使用此方法完成应用程序的初始化并进行任何最终调整。此方法在状态恢复发生后但在您的应用程序的窗口和其他 UI 呈现之前调用。
这就是您提供的答案中所说的。您需要做的就是使用此方法处理初始数据AppDelegate
。您可以使用以下代码NSUserActivity
从中提取。launchOptions
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let activityKey = NSString(string: "UIApplicationLaunchOptionsUserActivityKey")
if let userActivityDict = launchOptions?[.userActivityDictionary] as? [NSObject : AnyObject],
let userActivity = userActivityDict[key] as? NSUserActivity {
return self.handleFirebaseDynamicLink(userActivity: userActivity)
}
return true
}
希望它可以帮助你。
推荐阅读
- javascript - Flutter移动平台如何使用html、javascript代码?
- r - 绘制乘以因子 k 的拟合线性回归
- signal-processing - 具有实到实函数的逆离散傅里叶变换
- c# - ASP.NET MVC EF Core,视图中的属性访问,同时在不同模型的选定 ID 上
- google-maps - 如何在谷歌地图颤动中获取当前相机位置latlng
- android - 安卓wordpress自动fcm通知收不到
- javascript - JavaScript 动态加载脚本文件以创建一个对象,然后在该对象上运行 .init()
- wordpress - 自定义帖子类型的多个用户角色
- sql - 更改 SQL 中列的显示顺序
- next.js - Nextjs 和工作箱集成