【发布时间】:2016-08-08 21:56:44
【问题描述】:
我正在尝试在我的应用中实现通用链接。我阅读了很多教程,并按照这封信: 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,它给出了这样的结果:
应用链接
需要操作
无法提取通用链接所需的信息。了解如何实施推荐的通用链接。
错误没有具有域权利的应用程序 用于验证深度链接双重身份验证的权利数据来自您应用的当前发布版本。此数据可能需要 48 小时才能更新。
我不知道这是否与我的问题有关。我不这么认为,因为我需要测试我的应用程序以确保在实际发布更新之前正确实施了通用链接。
【问题讨论】:
-
自从您的应用程序打开以来,您已经解决了 99% 的通用链接常见问题。您无需担心来自 Apple 验证工具的消息——我几乎从未见过它不存在,而且它存在于许多完美运行的实现中。您使用什么方法来确定
continueUserActivity处理程序没有被调用? -
我在第一行放了一个 ALog 语句,它永远不会被打印出来。我确实发现
application:openURL:sourceApplication:annotation被调用了,但又不知道为什么。根据文档application:continueUserActivity:restorationHandler应该被调用。 -
嗯。您是在物理设备而不是模拟器上测试它,对吗?我们可能需要看一个实际的链接示例
-
链接格式为
mydomain://phase1/phase2?key1=var1&key2=var2#hash。我目前的解决方法是只使用application:openURL:sourceApplication:annotation,但我仍然想知道为什么会触发而application:continueUserActivity:restorationHandler不会。 -
@primehalo 如果你在你的应用中实现了 Google Analytics 和 Localytics,你可能想看看这个 git 问题:github.com/BranchMetrics/ios-branch-deep-linking/issues/485
标签: ios objective-c ios-universal-links