Swift - 需要在不同网络上的电话之间进行通信的应用

时间:2015-08-18 21:40:00

标签: ios swift communication

我刚刚开始使用Swift进行iOS应用程序开发(一般情况下),我希望在创建需要通过任意网络进行通信的应用程序(即不一定在同一网络上)时,获取有关流行做法的一些信息。我尝试在谷歌搜索这个,但答案并不完全是我想要的;希望有人可以指出正确的方向。我不介意为服务付费,但不幸的是我不知道关于后端的第一件事,并且不想为我不需要的服务付出过高的代价。例如,我发现了一个名为Parse的API,但我认为它有太多的功能,不会使我的应用程序受益。这是该应用程序的主要前提:

  1. 该应用程序有两个版本 - 一个用于管理员,一个用于员工
  2. 管理员可以将笔记发布到中央笔记列表,供员工查看
  3. 员工可以访问此列表并滚动浏览它以选择要打开的列表。在一定时间后,笔记将过期并自动从列表中删除
  4. 就这么简单。一次发送的笔记可能不会太多,因此不需要大型数据库。我的问题如下:

    • 我是否需要一个数据库来存储笔记,或者我可以用其他方式处理它吗?
    • 通讯如何处理?我遇到的唯一的事情是当你使用相同的WiFi或蓝牙时进行通信的方式,但我没有看到任何其他内容。 GroupMe这样的应用如何与用户沟通?
    • 这是一个更普遍的问题,但是你怎么知道你是否需要后端?我仍然对前端和后端之间的交互感到困惑。

    非常感谢任何问题的任何帮助。我觉得好像我甚至不知道从哪个项目开始。

    编辑:为了澄清,我只是在寻找一个起点,而不是代码或任何实现。

1 个答案:

答案 0 :(得分:3)

  

就这么简单。一次发送的笔记可能不会太多,因此不需要大型数据库。我的问题如下:

     

我是否需要一个数据库来存储笔记,还是可以通过其他方式处理它?<​​/ p>

是的,你需要某种数据库。这可能是像MySQL这样复杂的东西,比如为磁盘上的每个音符写一个txt文件,文件名是音符的日期。

您可以使用像Parse这样的服务或运行您自己的PHP服务器并自行编写软件。 Parse对于小型数据库来说更便宜,运行自己的PHP服务器对于大型数据库来说更便宜,它可以让您获得更多控制权。

(你不必使用PHP,但这是这些东西最流行的语言,而且是我使用的。)

  

通讯如何处理?我遇到的唯一的事情是当你使用相同的WiFi或蓝牙时进行通信的方式,但我没有看到任何其他内容。 GroupMe这样的应用如何与用户沟通?

通常,您的手机会向HTTP服务器发送HTTP POST请求,并在HTTP请求正文中以JSON格式发送一些文本。

然后,服务器在响应中以JSON格式响应更多文本。

在手机上,您使用NSURLSession来处理网络通信,使用NSJSONSerialization来编码/解码内容。在服务器上,会有一些等效的东西。

通常在HTTP POST JSON文本中会有一个用户名和密码或其他一些身份验证系统告诉服务器是否允许用户做他们想做的任何事情。

必须使用SSL对手机和服务器之间的所有通信进行加密,以保护您的用户。做好功课,确保在将应用程序部署到商店之前就完成了这一部分。

Parse将为您处理所有这些事情,但至少可以理解发生了什么。

  

这是一个更普遍的问题,但你怎么知道你是否需要后端?我仍然对前端和后端之间的相互作用感到困惑。

如果您希望两台设备在不使用同一WiFi /蓝牙网络的情况下进行通信,则需要后端。这是一种安全功能,单元网络运营商(和家庭宽带ISP)强制执行以防止恶意活动。

通常,只有商业互联网连接(和商用路由器)才允许匿名传入网络数据包通过该互联网连接连接到电话/计算机。消费者互联网连接仅允许来自已知来源的流量(例如,如果您向Google询问某些数据,路由器将暂时允许Google向您发送一些数据。但是,如果Google只发送一些没有手机/电脑的数据你的家要求它,那么它将被拒绝。)

你应该能够把我写的东西拿出来做一堆研究。

如果您决定使用PHP编写自己的系统,它会预先安装OS X(只需要启用),只要您在手机上,就可以通过手机的IP地址访问它。相同的IP地址。这应该让你至少开始测试/开发目的。

你唯一没有的部分是SSL。从iOS 9开始(几乎就在这里!),您需要禁用NSURLSession内置的SSL检查,否则它将无法连接到测试服务器。