从Facebook重定向到ios应用程序 - 深层链接

时间:2016-11-22 05:34:33

标签: ios facebook deep-linking

我无法从facebook帖子重定向到我的iOS应用。当我点击该帖子时,它会以网页形式打开(不知何故为iOS标识标签并且不会重定向到应用程序)。不确定它是ios应用程序或HTML内容还是其他一些问题。

Myapppp.plist内容:

<key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLName</key>
            <string>com.myapp.xyzxyz</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>myapp</string>
            </array>
        </dict>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>fb123XXX123</string>
            </array>
        </dict>
    </array>



AppName: Myapp (As per plist)



<html lang="en">
  <head>
     <meta property="al:ios:url"                content="myapp://blahblah"/>
     <meta property="al:ios:app_store_id"   content="1234567"/>
     <meta property="al:ios:app_name"       content="Myapp blah blah"/>
</head>

当我从safari中执行“myapp://”时,它会将我带到我的应用程序,我也尝试手动打开“myapp://blahblah”,这也会将我带到应用程序。因此,我认为我的应用程序具有有效的链接。

当我从Facebook应用程序点击该帖子时,它会导航打开另一个网页,该网页底部包含一个工具栏,其上有一个按钮&amp;它显示了3个选项。其中一个是“在myapp中打开”

如果我尝试从Facebook应用程序中打开一些其他应用程序(例如Instagaram帖子),它们也可以正常工作。

应用名称是否必须与我在info.plistmeta_property中指定的名称相同?或者还有其他错误吗?

2 个答案:

答案 0 :(得分:1)

这是预期的行为

很遗憾,目前无法从iOS Facebook应用中直接启动第三方应用。这是Facebook基本上以wontfix注销的known issue。这仍然可以在Android Facebook应用程序中使用,但不幸的是他们对iOS版本的更改更加透明,因为它有很多混乱。

Instagram是一个特例,因为它是一个Facebook拥有的应用程序,并得到不同的待遇。

但你可以解决它

Branch.io等服务(完全披露:我在团队中)通过实施App Links,URI方案和iOS Universal Links的明智组合来解决这个问题。基本上你需要做的是在webview中打开一个页面,然后有一个按钮或其他用户驱动的CTA事件,从那里启动应用程序。这对用户来说是一个额外的步骤,但目前是最好的解决方法。如果您只是希望能够在安装时发布进入应用程序的链接,或者转到网页(或应用程序/ Play商店),那么分支链接绝对是您最简单的解决方案。

分支链接路由逻辑

Branch link routing logic

答案 1 :(得分:0)

我认为您尚未添加 LSApplicationQueriesSchemes

<key>LSApplicationQueriesSchemes</key>
    <array>
        <string>fbapi</string>
        <string>fb-messenger-api</string>
        <string>fbauth2</string>
        <string>fbshareextension</string>

在你的plist中添加它。

- (BOOL)application: (UIApplication *)application
            openURL: (NSURL *)url
  sourceApplication: (NSString *)sourceApplication
         annotation: (id)annotation
{

    if ([url.scheme isEqualToString:@"Your Url Sceme"])

    {
        return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                              openURL:url
                                                    sourceApplication:sourceApplication
                                                           annotation:annotation];

    }

}

\ enter image description here 希望它会有所帮助