Swift - 需要在不同网络上的手机之间进行通信的应用
Swift - app that requires communication between phones on different networks
我刚刚开始使用 Swift 进行 iOS 应用程序开发(一般来说),我希望在创建需要通过任意网络进行通信的应用程序时获得一些关于流行做法的信息 (即不一定在同一网络上)。我试着在 google 上搜索这个,但答案并不完全是我要找的;希望有人能指出正确的方向。我不介意为服务付费,但不幸的是我对后端一无所知,也不想最终为我不需要的服务多付钱。例如,我找到了一个名为 Parse 的 API,但我认为它有太多不利于我的应用程序的功能。这是该应用程序的主要前提:
- 该应用程序有两个版本 - 一个供管理员使用,一个供员工使用
- 管理员可以post将注释添加到中央注释列表中,供员工查看
- 员工可以访问此列表并滚动浏览以选择他们想要打开的列表。一定时间后,笔记过期并自动从列表中删除
就这么简单。一次发送的笔记可能不会太多,因此不需要大型数据库。我的问题如下:
- 我是否需要一个数据库来存储笔记,或者我可以用其他方式处理它吗?
- 通信一般是怎么处理的?我遇到的唯一事情是当您使用相同的 WiFi 或蓝牙时进行通信的方式,但除此之外我没有看到任何东西。像 GroupMe 这样的应用如何与用户沟通?
- 这是一个比较笼统的问题,但是您如何判断您是否需要后端?我仍然对前端和后端之间的交互感到困惑。
非常感谢对任何问题的任何帮助。感觉这样的项目我都不知道从何下手了
编辑:澄清一下,我只是在寻找一个起点,而不是代码或任何实现。
It's as simple as that. There likely won't be too many notes getting sent at once, so a large database isn't needed. My questions are as follows:
Do I need a database to store the notes, or can I handle it in some other way?
是的,您需要某种数据库。这可能是像 MySQL 这样复杂的东西,也可能是像将每条笔记写入磁盘的 txt 文件这样简单的东西,文件名是笔记的日期。
您可以使用像 Parse 这样的服务或 运行 您自己的 PHP 服务器并自己编写软件。 Parse 对于小型数据库来说更便宜,运行使用你自己的 PHP 服务器对于大型数据库来说更便宜,而且它给你更多的控制权。
(您不必使用 PHP,但这是最流行的语言,也是我使用的语言)。
How is communication generally handled? The only things I've come across are ways to communicate when you're on the same WiFi or Bluetooth, but I haven't seen anything outside of that. How does an app like GroupMe communicate to users?
通常您的 phone 会向服务器发送一个 HTTP POST 请求,并在 HTTP 请求的正文中包含一些 JSON 格式的文本。
服务器随后在响应中以 JSON 格式的更多文本进行响应。
在 phone 上,您使用 NSURLSession 来处理网络通信,并使用 NSJSON 序列化 encode/decode 内容。在服务器上,会有一些等效的东西可用。
通常在 HTTP POST JSON 文本中会有用户名和密码或一些其他身份验证系统,告诉服务器用户是否被允许做任何他们'正在尝试做。
phone 和服务器之间的所有通信都必须使用 SSL 加密以保护您的用户。做好功课,确保在将应用程序部署到商店之前做好这一部分。
Parse 将为您处理所有这些事情,但至少了解正在发生的事情是件好事。
This is more of a general question, but how can you tell if you need a backend or not? I'm still kinda confused on the interaction between the frontend and backend.
如果您希望两个设备在不在同一 WiFi/Bluetooth 网络的情况下进行通信,您知道您需要一个后端。这是移动网络运营商(和家庭宽带 ISP)强制执行的一项安全功能,以防止恶意 activity。
通常只有商业互联网连接(和商业路由器)才会允许匿名传入网络数据包到达通过该互联网连接连接的 phone/computer。消费者互联网连接只允许来自已知来源的流量(例如,如果您向 Google 请求某些数据,路由器将暂时允许 Google 向您发送一些数据。但是如果 Google 只是发送一些没有 phone/computer 的数据在你家里要求它,然后它会被拒绝)。
你应该能够利用我写的东西并做大量的研究。
如果您决定在 PHP 中编写自己的系统,它会预装 OS X(只需启用),您可以通过 IP 地址访问它phone 只要您使用相同的 IP 地址。这至少应该让你开始 testing/development 目的。
您唯一没有的部分是 SSL。从 iOS 9 开始(快到了!)您将需要禁用 NSURLSession 的内置 SSL 检查,否则它不会让您连接到测试服务器。
我刚刚开始使用 Swift 进行 iOS 应用程序开发(一般来说),我希望在创建需要通过任意网络进行通信的应用程序时获得一些关于流行做法的信息 (即不一定在同一网络上)。我试着在 google 上搜索这个,但答案并不完全是我要找的;希望有人能指出正确的方向。我不介意为服务付费,但不幸的是我对后端一无所知,也不想最终为我不需要的服务多付钱。例如,我找到了一个名为 Parse 的 API,但我认为它有太多不利于我的应用程序的功能。这是该应用程序的主要前提:
- 该应用程序有两个版本 - 一个供管理员使用,一个供员工使用
- 管理员可以post将注释添加到中央注释列表中,供员工查看
- 员工可以访问此列表并滚动浏览以选择他们想要打开的列表。一定时间后,笔记过期并自动从列表中删除
就这么简单。一次发送的笔记可能不会太多,因此不需要大型数据库。我的问题如下:
- 我是否需要一个数据库来存储笔记,或者我可以用其他方式处理它吗?
- 通信一般是怎么处理的?我遇到的唯一事情是当您使用相同的 WiFi 或蓝牙时进行通信的方式,但除此之外我没有看到任何东西。像 GroupMe 这样的应用如何与用户沟通?
- 这是一个比较笼统的问题,但是您如何判断您是否需要后端?我仍然对前端和后端之间的交互感到困惑。
非常感谢对任何问题的任何帮助。感觉这样的项目我都不知道从何下手了
编辑:澄清一下,我只是在寻找一个起点,而不是代码或任何实现。
It's as simple as that. There likely won't be too many notes getting sent at once, so a large database isn't needed. My questions are as follows:
Do I need a database to store the notes, or can I handle it in some other way?
是的,您需要某种数据库。这可能是像 MySQL 这样复杂的东西,也可能是像将每条笔记写入磁盘的 txt 文件这样简单的东西,文件名是笔记的日期。
您可以使用像 Parse 这样的服务或 运行 您自己的 PHP 服务器并自己编写软件。 Parse 对于小型数据库来说更便宜,运行使用你自己的 PHP 服务器对于大型数据库来说更便宜,而且它给你更多的控制权。
(您不必使用 PHP,但这是最流行的语言,也是我使用的语言)。
How is communication generally handled? The only things I've come across are ways to communicate when you're on the same WiFi or Bluetooth, but I haven't seen anything outside of that. How does an app like GroupMe communicate to users?
通常您的 phone 会向服务器发送一个 HTTP POST 请求,并在 HTTP 请求的正文中包含一些 JSON 格式的文本。
服务器随后在响应中以 JSON 格式的更多文本进行响应。
在 phone 上,您使用 NSURLSession 来处理网络通信,并使用 NSJSON 序列化 encode/decode 内容。在服务器上,会有一些等效的东西可用。
通常在 HTTP POST JSON 文本中会有用户名和密码或一些其他身份验证系统,告诉服务器用户是否被允许做任何他们'正在尝试做。
phone 和服务器之间的所有通信都必须使用 SSL 加密以保护您的用户。做好功课,确保在将应用程序部署到商店之前做好这一部分。
Parse 将为您处理所有这些事情,但至少了解正在发生的事情是件好事。
This is more of a general question, but how can you tell if you need a backend or not? I'm still kinda confused on the interaction between the frontend and backend.
如果您希望两个设备在不在同一 WiFi/Bluetooth 网络的情况下进行通信,您知道您需要一个后端。这是移动网络运营商(和家庭宽带 ISP)强制执行的一项安全功能,以防止恶意 activity。
通常只有商业互联网连接(和商业路由器)才会允许匿名传入网络数据包到达通过该互联网连接连接的 phone/computer。消费者互联网连接只允许来自已知来源的流量(例如,如果您向 Google 请求某些数据,路由器将暂时允许 Google 向您发送一些数据。但是如果 Google 只是发送一些没有 phone/computer 的数据在你家里要求它,然后它会被拒绝)。
你应该能够利用我写的东西并做大量的研究。
如果您决定在 PHP 中编写自己的系统,它会预装 OS X(只需启用),您可以通过 IP 地址访问它phone 只要您使用相同的 IP 地址。这至少应该让你开始 testing/development 目的。
您唯一没有的部分是 SSL。从 iOS 9 开始(快到了!)您将需要禁用 NSURLSession 的内置 SSL 检查,否则它不会让您连接到测试服务器。