使用 swift 从 Facebook SDK GraphRequest 获取进度
Posted
技术标签:
【中文标题】使用 swift 从 Facebook SDK GraphRequest 获取进度【英文标题】:Get progress from Facebook SDK GraphRequest with swift 【发布时间】:2016-07-20 13:29:00 【问题描述】:我用这段代码上传了一张图片:
FBSDKGraphRequest(graphpath: "me/photos", parameters: params as [NSObject : AnyObject], HTTPMethod: "POST").startWithCompletionHandler( (connection, result, error) -> Void in
if (error != nil)
print ("failed")
else
print ("success")
)
到目前为止它工作正常,但上传可能需要一段时间,我想通知用户当前的进度。有什么办法可以得到目前的进展吗?正如我在 SDK 文档中看到的那样,有一个 FBSDKGraphRequestConnection
提供了一个 FBSDKGraphRequestConnectionDelegate
和 requestConnection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:
中的进度内容,但我无法理解如何在我的一小段代码中实现这些内容。有人可以帮忙吗?
【问题讨论】:
【参考方案1】:我其他人也有同样的问题……谷歌找不到任何用 swift 编写的东西。这是我的工作解决方案:
1) 从NSObject
和FBSDKGraphRequestConnectionDelegate
派生您的课程
2) 像这样编写您的上传过程:
let uploadRequest = FBSDKGraphRequest(graphPath: "me/photos", parameters: params as [NSObject : AnyObject], HTTPMethod: "POST")
let connection = FBSDKGraphRequestConnection()
connection.delegate = self
connection.addRequest(uploadRequest, completionHandler:
(connection, result, error) -> Void in
if (error != nil)
// error handling
else
// success handling
)
connection.start()
3) 像这样在你的类中实现委托:
func requestConnection(connection:FBSDKGraphRequestConnection, didSendBodyData bytesWritten:NSInteger, totalBytesWritten:NSInteger, totalBytesExpectedToWrite:NSInteger)
print("upload percent reached: " + String(Double(totalBytesWritten) / Double(totalBytesExpectedToWrite)))
// handle your UI here to show the current status
【讨论】:
以上是关于使用 swift 从 Facebook SDK GraphRequest 获取进度的主要内容,如果未能解决你的问题,请参考以下文章
我如何从 facebook 公开资料 Facebook IOS Swift SDK 中获取性别
无法从 Swift 中的 Facebook iOS SDK 捕获城市和国家/地区值