nik*_*nci 6 ios swift ios13 uiscenedelegate
我正在尝试通过通用链接点击处理打开的应用程序。在 ios 13 以下,它运行良好,但对于 ios 13,它只能在后台运行应用程序。如果应用程序不在前台或后台工作,单击链接将打开未调用的应用程序继续 userActivity功能。我还尝试在场景委托 willconnnect 中获取它以进行委托。但仍然没有调用我的代码下面有什么问题?
场景代表
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let _ = (scene as? UIWindowScene) else { return }
if connectionOptions.userActivities.first != nil {
self.scene(scene, continue: userActivity!)
}
}
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
continueUserActivity(userActivity: userActivity)
}
func continueUserActivity(userActivity : NSUserActivity){
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let url = userActivity.webpageURL!
let dataDict:[String: String] = [AppLinkManager.appLinkExtraKey: url.absoluteString]
NotificationCenter.default.post(name: .didReceiveAppLink, object: nil, userInfo: dataDict)
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序委托
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
if let userActivityDict = launchOptions?[.userActivityDictionary] as? [AnyHashable : Any],
let userActivity = userActivityDict["UIApplicationLaunchOptionsUserActivityKey"] as? NSUserActivity {
continueUserActivity(userActivity: userActivity)
}
return true
}
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
continueUserActivity(userActivity: userActivity)
return true
}
func continueUserActivity(userActivity : NSUserActivity){
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let url = userActivity.webpageURL!
let dataDict:[String: String] = [AppLinkManager.appLinkExtraKey: url.absoluteString]
NotificationCenter.default.post(name: .didReceiveAppLink, object: nil, userInfo: dataDict)
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您是否尝试过continue userActivity在以下位置实现功能SceneDelegate:
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) { }
Run Code Online (Sandbox Code Playgroud)
我在使用 Firebase DynamicLink 时遇到了同样的问题,看起来 UniversalLinks(可能还有其他几个 API)在SceneDelegate.
因此,如果您的目标是 iOS 13 及更低版本,请尝试同时实现SceneDelegate和AppDelegate
| 归档时间: |
|
| 查看次数: |
1387 次 |
| 最近记录: |