从 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 应用程序 - 深层链接的主要内容,如果未能解决你的问题,请参考以下文章
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 中重定向到我的应用