美文网首页
iOS APP内WiFi配置相关

iOS APP内WiFi配置相关

作者: 馨妈养成记 | 来源:发表于2017-04-18 10:12 被阅读0次

在网上搜了好多例子,也问了好多人,最终无果,特将自己找到的资源做分享本人做智能家居的APP,智能硬件设备自带WiFi(局域网)。如果用户没有连接设备的WiFi进入APP时,需要提示用户去设置界面连接WiFi。需求一、APP内部跳转到系统WIFi 界面手动连接实现info里面设置在项目中的info.plist中添加 URL types 并设置一项URL Schemes为prefs,如下图:wifi1实现代码NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];if ([[UIApplication sharedApplication] canOpenURL:url]){    [[UIApplication sharedApplication] openURL:url];}需求二、在APP内部做切换网络iOS端WIFI应用的相关开发,主要存在以下问题:iOS系统WIFI相关的接口很少,大部分接口都是私有接口在设备连接上WIFI,没有通过路由器认证前,如果关闭iOS自动弹出的Portal页面,iPhone的WIFI会自动断开如何禁止iOS系统自动弹Portal页面公共WIFI的名称确定及不确定时的处理办法获取路由器Ip的方法1.添加getgateway.c文件,和route.h文件2.导入这些头文件#import#include#import#import#import#import#include#import "getgateway.h"#import3.获取网络IP

//获取路由器地址

-(NSString *)routerIp {

NSString *address = @"error";

struct ifaddrs *interfaces = NULL;

struct ifaddrs *temp_addr = NULL;

int success = 0;

success = getifaddrs(&interfaces);

if (success == 0)

{

temp_addr = interfaces;

while(temp_addr != NULL)

{

if(temp_addr->ifa_addr->sa_family == AF_INET)

{

if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"])

{

address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];

//广播地址--10.22.70.255

NSLog(@"广播地址--%@",[NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_dstaddr)->sin_addr)]);

//本机地址--10.22.70.111

NSLog(@"本机地址--%@",[NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)]);

//子网掩码地址--255.255.255.0

NSLog(@"子网掩码地址--%@",[NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_netmask)->sin_addr)]);

//端口地址--en0

NSLog(@"端口地址--%@",[NSString stringWithUTF8String:temp_addr->ifa_name]);

}

}

temp_addr = temp_addr->ifa_next;

}

}

// Free memory

freeifaddrs(interfaces);

in_addr_t i =inet_addr([address cStringUsingEncoding:NSUTF8StringEncoding]);

in_addr_t* x =&i;

unsigned char *s=getdefaultgateway(x);

NSString *ip=[NSString stringWithFormat:@"%d.%d.%d.%d",s[0],s[1],s[2],s[3]];

//路由器地址-----10.22.70.1

NSLog(@"路由器地址-----%@",ip);

return ip;

}

4.获取SSID

-(NSDictionary *)fetchNetInfo{

NSArray *interfaceNames = CFBridgingRelease(CNCopySupportedInterfaces());

NSDictionary *SSIDInfo;

for (NSString *interfaceName in interfaceNames) {

SSIDInfo = CFBridgingRelease(CNCopyCurrentNetworkInfo((__bridge CFStringRef)interfaceName));

BOOL isNotEmpty = (SSIDInfo.count > 0);

if (isNotEmpty) {

break;

}

}

return SSIDInfo;

}

注意:iOS 10以后对调用系统权限更高,WiFi那块也做了新的协议

至此未完,有谁知道如何在程序内部连接指定热点之后断开连接在重新连接其他的网络的,敬请告知

相关文章

  • iOS APP内WiFi配置相关

    在网上搜了好多例子,也问了好多人,最终无果,特将自己找到的资源做分享本人做智能家居的APP,智能硬件设备自带WiF...

  • iOS连接指定WiFi

    需求:用户给定WiFi名和相关配置,在APP中连接指定WiFi。 具体实现:通常来说,WiFi分为普通WiFi和企...

  • iOS App内连接WiFi

    背景:给智能设备配置网络,需要直连智能设备发射的Wi-Fi 目前技术:iOS11后苹果提供 NEHotspotC...

  • iOS客户端 获取WIFI ssid等信息资料

    iOS Wifi编程要点总结-获取WIFI名和IP iOS客户端公共WIFI解决方案 iOS开发中WiFi相关功能...

  • WiFi

    iOS开发中WiFi相关功能总结 iOS 获取系统wifi列表,wifi信号强度,并给wifi设置密码,标签(副标...

  • iOS1

    随着 iOS10的推出,iOS应用需要做相关的配置: 1:如果你的App想要...

  • 内购IAP支付流程

    iOS内购流程: 1、苹果开发者网站配置税务协议等相关信息。 2、配置项目相关产品包。 3、由SKProducts...

  • iOS 在APP内、应用内 连接WiFi

    iOS在应用内连接特定的WiFi 前言 微博上有个段子广为流传:海边度假酒店老板说各国游客来了需求都不一样: 法国...

  • iOS 在APP内、应用内 连接WiFi

    iOS在应用内连接特定的WiFi 前言 微博上有个段子广为流传:海边度假酒店老板说各国游客来了需求都不一样: 法国...

  • 【2020年1月更新】苹果内购银行、税务信息后台配置

    2019最新iOS内购流程基本配置(不含代码部分) 1、登录https://appstoreconnect.app...

网友评论

      本文标题:iOS APP内WiFi配置相关

      本文链接:https://www.haomeiwen.com/subject/hwlfzttx.html