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

Posted

技术标签:

【中文标题】从 facebook 重定向到 ios 应用程序 - 深层链接【英文标题】:Redirect from facebook to ios app - deep link 【发布时间】:2016-11-22 05:34:32 【问题描述】:

我无法从 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 应用程序单击该帖子时,它会导航一个打开,作为另一个网页,该网页在底部包含一个工具栏并有一个按钮,它显示 3 个选项。其中之一是“在 myapp 中打开”

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

应用名称是否必须与我在info.plist 中指定的名称和meta_property 中指定的名称完全相同?还是有其他错误?

【问题讨论】:

找到解决方案了吗? @AlizainPrasla 实际上后来,我们将其保持在基本级别,我们只是用来打开应用程序而不是进入特定屏幕。 您的应用如何从 facebook 重定向?我有问题。由于 facebook 正在使用 webview。它没有重定向到我的应用程序。有什么解决办法吗? 不确定,但类似于 1. 在您的信息列表中添加 URL 方案。 2. 在您的网页帖子中添加元标记。 3. 在 Facebook 帐户中添加一些密钥。我不记得了,因为我不再工作了。 谢谢。就我而言。 developers.facebook.com/tools/debug/sharing 帮我检查正确的元标记。正如我正在测试的那样,很少有元需要该元的更多细节。如果你不提供。 Facebook 不会在您的应用上重定向 【参考方案1】:

这是预期行为

很遗憾,目前无法从 iOS Facebook 应用程序中直接启动第三方应用程序。这是一个known issue,Facebook 基本上已将其注销为wontfix。这在 android 的 Facebook 应用程序中仍然是可能的,但不幸的是,他们没有对 iOS 版本的更改更加透明,因为对此存在相当多的困惑。

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

但你可以解决它

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

分支链接路由逻辑

【讨论】:

谢谢亚历克斯。将检查分支【参考方案2】:

我认为你没有添加 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];

    

\ 希望对你有帮助

【讨论】:

不,它已经在 plist 中了。 检查更新答案 添加了 URL 类型。根据您的屏幕截图, & 还包含标识符和 URL 方案的值。 (根据我提到的 info.plist 内容) 检查两次,您可能错过了某些步骤。这是重定向到 facebook 的唯一方法,反之亦然

以上是关于从 facebook 重定向到 ios 应用程序 - 深层链接的主要内容,如果未能解决你的问题,请参考以下文章

iOS 上新的 facebook 登录重定向流程

facebook iOS SDK 授权,无需重定向到 safari

iOS Facebook SDK 3.0 登录未重定向到原始应用程序

Facebook iOS 9 SDK 登录重定向到 Safari 上的 mbasic.facebook.com

成功登录 Facebook 后将 iOS 应用程序重定向到特定的视图控制器或 url

获得权限后的 Facebook 登录让 Safari 空白页面打开,而不是在 iOS 10 和 iOS 11 中重定向到我的应用