我刚刚开始使用 Swift(和一般)开发 iOS 应用程序,我希望在创建需要通过任意网络(即不一定在同一网络上)进行通信的应用程序时获得一些关于流行做法的信息。我试着在谷歌上搜索这个,但答案并不完全是我想要的;希望有人能指出正确的方向。我不介意为服务付费,但不幸的是我对后端一无所知,也不想最终为我不需要的服务多付钱。例如,我发现了一个名为 Parse 的 API,但我认为它有太多的功能不利于我的应用程序。这是应用程序的主要前提:
就这么简单。一次发送的笔记可能不会太多,因此不需要大型数据库。我的问题如下:
非常感谢对任何问题的任何帮助。我觉得我什至不知道从哪里开始这样的项目。
编辑:澄清一下,我只是在寻找一个起点,而不是代码或任何实现。
最佳答案
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?
通常您的手机会向服务器发送 HTTP POST 请求,并在 HTTP 请求的正文中包含一些 JSON 格式的文本。
服务器然后在响应中以 JSON 格式响应更多文本。
在手机上,您使用 NSURLSession 来处理网络通信,并使用 NSJSONSerialization 来编码/解码内容。在服务器上,会有一些等效的东西可用。
通常在 HTTP POST JSON 文本中会有用户名和密码或一些其他身份验证系统,告诉服务器用户是否被允许做他们想做的任何事情。
手机和服务器之间的所有通信都必须使用 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/蓝牙网络上的情况下进行通信,您知道您需要一个后端。这是移动网络运营商(和家庭宽带 ISP)为防止恶意事件而强制实现的一项安全功能。
通常只有商业互联网连接(和商业路由器)才会允许匿名传入网络数据包到达通过该互联网连接连接的电话/计算机。消费者互联网连接只允许来自已知来源的流量(例如,如果您向谷歌询问一些数据,路由器将暂时允许谷歌向您发送一些数据。但是如果谷歌只是发送一些数据而没有电话/计算机在你的家要求它,那么它将被拒绝。
您应该能够利用我写的内容并进行大量研究。
如果您决定使用 PHP 编写自己的系统,它会预装 OS X(只需启用),只要您在电话上,就可以通过手机的 IP 地址访问它相同的 IP 地址。这至少应该让您开始进行测试/开发。
您唯一不会拥有的部分是 SSL。从 iOS 9 开始(它几乎就在这里!)你将需要禁用 NSURLSession 的内置 SSL 检查,否则它不会让你连接到测试服务器。
关于ios - Swift - 需要在不同网络上的手机之间进行通信的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32083045/
当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr
我注意到像bundler这样的项目在每个specfile中执行requirespec_helper我还注意到rspec使用选项--require,它允许您在引导rspec时要求一个文件。您还可以将其添加到.rspec文件中,因此只要您运行不带参数的rspec就会添加它。使用上述方法有什么缺点可以解释为什么像bundler这样的项目选择在每个规范文件中都需要spec_helper吗? 最佳答案 我不在Bundler上工作,所以我不能直接谈论他们的做法。并非所有项目都checkin.rspec文件。原因是这个文件,通常按照当前的惯例,只
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que