Whatsapp,Viber之类的应用程序如何保留移动用户的踪迹?

时间:2012-05-30 07:12:19

标签: android ios

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

3 个答案:

答案 0 :(得分:11)

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

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

简而言之(简化),就像这样

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

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

  • 应用程序连接到应用程序服务器(例如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和其他平台。

编辑: 在应用程序已打开的情况下,可以使用套接字连接保持打开连接,也可以通过轮询刷新内容。这取决于应用程序的时间关键程度。

答案 1 :(得分:1)

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

import android.provider.Settings.Secure;

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

答案 2 :(得分:0)

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

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