在非越狱的iOS设备上启用/禁用Wifi



这是我需要的内部应用程序。我想在ios设备上切换wifi。任何框架都可用。我尝试下面的代码,但它提供了我没有帮助。这不会改变我的wifi设置。

{       
    Class BluetoothManager = objc_getClass("BluetoothManager");
    id btCont = [BluetoothManager sharedInstance];
    [self performSelector:@selector(toggle:) withObject:btCont afterDelay:0.1f] ;
}
- (void)toggle:(id)btCont
{
    BOOL currentState = [btCont enabled] ;
    [btCont setEnabled:!currentState] ;
    [btCont setPowered:!currentState] ;
    exit( EXIT_SUCCESS ) ;
}

From Application

notify_post("com.yourcompany.yourapp.yournotification");
从Dylib

#import <objc/runtime.h>
#import <SpringBoard/SBWiFiManager.h>
HOOK(SpringBoard, applicationDidFinishLaunching$, void, id app) {
    //Listen for events via DARWIN NOTIFICATION CENTER
    CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL,
     &NotificationReceivedCallback, CFSTR("com.yourcompany.yourapp.yournotification"), NULL, 
      CFNotificationSuspensionBehaviorCoalesce);
}
//THIS IS WHERE THE MAGIC HAPPENS
static void NotificationReceivedCallback(CFNotificationCenterRef center, 
                                            void *observer, CFStringRef name, 
                                            const void *object, CFDictionaryRef 
                                            userInfo) 
{ 
    [[objc_getClass("SBWiFiManager") sharedInstance] setWiFiEnabled:NO];
}

注意:

如果你在使用Hook方法时遇到任何错误,你可以参考这个链接,它演示了如何在SpringBoard中找到Hook init方法,以在启动手机时显示警告消息。

警告:

你不能在appstore应用程序中使用这个,因为私有api被使用了。

参考

Attribtuion

你不可能。iOS限制了第三方应用与底层硬件交互的数量。所有使用公共SDK编写的应用程序都是沙盒式的。

正如7KV7在他们的回答中所说:

它们只能访问属性和数据苹果认为在这个沙盒中使用是可行的。恐怕是Wi-fi列表里没有

相关内容

  • 没有找到相关文章

最新更新