我正在尝试通过从 Xcode 运行应用程序剪辑来测试我的应用程序剪辑的 url 处理程序。然而,URL 方法处理程序(SceneDelegate
的continue
方法)永远不会被调用,这与 Apple 的文档文档相反,其中指出:
对于支持基于场景的应用程序生命周期事件的基于 UIKit 的应用程序剪辑和完整应用程序,请实现 UISceneDelegate 中定义的回调。例如,实现 scene(_:continue:) 回调来访问用户活动对象。
对于响应基于应用程序生命周期事件的基于 UIKit 的应用程序剪辑和完整应用程序,请实现 UIApplicationDelegate 中定义的回调。请务必实现 application( :continue:restorationHandler:) 回调,因为您无权访问 application( :didFinishLaunchingWithOptions:) 中的 NSUserActivity 对象。
- 应用程序委托未实现该
application(_:continue:restorationHandler:)
方法 - 应用剪辑的方案启用了 _XCApplClipURL 参数并设置为
https://fruits.com/check?fruit_name=bananas
- 应用剪辑的
Associated Domain
列表appclips:fruits.com
- 应用剪辑
SceneDelegate
如下
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
// UGHH!!! Never gets called
print("AppClip invocation url is : \(incomingURL)")
}
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// OK!! This gets called
guard let _ = (scene as? UIWindowScene) else { return }
}
}
在过去的两天里,我一直在用头撞墙。我错过了什么?
注意:我正在使用github 中提供的这个示例应用程序,只是修改了签名配置以使应用程序剪辑能够编译和运行。