gpt4 book ai didi

ios - AFNetworking 检查可用性

转载 作者:IT王子 更新时间:2023-10-29 08:07:10 24 4
gpt4 key购买 nike

我已经实现了 AFNetworking 而没有子类化 AFHTTPClient,部分是在我的 DownloadQueueManager 中使用了以下代码:

-(void)downloadPodcastAt:(NSString *)url toPath:(NSString *)path
{
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]
cachePolicy:NSURLRequestReturnCacheDataElseLoad
timeoutInterval:60.0];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

operation.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:NO];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject)
{
[self saveQueuedItemInformation];
} failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
// Other stuff
}];

[operation start];
}

我的问题是多方面的。我用 google 搜索直到我的手指都 NumPy 了,但还没有找到一个像样的代码示例,可以使用 AFNetworking 简单轻松地检查可达性状态。 (奇怪的是,有很多关于导入 SystemConfiguration.framework 的讨论,这看起来很简单)。因此,如果我的用户希望最大限度地减少数据使用量,并且只使用 wifi 下载,我该如何检查 wifi 并仅在 wifi 可用时才下载?

其次,AFNetworking 似乎想要成为一个用户友好的前端。但我实际上可以在这个前端使用一个前端,因为那里有很多东西,人们必须通过这些东西才能找到需要的东西。我只需要访问一个 url,下载一个 xml 文件(基于可达性),然后用它做一些事情。我是否遗漏了一些使这成为一项简单任务的东西?

当我理解这一点时,我完全是在构建一个或五个前端来简化实现(假设我不只是个白痴)。预先感谢您的任何回复。

最佳答案

其实违背了什么A-Live said可达性是 AFNetworking 的一部分。它在 AFHTTPClient.h 中实现 here .如前所述,您需要在 .pch 文件中进行正确的导入 here为了使用它。

要使用它,您可能需要一个 AFHTTPClient 的子类,这样您就可以使用 setReachabilityStatusChangeBlock 定义 here .这是一个不使用子类的简单示例。

AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://google.com"]];
[client setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
if (status == AFNetworkReachabilityStatusNotReachable) {
// Not reachable
} else {
// Reachable
}

if (status == AFNetworkReachabilityStatusReachableViaWiFi) {
// On wifi
}
}];

如果您不喜欢这种可达性设置的工作方式,那么我会推荐 Tony Million's fork苹果的可达性。简单示例:

Reachability *reach = [Reachability reachabilityWithHostname:@"google.com"];
if ([reach isReachable]) {
// Reachable
if ([reach isReachableViaWiFi]) {
// On WiFi
}
} else {
// Isn't reachable

[reach setReachableBlock:^(Reachability *reachblock)
{
// Now reachable
}];

[reach setUnreachableBlock:^(Reachability*reach)
{
// Now unreachable
}];
}

关于ios - AFNetworking 检查可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15041631/

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