iPhone Wi-Fi管理器SDK

8

我试图尝试多种方法来启用/禁用Wi-Fi(切换)。以下是我正在尝试的一些方法:

//Enable
WiFiManagerClientEnable(WiFiManagerClientCreate(kCFAllocatorDefault, 0));
//Disable
WiFiManagerClientDisable(WiFiManagerClientCreate(kCFAllocatorDefault, 0));

-and-

//Enable
WiFiManagerClientSetProperty(WiFiManagerClientCreate(kCFAllocatorDefault, 0), @"AllowEnable", kCFBooleanTrue);
//Disable
WiFiManagerClientSetProperty(WiFiManagerClientCreate(kCFAllocatorDefault, 0), @"AllowEnable", kCFBooleanFalse);

即使我使用异常函数(@try{}),这些都会导致应用程序崩溃。我已经导入了MobileWiFi.framework和其他所有内容,但似乎无法使其正常工作。这些是我需要调用的正确方法来启用/禁用Wi-Fi吗?

注意:不适用于App Store :-)


我知道这并没有回答你的问题,但可以看看这个:https://dev59.com/T0vSa4cB1Zd3GeqPcS1k 你知道有哪些用户模式应用程序能够在非越狱的 iPhone 上启用或禁用 WiFi 吗?有一种方法可以将您的应用程序简单地标记为需要 WiFi,但那也是我所知道的全部。 - Nimrod
那并不能启用/禁用WiFi,只是返回某些信息。 - WrightsCS
你好,我也在尝试类似的东西,你能告诉我更多关于你添加的框架以及如何在Xcode中实现吗?先谢谢了。 - PRN
2个回答

9

从应用程序中

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

来自Dylib

#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];
}

2
我在一个iOS 4.2.1的示例应用程序中尝试了[[objc_getClass("SBWiFiManager") sharedInstance] setWiFiEnabled:NO];,但它没有任何作用。这个函数调用可能不起作用是因为它来自于我的应用程序而不是在SpringBoard下加载的dylib吗? - Abhijeet Pathak
2
这个功能无法从应用程序中运行,必须从 .dylib 中调用。 - WrightsCS
1
好的,谢谢。我之前还没有开发过 .dylib 文件。你能否给我提供一个链接,介绍如何为 iPhone 开发 dylib 文件呢?这是一个普通的 SpringBoard dylib 还是类似于 MobileSubstrate 切换的文件呢? - Abhijeet Pathak
2
请注意,SBWiFiManager 是仅存在于 SpringBoard 中的一个类。要调用它,必须作为动态库或框架在 SpringBoard 内运行。 - rpetrich
3
谢谢!我已经使用这个教程成功地使用Theos了 :) http://brandontreb.com/beginning-jailbroken-ios-development-your-first-tweak/ - igbopie
显示剩余5条评论

0

您不能在手机上禁用WiFi。用户通过设置应用程序负责此操作,该功能不可通过SDK使用。

-t


好的,我没有为App Store编写代码,我的项目设置使用私有框架。 - WrightsCS
1
不确定为什么这个回答被踩了,我觉得它是一个合适的回应。 - Jayden
6
因为OP已经说明这不是为了App Store :-) - vk.edward.li

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接