【问题标题】:How Whatsapp, Viber like application keep tracks of mobile users?Whatsapp、Viber 等应用程序如何跟踪移动用户?
【发布时间】:2012-06-04 09:51:36
【问题描述】:

我的意思是他们是否使用乒乓消息来获取用户连接信息?简而言之,他们如何知道向何处发送请求?

【问题讨论】:

  • 我猜每次网络连接发生变化时客户端都会重新注册服务。

标签: android ios


【解决方案1】:

在此类应用程序中,用户会根据 Android 设备唯一 ID 进行跟踪。

import android.provider.Settings.Secure;

private String android_id = Secure.getString(getContext().getContentResolver(),
                                                    Secure.ANDROID_ID);

【讨论】:

  • 其实我是针对连接层问这个问题的。他们如何找到或跟踪接收器连接信息?例如,让我们认为他们使用套接字来发送文本。但在这种情况下,他们应该知道在哪里打开连接。这就是我要找的。谢谢你的回答:)
【解决方案2】:

这些应用程序都连接到提供商的服务器并保持连接打开。因此服务器能够判断客户端是否已连接。从此,就是正常的网络通讯:

  1. 客户端 #1 将消息连同目标信息一起发送到服务器
  2. 服务器向目标客户端发送新消息可用的通知
  3. 客户端 #2 根据通知从服务器检索消息

【讨论】:

  • 但是他们有近百万的用户?你确定他们保持所有连接打开吗?
  • 这也是推送电子邮件的大致工作方式(服务器和客户端保持打开的连接),因此保持许多连接打开似乎不是问题。
  • 实际上连接将被蜂窝网络提供商关闭,但有一些方法可以让您通过使用名为 long polling 的东西来实现同样的目的。
  • 虽然这是事实的一部分,但这里缺少很多信息。这个问题特别是关于为 iOS 和 Android 制作的第 3 部分应用程序。在这些情况下,应用程序本身不会保持连接打开。这会消耗大量电池,并且操作系统不能让应用程序不断在后台运行。在 iOS 中,平台甚至不允许这样做。手机只为所有应用程序打开一个连接,即到 Apple/Google 提供的推送服务,进而跟踪用户注册接收推送通知的应用程序。
  • 我想我们应该更好地描述场景以便正确回答。 @jake_hetfield 暗示只有推送通知才是线索——这肯定只是部分正确,因为一旦应用程序打开就不需要这些,但只有在后台运行时才需要。
【解决方案3】:

对于 iOS,这些应用使用 APNS(Apple 推送通知服务)。

这是 Apple 提供的一项服务,可帮助应用程序在发生某些事情时提醒用户。

简而言之(和简化),它的工作原理是这样的

  • 安装应用时,系统会询问用户是否应允许该应用向手机发送推送消息。

  • 如果用户接受,应用程序将注册到 APNS 服务器(由 Apple 托管)并注册“设备令牌”。此令牌是一个序列号,可帮助 Apple 服务器跟踪手机。

  • 应用程序连接到应用程序服务器(例如 Viber 的服务器)并将设备令牌也发送到此服务器。服务器会将其连接到特定用户。

  • 当用户接到电话时,viber 服务器会联系 APNS 服务器,APNS 服务器反过来会提醒用户。

  • APNS 服务器跟踪用户在他/她的手机上拥有的所有应用程序。它将处理所有通知。 iPhone 和 APNS 服务器之间的连接是 iOS 平台内置的,并且会定期自动进行。

  • 当 viber 服务器告知 APNS 服务器特定设备令牌正在发生某些事情时,APNS 服务器将联系该特定电话并向该电话发送消息。在这种情况下,用户会被告知他/她有来自 viber 的来电。

可在此处找到 APNS 的文档: Local and push notification programming guide

说到Android,有一个等价的服务,C2DM 我的猜测是,这些应用在使用此服务的 Android 上以类似的方式运行。

如果您在开始使用 Push 时需要一点帮助,有一个名为 Urban Airship 的很棒的服务可以让事情变得更容易,它支持 iOS、Android 和其他平台。

编辑: 在应用程序已经打开的情况下,连接可以使用套接字连接保持打开状态,或者可以通过轮询来刷新内容。这取决于应用程序的时间紧迫性。

【讨论】:

  • 很好解释的答案!谢谢:)
  • 这些应用程序如何发送多媒体内容,如图像、视频,因为 APNS 不支持使用推送通知发送视频、图像?
  • 实际推送中不发送媒体,推送只是告诉用户有新消息(并显示推送中的部分文字)。当用户点击推送时,应用程序将打开,应用程序现在可以连接到服务器并下载所有消息和媒体内容。您可以在whatsapp中看到这一点,当您通过推送收到新消息并打开whatsapp时,新消息不在列表中。它会在几秒钟后出现,当whatsapp 实际从服务器下载它时。
  • 套接字连接或时间间隔轮询会大量消耗电池电量。长轮询(或彗星)是更好的解决方案。查看answer 了解 facebook 在其 Web 应用程序中的作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多