Swift中的MobileWiFi框架回调

时间:2016-08-31 08:46:15

标签: ios objective-c swift frameworks

对于私人项目,我试图在Swift中使用私有MobileWiFi框架。

我找到了这个网站: http://iphonedevwiki.net/index.php/MobileWiFi.framework 在Objective-C中它的工作就像一个魅力,但我想将代码转换为Swift。

我已经转换了功能"检索已知网络的列表"已经进入Swift并且该功能正在运行。

现在我试图转换"获取WiFi信号强度"功能,但使用回调函数,我已经努力,但不能让它工作。

   #include <MobileWiFi.h>

static WiFiManagerRef _manager;
static void scan_callback(WiFiDeviceClientRef device, CFArrayRef results, CFErrorRef error, void *token);

int main(int argc, char **argv)
{
    _manager = WiFiManagerClientCreate(kCFAllocatorDefault, 0);

    CFArrayRef devices = WiFiManagerClientCopyDevices(_manager);
    if (!devices) {
        fprintf(stderr, "Couldn't get WiFi devices. Bailing.\n");
        exit(EXIT_FAILURE);
    }

    WiFiDeviceClientRef client = (WiFiDeviceClientRef)CFArrayGetValueAtIndex(devices, 0);

    WiFiManagerClientScheduleWithRunLoop(_manager, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
    WiFiDeviceClientScanAsync(client, (CFDictionaryRef)[NSDictionary dictionary], scan_callback, 0);

    CFRelease(devices);

    CFRunLoopRun();

        return 0;
}

static void scan_callback(WiFiDeviceClientRef device, CFArrayRef results, CFErrorRef error, void *token)
{
    NSLog(@"Finished scanning! networks: %@", results);

    WiFiManagerClientUnscheduleFromRunLoop(_manager);
    CFRelease(_manager);

    CFRunLoopStop(CFRunLoopGetCurrent());
}

有人可以向我解释如何在swift语言中使用这样的回调函数吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我发现了这个功能:

pcap_loop(pcapSession, numberOfPackets,
{
    (args: UnsafeMutablePointer<u_char>,
     pkthdr:UnsafePointer<pcap_pkthdr>,
     packet: UnsafePointer<u_char>) ->Void in

            // singleton call
            let pa = PacketAnalyser.sharedInstance
            pa.Process()
},
nil)

在本网站上:http://diydeveloper.io/tech/2015/11/27/swift-pcap

我认为这对我的问题是一个可行的解决方案。有人可以向我解释我是否可以使用这个例子?