允许您的应用程序在由于网络连接问题而失败的HTTP请求上无声处理,并且停止骚扰用户重复发送。
要运行示例项目,请克隆仓库,并首先从示例目录运行pod install
。
当POST请求由于网络问题或其他错误而无法发送时,您可能希望使用下面的方法来保存它的参数
EVSendLater.sharedManager.saveForLater(url, params: params)
这将把参数保存到一个NSDictionary中,您必须使用下面的方式来持久化它
EVSendLater.sharedManager.synchronizeSaves()
// (similar to NSUserDefaults)
理想情况下,这应该在应用程序退出之前调用 为了自动保存每个更改,请使用EVSendLater.sharedManager.saveImmediately = true
Alamofire.request(.POST, url, parameters: params).responseJSON { (request, response, result) -> Void in
if result.isFailure{
EVSendLater.sharedManager.saveForLater(url, params: params)
EVSendLater.sharedManager.synchronizeSaves()
}
}
注意:不应保存所有失败。如果您只想保存离线发送的请求,请使用Reachability或类似工具
为了重新尝试发送,使用以下方法检索
EVSendLater.sharedManager.getSavesForUrl(url)
如果这些请求再次失败,无需重新保存,但成功后需要使用以下方法删除
EVSendLater.sharedManager.removeFromSaves(url, params: parameters)
if let params = EVSendLater.sharedManager.getSavesForUrl(url){
for p in params{
Alamofire.request(.POST, url, parameters: p).responseJSON { (request, response, result) -> Void in
if result.isSuccess{
//handle success
EVSendLater.sharedManager.removeFromSaves(url, params: p)
EVSendLater.sharedManager.synchronizeSaves()
}
}
}
}
您也可以遍历所有URL并使用下面的方法发送所有内容
EVSendLater.sharedManager.getAllSaves()
for (url, parameters) in EVSendLater.sharedManager.getAllSaves(){
if let u = url as? String{
if let params = parameters as? [[String: AnyObject]]{
for p in params{
Alamofire.request(.POST, u, parameters: p).responseJSON { (request, response, result) -> Void in
if result.isSuccess{
//handle success
EVSendLater.sharedManager.removeFromSaves(u, params: p)
EVSendLater.sharedManager.synchronizeSaves()
}
}
}
}
}
}
EVSendLater可以通过CocoaPods使用。要安装它,只需将以下行添加到您的Podfile中
pod "EVSendLater"
Enzo Vergara,[email protected]
EVSendLater可在MIT许可协议下使用。
版权所有 © 2015 Enzo Vergara [邮箱地址去的保护码]
特此授予任何获得本软件及相关文档副本(以下简称“软件”)的人免费用权,在不受限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许将软件提供给他人以执行上述操作,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或实质部分的副本中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、适用于特定用途和侵权保证。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任负责,无论是由合同、侵权或其他方式引起的,无论是在软件中、出于或与软件的使用或其他交易有关。
示例使用 Alamofire 创建
最初用于与 Booky -Manila Restaurants 一起使用