据我所知,不可能扫描范围内的热点并阅读它们的bssid和信号强度.这可以通过使用私有API在iOS 4上实现,而在没有越狱的iOS 5上则不再可能.即使有可能,该应用程序也会在App Store上被拒绝.是对的吗?
一家拥有室内定位系统的公司声称他们可以在iOS中开发这个系统.我知道他们正在扫描热点和信号强度,然后在他们当前的Android应用程序上对信号进行三角测量.
我有什么替代方案吗?他们声称听起来不可能,但我很乐意听到这里的人们.我想在他们演示时做好准备(虽然我期待越狱或某种模拟)
我的应用程序(它是一个应用程序商店应用程序)能够通过3G/4G/LTE/Edge等连接......但它无法实时检测(通过回调或许)信号强度已被修改.例如:如果我连接4G并且我处于信号为EDGE或2G的"角落",我想禁用某些功能.此外,我想重新启用功能,信号再次成为4G.
我已经看过CTTelephonyNetworkInfo该类,并且SDK中也提供了这些值
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyGPRS __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyEdge __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyWCDMA __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyHSDPA __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyHSUPA __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyCDMA1x __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyCDMAEVDORev0 __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyCDMAEVDORevA __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyCDMAEVDORevB __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyeHRPD __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
CORETELEPHONY_EXTERN NSString * const CTRadioAccessTechnologyLTE __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_7_0);
Run Code Online (Sandbox Code Playgroud)
但是,如果其中一个值处于活动状态,应用程序如何收到通知.我有一些从CTTelephoneNetworkInfo读取的代码,我收回的值是正确的,但这是在我手动调用方法时完成的.
我正在制作一个应用程序,其中我想要提供的功能之一是测量连接的下载速度.为此,我使用NSURLConnection开始下载大文件,并在一段时间后取消下载并进行计算(数据下载/时间已过).虽然像speedtest.net这样的其他应用程序每次都会提供恒定的速度,但是我的或多或少会有2-3 Mbps的波动.
基本上我正在做的是,在调用方法连接:didReceiveResponse:时启动计时器.500调用方法连接后:didReceiveData:我取消下载,停止计时器并计算速度.
这是代码:
- (IBAction)startSpeedTest:(id)sender
{
limit = 0;
NSURLRequest *testRequest = [NSURLRequest requestWithURL:self.selectedServer cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60];
NSURLConnection *testConnection = [NSURLConnection connectionWithRequest:testRequest delegate:self];
if(testConnection) {
self.downloadData = [[NSMutableData alloc] init];
} else {
NSLog(@"Failled to connect");
}
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
self.startTime = [NSDate date];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[self.downloadData appendData:data];
if (limit++ == 500) {
[self.connection cancel];
NSDate *stop = [NSDate date];
[self calculateSpeedWithTime:[stop timeIntervalSinceDate:self.startTime]];
self.connection = nil;
self.downloadData = nil;
}
} …Run Code Online (Sandbox Code Playgroud) 我遵循下面的代码,我从堆栈溢出问题复制和转换.
我正在上网速度,但我不确定,如果我做对了.
import UIKit
class ViewController: UIViewController, NSURLConnectionDataDelegate{
var connection:NSURLConnection!
var length:Int!
var startTime:NSDate!
//let kMinimumMegabytesPerSecond: CGFloat = 1
let kMaximumElapsedTime: CGFloat = 2.0
override func viewDidLoad() {
super.viewDidLoad()
self.testDownloadSpeed()
// Do any additional setup after loading the view, typically from a nib.
}
func testDownloadSpeed() {
var url: NSURL = NSURL(string: "http://thewallpaperhost.com/wp-content/uploads/2014/12/wallpapers-hd-8000-8331-hd-wallpapers.jpg")!
var request: NSURLRequest = NSURLRequest(URL: url)
self.startTime = NSDate()
self.length = 0
self.connection = NSURLConnection(request: request, delegate: self)
self.connection.start()
let delayInSeconds:Int64 = 1000000000 * 2
var popTime:dispatch_time_t …Run Code Online (Sandbox Code Playgroud) ios ×4
iphone ×3
cocoa-touch ×1
ios5 ×1
ios8 ×1
networking ×1
reachability ×1
swift ×1
wifi ×1