ios - 为 Facebook iOS SDK V4.1 处理 App Links 的冷启动

标签 ios facebook applinks

这是在AppDelegate中实现的

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}

我有 App Link,其中包含一些在 Facebook 上共享的参数。如果我的应用程序最小化,单击 Facebook 上的链接会打开我的应用程序并调用函数

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool

就像它应该发生的那样。

问题 是如果我的应用程序被终止(不是最小化)点击 Facebook 上的链接打开我的应用程序但函数没有被调用所以我无法处理输入参数。

我在 Facebook 文档中找到了一些关于处理冷启动的信息,但该信息已过时。

我是否遗漏了一些需要实现的东西,或者这是 Facebook 的错误?

最佳答案

这件事让我困惑了一段时间......

当您打开一个应用程序链接并且该应用程序当前未运行时,该应用程序将启动并首先调用 application:didFinishLaunchingWithOptions。如果您在此方法中返回 true,那么它将随后调用 application:openURL:sourceApplication:annotation: 并传入适当的参数。但是,如果 application:didFinishLaunchingWithOptions 返回 false,则永远不会调用 application:openURL:sourceApplication:annotation:

如果你使用的是FBSDK,那么你会调用

return FBSDKApplicationDelegate.sharedInstance().application(application,
didFinishLaunchingWithOptions: launchOptions)

application:didFinishLaunchingWithOptions 的末尾。如果您查看他们的文档,它会声明它会返回

YES if the url was intended for the Facebook SDK, NO if not.

因此,由于您的应用链接不适用于 FBSDK,因此它返回 false。但是,键 UIApplicationLaunchOptionsURLKeyUIApplicationLaunchOptionsSourceApplicationKey 在您的 launchOptions 中可用。在您的 application:didFinishLaunchingWithOptions 中,如果您调用

if let url = launchOptions?[UIApplicationLaunchOptionsURLKey] as? NSURL,
  sourceApplication = launchOptions?[UIApplicationLaunchOptionsSourceApplicationKey] as? String {      
   self.application(application, openURL: url, sourceApplication: sourceApplication, annotation: nil) 
}

然后你就可以绕过它了。我不确定您是否应该手动调用 AppDelegate 方法,但这对我有用。

关于ios - 为 Facebook iOS SDK V4.1 处理 App Links 的冷启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30235867/

相关文章:

ios - UIImagePickerController AllowsEditing 不工作

facebook - 使用 swift SDK 将视频发布到 Facebook

android - 为移动应用程序创建深层链接

facebook - 无法从 Facebook 应用内浏览器 iOS 9 打开我的应用

ios - Xcode 8 无法运行我的应用程序

CocoaPods Google Maps SDK 上的 iOS 单元测试失败

ios - 将角色从特定位置移到最后(速记3)

android - 位图到 Android Facebook 用户的个人资料图片

javascript - Facebook AdPreview 未呈现

Android M 应用链接验证失败