【问题标题】:Strategy for fast IOS contacts "friend finder" [closed]快速IOS联系人“朋友查找器”的策略[关闭]
【发布时间】:2014-01-26 00:08:34
【问题描述】:

例子:

  • Snapchat - 添加好友(来自手机联系人)
  • Twitter - 查找朋友(通过电话联系人)

我从 IOS 设备联系人中提取姓名、电话号码、电子邮件地址没有问题。我一直在尝试不同的方法和策略来:

  • 将联系人上传到网络服务器
  • 使用电话号码和电子邮件地址将列表与服务器数据库进行比较(不必存储副本)
  • 返回既是用户又不是用户的联系人列表

我尝试 500 次联系大约需要 30-45 秒。使用同一组联系人大约需要 2-5 秒才能使用 snapchat 或 twitter。

他们的秘密是什么?好的 obj-c 编码?好的数据库设计?我很欣赏他们会拥有高效的托管堆栈,但我没想到会出现这种时差。

是不是更好:

  1. 尝试批量上传所有联系人并返回包含命中和未命中的 json 字符串。
  2. 每个请求一个 HTTP 请求?
  3. 打开某种持久连接(例如 websocket)来检查每个联系人?
  4. 我还没有考虑其他一些明显的策略或方法?

【问题讨论】:

  • 您好,您会演示联系人列表的解决方案吗?我的解决方案需要很长时间。

标签: ios objective-c networking ruby-on-rails-4


【解决方案1】:

我认为关键是通过使用单个联系信息进行搜索而不是使用姓名、号码和电子邮件地址来缩小请求。如果您的服务需要其中任何一个进行注册,例如电话号码,请仅使用电话号码。当您从服务器返回信息时,请勿发送您不需要的任何内容,例如您找不到匹配的电话号码。

其次,如果您拥有技术知识,那么您的选项 #3 也不错。我推荐一个名为SocketRocket 的库。它是由 Square 的开发者开发的,它使在前端实现 websocket 变得非常容易。

我无法与您的后端交谈,但我使用 node.js 和这个包:https://github.com/einaros/ws 非常易于安装 (npm install ws) 并且也易于使用。

【讨论】:

  • 我排除了 Web Socket 路由。当设备位于代理后面时,似乎存在大问题。如果没有更多信息,我猜 IOS 7 不会与 3rd 方应用程序共享/包含代理信息。我真的尽量减少我发送的数据。代码不再那么冗长了,但是对于 1500 个联系人,我的响应时间缩短到了 2 秒。这是比较电话号码和电子邮件地址。一旦数据库填充了几百万条记录,这些时间可能会减慢。然后我需要查看索引和其他读取服务器,但这将是一个很好的问题。
  • 如果有人需要,我可以在 Objective-C 和服务器端使用 MySQL 和 Rails 4 发布我的方法客户端的更详细描述。
  • 嘿 Chabber,我知道你不久前发布了这个,但如果你还记得你采取的方法,如果你能发布它,我将不胜感激。我和你以前的情况类似,不知道该怎么办。
猜你喜欢
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
相关资源
最近更新 更多