Hi I\'m making ios app using UniversalLink.
Universal Link works fine, but callback method is not called.
My AppDelegate.swift is below.
In my case, I started a brand new project on Xcode 11 which uses SceneDelegate
as well as AppDelegate
Looks like UniversalLinks (and probably several other APIs) use this callback on the SceneDelegate
:
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) { }
Instead of this callback on the AppDelegate
:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { }
Once I implemented the one on SceneDelegate
everything started working as expected again. I haven't tried it, but I'm assuming that if you are targeting iOS 12 and below, you might need to implement both methods.
Hope this helps
I had a similar issue with SceneDelegate
and universal links where I could not get to NSUserActivity when the app was just launched (in this case Background NFC reading in ios 13).
As mentioned in the answer by @Jan, continue userActivity is now in the SceneDelegate
.
If the app is running or in the background ie. closed, a universal link will fire the scene(_:continue:)
delegate.
If the app is not in the background, a universal link won't fire up from the scene(_:continue:)
delegate. Instead, the NSUserActivity
will be available from scene(_:willConnectTo:options:)
.
eg.
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
if let userActivity = connectionOptions.userActivities.first {
debugPrint("got user activity")
}
}