【发布时间】:2013-08-23 14:46:54
【问题描述】:
背景:
我即将开始开发移动和桌面应用程序。它们都将连接到本地 wifi 网络(没有互联网连接),并且需要相互通信。一开始,我们将 iOS 和 Windows 定位为两个平台,目的是按顺序添加 Linux、OSX 和 Android 支持。桌面应用程序主要是一个数据库服务器/通知中心,用于接收来自 iOS 应用程序的更新并将数据发送到其他 iOS 应用程序。桌面应用程序可能有一个前端,但如果需要,我们也可以将其合并到 iOS 应用程序中。
目前我们只希望 iOS 应用程序自动检测它何时与服务器位于同一网络上,然后显示该服务器发送的数据(类似 bonjour)。
据我所知,我们可以采取两条路径来实现这一点
为每个平台(Windows、Linux、OSX)创建一个完全原生的应用程序。 Pro:我们喜欢使用本地应用程序来提高性能和易于安装的想法。 缺点:我对 Windows 或 Linux 开发一无所知。
创建一个使用 Web 技术(可能是 python)构建的应用程序,并创建一个易于使用的安装程序,该安装程序将在桌面计算机之外创建一个本地服务器,移动应用程序可以与之通信。 优点:大部分开发都是跨平台的,安装程序应该很容易移植。 缺点:如果我们确实想向服务器应用程序添加前端,它将不是平台原生的,而是使用 css+html+javascript GUI。
问题:
我的问题是如何在每种情况下实现 iOS 应用和服务器应用之间的连接。
如何通过本地网络接收和发送通知。
如果没有静态 ip,如何使用 NSURLConnection 连接到服务器?
我希望这很清楚。如果不是,请询问,我会澄清。
2013 年 9 月 6 日更新
希望这能解决问题。我需要一个桌面应用程序来管理数据库,该应用程序将连接到未连接到互联网的本地无线网络上的 iOS 设备。我可以使用 http 协议(最好使用烧瓶应用程序)或使用应用程序和服务器之间的直接套接字连接来做到这一点。我的问题是以上两种选择中哪一种最好?我的偏好是使用 Python+Flask 的基于 Web 的应用程序,但我不知道如何将 iOS 应用程序连接到在本地网络上运行且没有静态 IP 的烧瓶应用程序。对此的任何建议将不胜感激。
【问题讨论】:
-
好吧,我想你可以尝试从 192.168.1.* 连接到 192.168.1.*,在 Web 服务器上做出简单的响应,当 iOS 客户端尝试连接时,服务器发送欢迎响应。
-
使用桌面windows机器你可以使用域,例如
http://my-server/my_web_app,当然,iOS不能连接到windows域。并非没有一些疯狂的技巧。因此 windows 域 = 不可用。 -
可能存在措辞问题。您真的在谈论 APNS 意义上的系统通知吗?如果是的话,我真的怀疑苹果会让你绕过它的服务器(假设这甚至是远程可能的)
-
@Alex 我刚刚试图通过更新来澄清这个问题。
-
好的,知道了。因此,除非您的应用程序已经在前台运行,否则我认为这是不可能的。 iOS 上只有一种通知机制,您无法创建自己的通知机制,以便它唤醒、启动您的应用程序或发送后台通知。您可以让您的应用程序在后台运行,但有 5 分钟的限制。对您的问题不是很有用。您是否可以使用公司代理来允许 apns 通过,同时阻止所有其他 Internet 连接?
标签: python ios windows web bonjour