我正在开发一个iOS应用程序,其主要功能是与本地wifi网络中的设备进行通信。这意味着需要wifi连接,但互联网连接不是。
此外,该应用程序尝试在应用启动时从互联网上获取一些数据(如当前软件版本,关于关键更新信息等)。
现在我有一个测试场景。没有连接到互联网的wifi网络。 iPhone已登录此wifi。当应用程序启动时,行为是不可预测的。
由于wifi没有互联网连接,有时从互联网上获取的数据会失败。但是从互联网上获取的20-30%的数据工作得很好。在这种情况下,您可以看到wifi符号消失,LTE符号出现两三秒钟,然后再次出现wifi符号。
显然,有时我的iPhone会从wifi切换到移动网络以获取一些数据而不是返回wifi,有时则不会。是否可以控制这种行为?
以下是我从互联网上获取数据的代码:
NSURL *URL = [NSURL URLWithString:@"https://myurl.com/data.xml"];
NSData *data = [[NSData alloc] initWithContentsOfURL:URL];
NSError *error = nil;
NSDictionary *dictionary = [XMLReader dictionaryForXMLData:data error:&error];
if(dictionary){
currentOne = [[[dictionary valueForKey:@"versions"] valueForKey:@"myapp"] valueForKey:@"current"];
nextOne = [[[dictionary valueForKey:@"versions"] valueForKey:@"myapp"] valueForKey:@"next"];
if(currentOne && nextOne){
//Check app versions
}
} else {
NSLog(@"--------------------------------------");
NSLog(@"Versions dict empty - no internet connection");
NSLog(@"--------------------------------------");
}