我们的应用使用WLAN与无线设备进行通信。当我们的应用程序安装在iOS 10中时。有时,udp套接字不起作用。原因是,在iOS 10中,他们在您的应用程序下添加了一项新设置或权限,允许用户打开或关闭WLAN用户或移动数据。
以下内容会出现在应用的设置中:
当我点击无线时......它会带我进入这个界面:
允许WLAN使用后。该应用程序可以正常工作。
现在,问题是,有时,或者在运行iOS 10的某些设备中,我刚刚显示的设置没有出现(我指的是第一张图片上显示的设置)。那么,我有什么办法可以让这些设置始终出现吗?似乎有时iOS系统无法识别我的应用程序正在使用无线数据。这将导致我的应用程序永远不会永远使用WLAN。
答案 0 :(得分:1)
在iOS10中没有用户权限可以使用WIFI。
屏幕截图中的应用程序(BSW SMART KIT)正在使用无线配件(WAC),即能够连接到无线扬声器。要实现此目的,需要Wireless Accessory Configuration
功能。这是您可以在系统设置中删除/启用的内容(截图)。
通过WAC通过WIFI连接到设备后,设置中的开关显示。您也可以在示例应用程序(BSW SMART KIT)中看到此行为。
这个sample code可能会让你明白这个想法。 Apples documentation中的详细信息。
答案 1 :(得分:0)
经过一段时间的研究。我最终寻求Apple Code Level Support的帮助。 Apple表示,当您重新打开应用程序时,很可能会出现此问题。他们说这可能是因为主应用程序的Image UUID和reskinned应用程序是相同的。当您在手机中安装这两个应用程序时,系统会将重新设计的应用程序视为与主应用程序相比的同一个应用程序。因此,如果一个应用程序无法访问WLAN,那么它也会影响另一个应用程序。根据他们的说法,这似乎是 iOS中的一个错误。目前,他们对开发人员没有任何解决方案。这是雷达错误编号:
我以某种方式减少问题的发生是通过使用以下代码将跟踪添加到网络限制。
- (void)startCheckingNetworkRestriction
{
__weak AppDelegate *weakSelf = self;
_monitor = [[CTCellularData alloc] init];
_monitor.cellularDataRestrictionDidUpdateNotifier = ^(CTCellularDataRestrictedState state)
{
[[NSOperationQueue mainQueue] addOperationWithBlock:^
{
NSString * statusStr;
switch(state)
{
case kCTCellularDataRestrictedStateUnknown:
{
statusStr = @"restriction status:Unknown";
}
break;
case kCTCellularDataRestricted:
{
statusStr = @"restriction status:restricted";
[weakSelf performUrlSession];
}
break;
case kCTCellularDataNotRestricted:
{
statusStr = @"restriction status:not restricted";
}
break;
default:
{
abort();
}
break;
}
NSLog(@"Restriction state: %@", statusStr);
}];
};
}
请注意,您必须导入CoreTelephony才能执行此操作。
@import CoreTelephony;
当我检测到网络受限制时。我将打开一个URL会话以强制进行Internet访问尝试,并希望弹出限制警告对话框。弹出警报后,我正在谈论的WLAN访问设置肯定会出现在设置下。有时这不起作用。如果它发生了,那么你只需要重命名捆绑包ID,然后对你的代码进行一些更改,然后重建几次(好吧,这就是我在试验这个时所做的)。重新安装应用程序不会做任何事情。重启和重置手机也不会。
希望这会有所帮助。