我们可以在没有Apple-app-site-association(AASA)的情况下测试iOS Universal Links / Deep Links吗?

时间:2017-11-09 07:18:37

标签: deep-linking ios-universal-links

我已经在我的应用程序中实现了通用链接,但由于理由,AASA文件暂时不会上传到服务器上。

3 个答案:

答案 0 :(得分:1)

不,您必须在服务器上使用您的软件包ID和团队ID上传“apple-app-site-association”。没有它你不能测试。此外,您无法使用其他人的“apple-app-site-association”文件对其进行测试,因为它的团队ID和包ID将不同。

您可以在heroku服务器上上传您的AASA文件以进行测试。

答案 1 :(得分:1)

Apple似乎不支持此功能。

但是,您可以直接在程序中的任何位置直接调用委托方法。

NSUserActivity *activity = [[NSUserActivity alloc] initWithActivityType:NSUserActivityTypeBrowsingWeb];
activity.webpageURL = [NSURL URLWithString:@"https://<your-domain.com>/route"];

[UIApplication.sharedApplication.delegate application: UIApplication.sharedApplication continueUserActivity:activity restorationHandler:^(id restorableObjects) {

}];

答案 2 :(得分:-1)

是的,你真的可以!

您可以通过从终端调用此函数来测试应用程序对深层链接的响应,而无需实际实现远程端:

$ xcrun simctl openurl booted 'YOUR_LINK_HERE'

这会在您应用的appDelegate中触发以下回调:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool

...这正是您应该从深层链接中获得的行为。

只是不要忘记实际上有模拟器; - )

至于通用链接 - appDelegate回调略有不同,但它是一个非常小的心理跳跃:

func application(_ app: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
    if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
        if let url = userActivity.webpageURL {
            // parse the url and decide how to handle the universal link

        }
    }
    return true
}