我正在尝试在我的应用中实施通用链接。我阅读了很多教程,然后按照这一篇: How to support Universal Links in iOS App and setup server for it?
当我点击通用链接时,我的应用程序已成功打开,但我的AppDelegate.m文件中的application:continueUserActivity:restorationHandler
未被调用,因此无法指向应用中的特定页面。
我的apple-app-site-association
文件位于https上,而我放置[ "*", "/" ]
的路径。我三重检查了应用前缀和ID,确认了在开发者网站和我的目标中启用了AssociatedDomains。在Associated Domains部分中,我将我的根域以及第二个条目添加到*之前。处理所有可能的子域。我在真实设备上测试,而不是在模拟器上测试。
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
ALog(@"Did I get here?");
}
任何人都可以提供有关我应该查看的内容的建议,以找出未调用application:continueUserActivity:restorationHandler
的原因吗?
更新
我使用了Apple的验证工具https://search.developer.apple.com/appsearch-validation-tool,它给出了这个结果:
链接到应用程序
需要采取行动
无法提取Universal Links所需的信息。了解如何实施推荐的通用链接。
错误没有具有域权利的应用 用于验证深层链接双重身份验证的授权数据来自您当前发布的应用版本。此数据可能需要48小时才能更新。
我不知道这与我的问题有什么关系。我不这么认为,因为我需要测试我的应用程序,以确保在实际发布更新之前已正确实施Universal Links。
答案 0 :(得分:0)
如果应用中使用了Google Analytics(分析)或某些Firebase功能,则可能是由于方法混乱引起的。在application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?)
中添加以下方法为我解决了这个问题。我认为禁用禁用方法也可以。
private func swizzleSelectors() {
let aClass: AnyClass! = object_getClass(UIApplication.shared.delegate)
let originalMethod = class_getInstanceMethod(aClass, #selector(self.application(_:continue:restorationHandler:)))
let swizzledMethod = class_getInstanceMethod(aClass, #selector(UIApplication.shared.delegate!.application(_:continue:restorationHandler:)))
if let originalMethod = originalMethod, let swizzledMethod = swizzledMethod {
method_exchangeImplementations(originalMethod, swizzledMethod)
}
}