如何检查用户是否已登录其他设备android?

时间:2015-09-24 07:35:14

标签: android google-cloud-messaging

您好我需要检查用户是否已登录其他设备。

Sceario 1:如果用户登录,我正在进行服务调用,从0更改为1.如果用户注销,我将服务调用为0.这样做效果很好。

但问题是,如果用户在登录后卸载应用程序,而无需注销,如何管理此方案?因为它变为1,在这种情况下

场景2:我得到建议,如果用户在未注销的情况下卸载应用程序,或者您未在应用程序中登录直到1天,则应将用户状态更改为注销。但在这种情况下,如果用户登录在一个设备中,并在几个小时内立即卸载应用程序(可能是因为ram低),再次用户安装app意味着,在这种情况下,上述情况也会失败。

我使用gcm中的设备ID来使用,但设备ID也不是一个uinque,如果在同一设备中卸载应用并登录,设备ID也会有所不同。 请建议我如何解决这个问题。

感谢。

3 个答案:

答案 0 :(得分:0)

要检查用户是否已卸载该应用并再次安装并登录,您可以使用Android设备的唯一ID:

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

有关详细信息,请参阅here

答案 1 :(得分:0)

方案1是最简单的,但有点编辑:

而不只是做一个" ping"登录/退出服务(如果您因任何原因错过退出可能会导致一些问题,如卸载应用程序,网络问题等),更简单的是定时ping(让我们说每30秒,你的应用程序)发送ping)

在服务器端,在ping接收时,启动计时器并为延迟保留一些安全余量。让我们说,如果45秒内没有其他ping,你会自动注销

你可以调整持续时间或潜在机制,但主要想法是

答案 2 :(得分:0)

您可以使用与设备关联的唯一设备ID,即IMEI号码。

TelephonyManager telephonyManager =
        (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String deviceId = telephonyManager.getDeviceId();

此设备ID 未重置,并且设备保持不变。

有关详细信息,请参阅here