iPhone/iPad 模拟器主机名
Posted
技术标签:
【中文标题】iPhone/iPad 模拟器主机名【英文标题】:Name of the host machine of an iPhone/iPad simulator 【发布时间】:2011-01-10 18:03:07 【问题描述】:我需要知道 iPhone/iPad 模拟器的主机名称。我的猜测是这应该是可能的,但我还没有找到方法。为什么我需要它?这是因为 [[UIDevice currentDevice] name] 为在同一网络上运行的任何模拟器返回相同的名称“iPhone Simulator”。而且我需要使用位于 Mac 上名为“My Mac Dev Machine”的特定设备。在模拟器上运行的应用程序应该能够确定它在“My Mac Dev Machine”的模拟器上运行,并且应该允许来自网络的连接。有任何想法吗?
【问题讨论】:
对于那些有兴趣解决这个问题的人。我已经用IP地址解决了。我不是获取模拟器主机的名称,而是获取设备的 IP 地址,并在网络中显示我的应用程序,如“我遇到了同样的问题,并且能够在模拟器中使用 uname() 来获取主机的节点名称,如下所示:
#if TARGET_IPHONE_SIMULATOR
#include <sys/utsname.h>
#endif
...
#if TARGET_IPHONE_SIMULATOR
- (NSString *)testProxyHeaderValue
struct utsname name = ;
uname(&name);
return [NSString stringWithFormat:@"iPhone Simulator @ %s", name.nodename];
#else
- (NSString *)testProxyHeaderValue
return [[UIDevice currentDevice] name];
#endif
模拟器的节点名与宿主机的节点名相同,可以在命令行中使用uname -n
获取。
在 Swift 2 中:
var name = utsname()
uname(&name)
return withUnsafePointer(&name.nodename)
String.fromCString(UnsafePointer($0))!
【讨论】:
【参考方案2】:嗯...我知道你正在处理一个模拟器/模拟器,这不是很合乎逻辑,任何被模拟的东西都完全不知道它是模拟的吗?
【讨论】:
是的,我同意你的看法。如果 iPhone Simulator 允许为模拟器配置一个唯一的名称,那就太好了。它会解决问题。但不幸的是,事实并非如此。因此,这使得模拟器不同于设备。如果我知道主机的名称,我可以为模拟器分配一种“唯一”的名称。以上是关于iPhone/iPad 模拟器主机名的主要内容,如果未能解决你的问题,请参考以下文章
应用程序适用于 iphone ipad 模拟器但不适用于 ipad 设备:黑屏然后熄灭
在 Xcode 6.1、iPhone 6 plus、iPad 滑块黑屏
screenShot代码不适用于ipad,适用于iphone