对info.plist中定义的Deep-link没有反应

时间:2018-01-06 09:34:39

标签: ios deep-linking url-scheme deeplink

我在 info.plist 中定义了深层链接,如下所示:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>com.myapp.customer</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>myapp.com</string>
        </array>
    </dict>
</array>

但在Safari中,此链接没有任何反应,此消息显示:

  

Safari无法打开页面,因为无法找到服务器

所有东西都经过检查,我做了教程,但仍然没有发生任何事情!

2 个答案:

答案 0 :(得分:2)

CFBundleURLSchemes字段应填充方案,而不是网址。方案在url之前告诉浏览器要采取什么操作。例如,https://是一种告诉浏览器建立安全连接的方案。 Apple URI方案只是告诉浏览器您希望自定义方案(即customScheme://)的网址由您的应用处理。 HTTP和HTTPS是为iOS上的Safari保留的。允许customScheme://example/path打开您的应用。只需将该字段更改为customScheme即可。

如果您想注册普通网址来处理链接,则必须整合Universal Links。这些可能很难设置,所以我建议使用Branch iOS SDK。它们的深层链接是免费的,并且在Universal Links之上提供了更多功能。

答案 1 :(得分:0)

确保在AppDelegate.Swift中有此方法

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


     if url.scheme != nil && url.scheme!.hasPrefix(""){
        //Deep linking link should be like this : 'yourAppScheme'
        if(url.host?.contains("page"))!{
            if(url.path.contains("/yourhoststring")){
                // do some work
            }
        }

    }


    //default
    return false
}

您的网址方案应如下所示: [方案]:// [主机] / [路径]

以下是详细教程的链接: http://blog.originate.com/blog/2014/04/22/deeplinking-in-ios/