问题描述
我试图通过从Xcode运行应用程序剪辑来测试应用程序剪辑的url处理程序。但是,从未调用URL方法处理程序(SceneDelegate
的{{1}}方法),这与Apple的文档documentation相反,该文档指出:
对于基于UIKit的应用剪辑和支持基于场景的应用的完整应用 生命周期事件,实现UISceneDelegate中定义的回调。 例如,实现scene(_:continue :)回调以访问用户 活动对象。
对于基于UIKit的应用剪辑和完整的响应应用 对于基于应用程序的生命周期事件,请实现在中定义的回调 UIApplicationDelegate。确保实施 application(:continue:restorationHandler :)回调,因为您 无权访问中的NSUserActivity对象 应用程序(:didFinishLaunchingWithOptions:)。
- 应用程序委托未实现
continue
方法 - 该应用剪辑的方案已启用_XCApplClipURL参数并将其设置为
application(_:continue:restorationHandler:)
- 该应用剪辑的
https://fruits.com/check?fruit_name=bananas
列表Associated Domain
- 应用剪辑的
appclips:fruits.com
如下
SceneDelegate
在过去的两天里,我一直在敲墙。我想念什么?
注意:我正在使用此sample app available in github,只是修改了签名配置以使应用剪辑可以编译和运行。
解决方法
上述continue
方法仅在您的应用程序先前打开后被调用时才调用。为了在您的应用首次启动时获得在_XCApplClipURL
中设置的值,您需要使用您提到的第二种方法(scene willConnectTo session
)。
您可以尝试以下操作:
if let activity = connectionOptions.userActivities.filter({ $0.activityType == NSUserActivityTypeBrowsingWeb }).first {
if let url = activity.webpageURL {
print("incoming URL: \(url)")
}
}
,
感谢您使用AppsFlyer的App Clip公开演示,并重点介绍了此问题。我真的很感激。
我可以确认您做的很棒,此功能在Beta 5之后的某个时候就被破坏了。
请关注here这个问题并对其发表评论