启动守护程序中未调用Wifi回调

时间:2014-08-24 08:56:05

标签: ios objective-c daemon jailbreak nsrunloop

我想在iOS中编写一个以编程方式连接到网络的启动守护程序。为了连接到网络,我正在使用Cykey's (David Murray) WifiManager app。在编写守护程序之前,它完美地工作(我在跳板调整中使用它)但现在它不扫描可用的网络(方法- (void)_scanDidFinishWithError:(int)error未被调用)。通过记录,我发现调用了DMNetWorksManager中的方法_scan,但未调用static void DMScanCallback(WiFiDeviceClientRef device, CFArrayRef results, int error, const void *token)。我认为这是因为我在main.m文件中有runloop。这是我的代码:

的main.m:

int main (int argc, const char * argv[])
{

    @autoreleasepool
    {           
        // insert code here...
        MSManager *server = [[MSManager alloc] init];

        //start a timer so that the process does not exit.
        /*NSDate *now = [[NSDate alloc] init];
        NSTimer *timer = [[NSTimer alloc] initWithFireDate:now
                                                  interval:.01
                                                    target:server
                                                  selector:@selector(start)
                                                  userInfo:nil
                                                   repeats:NO];

        NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
        [runLoop addTimer:timer forMode:NSDefaultRunLoopMode];
        [runLoop run];*/
        [server start];
        CFRunLoopRun();
    }
    return 0;
}

MSManager.m 中的启动方法:

- (void)start
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(managerDidFinishScanning)
                                                 name:kDMNetworksManagerDidFinishScanning
                                               object:nil];


    //Some other code here....
}
- (void)managerDidFinishScanning
{
    //Do some work here
}

注意:我曾使用CFRunloop和NSRunLoop(在代码中注释),但没有一个工作。

0 个答案:

没有答案