有没有一种直接的方式来“强制”关闭网络连接(蜂窝和WIFI)并重新打开iphone?我正在开发一个通过Dropbox同步的应用程序,并希望测试&从丢失的连接调试我的错误恢复代码。
更新:我应该更具体一点,我想在sw中关闭它。例如,在启动对dropbox的请求后,我想通过关闭网络来模拟失败的下载。
答案 0 :(得分:0)
打开“设置”,然后启用上的飞行模式以禁用所有网络连接; 关闭重新启用。
编辑:要使用iOS SDK(2.x和3.x)启用飞行模式,请尝试Erica Sadun's code:
#import <UIKit/UIKit.h>
#import <UIKit/UIApplication.h>
#include <dlfcn.h>
#include <stdio.h>
// Framework Paths
#define SBSERVPATH "/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices"
#define UIKITPATH "/System/Library/Framework/UIKit.framework/UIKit"
int main(int argc, char **argv)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//
// For testing try issuing the following:
// ap y; sleep 5; ./ap n
//
if (argc < 2)
{
printf("Usage: %s (y | n)\n", argv[0]);
exit(-1);
}
// Argument used to switch airplane mode off or on
BOOL yorn = [[[NSString stringWithCString:argv[1]]
uppercaseString] hasPrefix:@"Y"];
// Fetch the SpringBoard server port
mach_port_t *p;
void *uikit = dlopen(UIKITPATH, RTLD_LAZY);
int (*SBSSpringBoardServerPort)() =
dlsym(uikit, "SBSSpringBoardServerPort");
p = SBSSpringBoardServerPort();
dlclose(uikit);
// Link to SBSetAirplaneModeEnabled
void *sbserv = dlopen(SBSERVPATH, RTLD_LAZY);
int (*setAPMode)(mach_port_t* port, BOOL yorn) =
dlsym(sbserv, "SBSetAirplaneModeEnabled");
setAPMode(p, yorn);
dlclose(sbserv);
[pool release];
}
答案 1 :(得分:0)
要模拟软件中的下载失败,只需在设置某个调试标志时在软件中提前关闭连接。
我更喜欢从wifi接入点拔出电缆。
增加:
如果您的无线接入点有本地可访问的管理网页,并且您是管理员,您可能能够找出HTTP(S)序列来访问接入点WAN配置页面并禁用/重新启用广域网。你可以用软件完成所有这些。