有限网络访问下如何测试iPhone应用程序

7

在使用iPhone模拟器时,有没有一种模拟有限或无3G / Wifi / EDGE连接的方法?

4个回答

11

您希望测试的是速度变化还是各项技术的访问权限?

如果想测试速度,您可以使用以下ipfw技巧,由Icon Factory的Craig Hockenberry提供,使用ipfw限制对特定域名的连接。在这个例子中,它是twitter,并且限制了与主机之间所有连接的速度。

这是一个bash脚本,如果您正在进行iPhone开发,您会在Mac上创建并在终端中运行它。

#!/bin/bash

# configuration
host="twitter.com"

# usage
if [ "$*" == "" ]; then
    echo "usage: $0 [off|fast|medium|slow]"
    exit
fi

# remove any previous firewall rules
sudo ipfw list 10 > /dev/null 2>&1
if [ $? -eq 0 ]; then
    sudo ipfw delete 10 > /dev/null 2>&1
fi
sudo ipfw list 11 > /dev/null 2>&1
if [ $? -eq 0 ]; then
    sudo ipfw delete 11 > /dev/null 2>&1
fi

# process the command line option
if [ "$1" == "off" ]; then
    # add rules to deny any connections to configured host
    sudo ipfw add 10 deny tcp from $host to me
    sudo ipfw add 11 deny tcp from me to $host
else
    # create a pipe with limited bandwidth
    bandwidth="100Kbit"
    if [ "$1" == "fast" ]; then
        bandwidth="300Kbit"
    elif [ "$1" == "slow" ]; then
        bandwidth="10Kbit"
    fi
    sudo ipfw pipe 1 config bw $bandwidth

    # add rules to use bandwidth limited pipe 
    sudo ipfw add 10 pipe 1 tcp from $host to me
    sudo ipfw add 11 pipe 1 tcp from me to $host
fi

4
你可能想看一下SpeedLimit,这是一个适用于OS X的首选项窗格,它可以让你限制带宽并控制延迟。

1

如果您有iPhone的热点功能,可以关闭您的电缆调制解调器/ADSL连接,并通过您的iPhone路由互联网。如果您的运营商是AT&T,则此方法效果非常好。如果您的运营商不是AT&T,则必须尝试其他方法来模拟劣质连接。

另一种低保真度的解决方案是,在家庭无线路由器外包裹锡箔,或将其放入金属盒中。通常要模拟的是劣质连接而不是慢速连接。防火墙规则会减慢连接,但不会丢失随机数据包。

由于您使用的是Mac,因此可以使用Dummynet。这个插件能够插入ipfw,还能模拟数据包丢失。这是一个具有Dummynet模块的典型IPFW:

ipfw add 400 prob 0.05 deny sr-ip 10.0.0.0/8

我必须对SnowLeopard进行一些调整:ipfw add 400 prob 0.05 drop ip from any to $2 - pendor

0

你可以通过关闭你的机场来测试无网络 :-)

对于更精细的控制,Neil的ipfw建议是最好的方法。


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