Categories

Posts Tagged ‘WiFi’

iPhone SDK 开发:如何判断WIFI链接

iPhone SDK提供了系统对话框用来判断是否有有效的WIFI链接, 这种情况已经在 iPhone SDK开发:如何显示WiFi提示 介绍过。

但是有时候如果打开了GPRS/Edge网络, 则不会弹出wifi对话框, 如果程序需要根据链接类型来传输不同的内容则需要判断当前有效链接是否为WIFI, 正好我的程序中用到就写了一个函数判断当前有效链接是否为WiFi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
BOOL IsWIFIConnection
{
	BOOL ret = YES;
	struct ifaddrs * first_ifaddr, * current_ifaddr;
	NSMutableArray* activeInterfaceNames = [[NSMutableArray alloc] init];
	getifaddrs( &first_ifaddr );
	current_ifaddr = first_ifaddr;
	while( current_ifaddr!=NULL )
	{
		if( current_ifaddr->ifa_addr->sa_family==0x02 )
		{
			[activeInterfaceNames addObject:[NSString stringWithFormat:@"%s", current_ifaddr->ifa_name]];
		}
		current_ifaddr = current_ifaddr->ifa_next;
	}
	ret = [activeInterfaceNames containsObject:@"en0"] || [activeInterfaceNames containsObject:@"en1"];
	[activeInterfaceNames release];
	return ret;
}

主要工作原来是取得当前网络设备的名称, 如果包含“en0″或者”en1“则说明是wifi链接, 否则有可能是Edge等链接

iPhone SDK开发:如何显示WiFi提示

如果你的程序中用到了WiFi,想在没有有效WiFi的时候出现如图所示的提示该怎么做?

这个问题被很多人问到过,其实很简单, 只需要在Info.plist中添加如下Key/Value

1
2
3
key name                        value type    value
 
UIRequiresPersistentWiFi     Boolean        true

一定要是 Boolean类型才可以, iPhone OS 2.1 以后会忽略String类型的YES值

编译运行你的程序, 如果当前WiFi网络没有任何有效设置的话, 就会弹出提示并列出所有可达的WiFi接入点