首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为Web + iPhone设置查找开发机器的IP地址

为Web + iPhone设置查找开发机器的IP地址
EN

Stack Overflow用户
提问于 2010-10-01 04:11:18
回答 4查看 1.4K关注 0票数 2

我正在开发一些iPhone应用程序,这些应用程序与基于HTTP服务器(碰巧是Rails,但这里不相关)通信,而且经常会被从iPhone设备到我的MacBook Pro的IP (Un)可达性所咬伤-- iPhone设备必须击中MBP上的URL。

现在,我在Config.h:

代码语言:javascript
运行
复制
#if (TARGET_IPHONE_SIMULATOR)
// for iPhone Simulator
#define API_BASE  @"http://127.0.0.1:3000/api"
#else
// for iPhone Device
#define API_BASE  @"http://10.0.0.1:3000/api"
#endif

只要: 1.您自己工作,2.您可以完全控制DHCP服务器,3.或者您只能使用iPhone模拟器并使用回送地址(即,不需要推送通知或应用程序内购买)。

但我经常与其他人在远程工作,经常来自咖啡馆或图书馆,所以这让我很困扰--现在我必须手动查找MBP分配的IP地址,将上述常量API_BASE从"10.0.0.1“重写到新地址,并且在提交git或svn之前不要忘记恢复到原来的位置。

有没有任何方法可以从Xcode内部以编程方式获取开发机器的IP地址,并在每次构建的基础上将其发送到iPhone设备?

更新

仅仅使用Bonjour是不够的,因为团队中的每台机器都有不同的名称。

EN

回答 4

Stack Overflow用户

发布于 2010-10-08 12:54:59

好的,所以它需要与多个开发环境一起工作,这意味着Bonjour不会削减它。

我不太熟悉XCode构建环境。您能以某种方式设置由shell计算的环境变量吗?如果您可以以某种方式得到以下评估:

代码语言:javascript
运行
复制
DEV_IP_ADDRESS=$(/sbin/ifconfig |awk '/inet 127.0.0.1/ { next } /inet / { print $2; exit }')

然后作为预处理器define传入

代码语言:javascript
运行
复制
gcc <...> -DDEV_IP_ADDRESS="${DEV_IP_ADDRESS}"

在守则中:

代码语言:javascript
运行
复制
#define API_BASE "http://" DEV_IP_ADDRESS ":3000/api"

(我有点生疏,但我隐约记得,预处理程序连接着连续的字符串,对吗?)

如果你能加入他们的话,那就可以了。-)

或者你可以和糖果结合在一起,让神秘的黑客更能忍受。$HOSTNAME可能已经在您的环境中定义了,所以如果您可以将其作为预处理器#define进行排序。

票数 4
EN

Stack Overflow用户

发布于 2010-10-01 04:51:21

因为它已经是一个URL,所以您可以使用主机名而不是IP,并且可以用Bonjour解析它。例如,我正在编写的笔记本名为Jura,这意味着它有一个jura.local的Bonjour主机名。

您可以通过标题到“共享首选项”窗格查找计算机的Bonjour DNS名称。在计算机名下,有句话开头,“计算机在你的本地网络.”并以您想要使用的名称结尾。

然后可以将上述代码更改为:

代码语言:javascript
运行
复制
#define API_BASE  @"http://my-macbook-pro.local:3000/api"

因为相同的机制将解析模拟器中和设备上的URL。

票数 2
EN

Stack Overflow用户

发布于 2010-10-01 04:24:50

你可以用bonjour

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3836488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档