如何在反应原生应用程序中安装 facebook sdk?

Posted

技术标签:

【中文标题】如何在反应原生应用程序中安装 facebook sdk?【英文标题】:How do I install the facebook sdk in a react native application? 【发布时间】:2017-05-10 22:47:16 【问题描述】:

我遵循了here 的说明,但我无法通过第 5 步连接应用程序委托来工作,因为说明是用 Objective C 编写的,而我的 AppDelegate 文件是用 Swift 编写的。

我试过了:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 
    FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
    // Add any custom logic here.
    return true


func application(_ application: UIApplication, open url: URL, options: (UIApplicationOpenURLOptionsKey & id)) -> Bool 
    let handled: Bool = FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey], annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
    // Add any custom logic here.
    return handled

产生此构建错误的原因:

The following build commands failed:
    CompileSwift normal x86_64 /Users/kevinchiang/jh-mobile/ios/JustHive/Appdelegate.swift
    CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler
(2 failures)

我不熟悉 Swift 和 Obj-C,所以我认为我的 Swift 代码可能有问题。

【问题讨论】:

你的第二个函数是错误的。我认为您想使用此方法application(_:open:options:) 而不是您那里的方法。让我知道它是否有效 你能告诉我你的意思吗?我试过 func application(_ application: UIApplication, _:open:options: (UIApplicationOpenURLOptionsKey & id)) 但它没有用 我的回答对你有帮助吗??如果它确实将其标记为正确的 ty。 【参考方案1】:

在你的函数中,你知道参数选项的类型是 (UIApplicationOpenURLOptionsKey & id) 它不存在你应该在 Swift 中寻找它的等价物,这是一个 application(_:open:options:),你可以看到 options 是一本字典包含多个元素才能正确使用 FB sdk 您必须使用与选项注释和选项源应用程序对应的键才能正确使用它。

因此,回答您的问题应该将您的第二个功能更改为以下功能。告诉我进展如何。

func application(_ app: UIApplication, 
              open url: URL, 
               options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool 
    let handled: Bool = FBSDKApplicationDelegate.sharedInstance().application(applic‌​ation, openURL: url, sourceApplication: options[.sourceApplication], annotation: options[.annotation])
    return handled 

您还可以简化上面的代码,删除变量句柄,它看起来像这样。

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

    return FBSDKApplicationDelegate.sharedInstance().application(applic‌​ation, openURL: url, sourceApplication: options[.sourceApplication], annotation: options[.annotation])


【讨论】:

以上是关于如何在反应原生应用程序中安装 facebook sdk?的主要内容,如果未能解决你的问题,请参考以下文章

当设备中安装了 FB Native App 时,无法使用 Facebook ios sdk v3 进行授权

在 Flutter 中安装原生 iOS pod

如何在多行反应原生 textInput 中包装文本

如何查找 iPhone 中安装的应用程序

在 javascript/Angular JS 中安装并打开 Android /ios 原生应用程序

Facebook无法在Flutter中使用安装Facebook应用程序登录