ios - ios 13 中未调用 application(...continue userActivity...) 方法
问题描述
嗨,我正在使用 UniversalLink 制作 ios 应用程序。
通用链接工作正常,但未调用回调方法。
我的 AppDelegate.swift 在下面。
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
func application(_ application: UIApplication,
willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
return true
}
// this method not called!!
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
print("called")
return true
}
}
该方法在 iOS 12 模拟器中调用。
因此,该问题仅在 iOS 13 中出现。
仅在 iOS13 中,此错误会在控制台中打印。
无法结束 BackgroundTask:不存在标识符为 1 (0x1) 的后台任务,或者它可能已经结束。中断 UIApplicationEndBackgroundTaskError() 进行调试。
所以,这可能是问题的原因。
我真的很感谢有人帮助
解决方案
我有一个类似的问题SceneDelegate
和通用链接,当应用程序刚刚启动时我无法访问 NSUserActivity(在这种情况下,iOS 13 中的背景 NFC 读取)。
正如@Jan 的回答中提到的,继续 userActivity 现在位于SceneDelegate
.
如果应用程序正在运行或在后台运行,即。关闭,通用链接将触发scene(_:continue:)
委托。
如果应用程序不在后台,则不会从scene(_:continue:)
委托中启动通用链接。相反,NSUserActivity
将从scene(_:willConnectTo:options:)
. 例如。
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
if let userActivity = connectionOptions.userActivities.first {
debugPrint("got user activity")
}
}
推荐阅读
- haskell - Vigenere Cipher 未正确编码
- azure - 如何从 Azure 数据工厂的 blob 存储中解压缩 .gz 文件?
- react-native - 使用 Lottie 的 React Native Flatlist 自定义刷新控件出现故障
- arrays - 在数组及其索引中找到最小值 - 完全是初学者,因此非常感谢任何帮助
- .net - 在 .net framework WCF 中引用 .net core dll
- linux - 将 Go 应用程序从 Windows 编译到 Linux 时出现问题
- mysql - HSQLDB 是否支持 MySQL 兼容模式下枚举的默认值?
- python - Plotly:条形图不透明度随时间范围的变化而变化
- powershell - 从 Azure DevOps powershell 任务调用 sqlcmd 失败
- c# - C#如何使用AutoMapper将内部属性对象映射到外部类?