快速转换网络连接以进行调试?

时间:2011-01-29 07:43:58

标签: iphone networking dropbox

有没有一种直接的方式来“强制”关闭网络连接(蜂窝和WIFI)并重新打开iphone?我正在开发一个通过Dropbox同步的应用程序,并希望测试&从丢失的连接调试我的错误恢复代码。

更新:我应该更具体一点,我想在sw中关闭它。例如,在启动对dropbox的请求后,我想通过关闭网络来模拟失败的下载。

2 个答案:

答案 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配置页面并禁用/重新启用广域网。你可以用软件完成所有这些。