2017-05-10 173 views
1

我按照指示here,但我无法获得第5步与连接应用程序委托工作,因为指令是在Objective C中,而我的AppDelegate文件是用Swift编写的。如何在反应原生应用程序中安装facebook sdk?

我尝试这样做:

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) 

我不熟悉的雨燕的OBJ-C,所以我想有可能是我的SWIFT代码不对劲。

+0

你的第二个功能是错误的。我想你想使用这个方法[应用程序(_:open:options:)](https://developer.apple.com/reference/uikit/uiapplicationdelegate/1623112-application)而不是你在那里的那个。让我知道它是否有效 –

+0

你能告诉我你的意思吗?我尝试过func应用程序(_ application:UIApplication,_:open:options:(UIApplicationOpenURLOptionsKey&id)),它没有工作 –

+0

我的回答是否帮助你?如果它确实标记为正确的话。 –

回答

0

在你的功能,你有这样的参数选项类型为(UIApplicationOpenURLOptionsKey & id)其中它不存在,你应该找等值的雨燕是这一个application(_:open:options:)你可以看到options是一个包含多个元素的字典正确使用FB sdk您必须使用与选项注释和选项源应用程序相对应的键,以便您可以正确使用它。

因此,回答你的问题应该会改变你的第二个func。让我知道事情的后续。

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]) 

} 
相关问题