在IOS中使用Objective-c开发,加入微信支付的SDK,一开始都还比较顺利,可是在微信支付完成后,要将支付的结果通过网络请求更新到数据库时,不管怎么试,都提示NSPOSIXErrorDomain的错误,展开userInfo的信息,是“_NSURLErrorFailingURLSessionTaskErrorKey和_NSURLErrorRelatedURLSessionTaskErrorKey”,在网络上搜索这些错误的原因,都指向的是网络请求有问题。网络请求,使用的是YTKRequest。
按照NSPOSIXErrorDomain的错误提示,我一开始以为是API的域名写错了,再三核对后,确认没有问题。之后将请求输出后,用整个URL去执行,可以正常请求。所以排除了域名和URL的问题。既然网络请求没有问题,那只能寻找其他原因。
在不断的重复测试后,发现偶然一次在微信支付后可以成功执行该网络请求,心里很是纳闷,怎么会突然就成功了?后来查到资料,有说在调起第三方应用后,再返回原来的APP时,会有网络错误的情况,需要在AppDelegate去延长APP生存期。我们调起微信支付,就是调起第三方应用,然后发起网络请求,就是在返回APP后发起的,和资料所说的一致,于是将代码加入。代码如下:
@interface AppDelegate ()
@property (nonatomic, unsafe_unretained) UIBackgroundTaskIdentifier taskId;
@property (nonatomic, strong) NSTimer *timer