Задача -C: NSCommand "airport -s" возвращается пустым
Я пытаюсь запустить команду аэропорта для сканирования моих беспроводных сетей. Прямо сейчас, подход заключается в использовании NSTask. Я запускаю его следующим образом:
NSString *command = [NSString stringWithFormat:@"/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s"];
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/sh"];
NSArray *args = [NSArray arrayWithObjects:@"-c", command, nil];
[task setArguments: args];
NSPipe *pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
[task launch];
[task waitUntilExit];
NSData *data = [[pipe fileHandleForReading] readDataToEndOfFile];
NSString *string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
NSLog(@"RESULT: %@", string);
Проблема состоит в том, что его вывод происходит как "RESULT:" (пустой вывод). Кроме того, когда я запускаю ту же команду с опцией "-I", она правильно отображает мои текущие сетевые состояния. Итак, я полагаю, что я ошибаюсь в том, как правильно прочитать вывод команды airport с опцией -s. Может кто-нибудь подсказать, как правильно его читать?
1 ответ
Хорошо. Глубоко исследуя проблемы здесь, я нашел это в моих журналах консоли:
PMsandboxd: ([57108]) <MyApp>(57108) deny mach-lookup com.apple.airport
PMsandboxd: ([57108]) <MyApp>(57108) deny system-socket
PMsandboxd: ([57120]) sh(57120) deny file-read-data /dev/ttys003
PMairportd: Error: Scan failed (1)
PMsandboxd: ([57120]) airport(57120) deny system-socket
Ну... похоже это вопрос разрешения. Я все еще расследую здесь.
Отредактировано #1: Хорошо. Если ваше приложение помещено в "песочницу" для Apple Store, "песочница" не позволяет NSTask использовать сканирование аэропорта!