gpt4 book ai didi

swift - 如何实现 swift3 函数并完成等待被动函数调用?喜欢 Facebook sdk

转载 作者:行者123 更新时间:2023-11-30 12:35:26 24 4
gpt4 key购买 nike

我想实现一个像 facebook 登录 api 这样的 swift3 功能。这是facebook的示例代码:( https://developers.facebook.com/docs/swift/login )

@objc func loginButtonClicked() {
let loginManager = LoginManager()
loginManager.logIn([ .PublicProfile ], viewController: self) { loginResult in
switch loginResult {
case .Failed(let error):
print(error)
case .Cancelled:
print("User cancelled login.")
case .Success(let grantedPermissions, let declinedPermissions, let accessToken):
print("Logged in!")
}
}

请参阅函数“loginManager.logIn”在完成 block 中返回“loginResult”。并且登录结果应该是在Appdelegate中oauth调用sdk函数之后创建的

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

return FBSDKApplicationDelegate.sharedInstance().application(
app,
open: url as URL!,
sourceApplication:
options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String,
annotation: options[UIApplicationOpenURLOptionsKey.annotation]
)
}

public func application(_ application: UIApplication, open url: URL,
sourceApplication: String?, annotation: Any) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(
application,
open: url as URL!,
sourceApplication: sourceApplication,
annotation: annotation)
}

我尝试在函数中使用 DispatchSemaphore 来等待结果。但它阻塞了我的主线程并使我的 SafariViewController 卡住。有没有更好的解决方案来实现像facebook这样的swift3功能?

非常感谢

最佳答案

我使用 DispatchGroup 来解决我的问题。我在登录函数中调用 dispatchGroup.enter() 。并将onSuccess()放入dispatchGroup.notify中。并在Appdelegate中调用的另一个函数中调用dispatchGroup.leave()。

关于swift - 如何实现 swift3 函数并完成等待被动函数调用?喜欢 Facebook sdk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42942331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com