我按照here的说明进行了操作,但由于指令是在Objective C中,而我的AppDelegate文件是用Swift编写的,所以我无法通过连接app delegate来获得第5步。
我试过了:
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代码可能有问题。
答案 0 :(得分:0)
在你的函数中你有参数选项的类型是(UIApplicationOpenURLOptionsKey & id)
它不存在你应该在Swift中查找它的等价物application(_:open:options:),你可以看到{{3}是一个包含多个元素的字典,以正确使用FB sdk,您必须使用与选项注释和选项源应用程序对应的键,以便您可以正确使用它。
所以回答你的问题应该改变下面的第二个功能。让我知道它是怎么回事。
func application(_ app: UIApplication,
open url: URL,
options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool{
let handled: Bool = FBSDKApplicationDelegate.sharedInstance().application(application, 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(application, openURL: url, sourceApplication: options[.sourceApplication], annotation: options[.annotation])
}