您好我需要检查用户是否已登录其他设备。
Sceario 1:如果用户登录,我正在进行服务调用,从0更改为1.如果用户注销,我将服务调用为0.这样做效果很好。
但问题是,如果用户在登录后卸载应用程序,而无需注销,如何管理此方案?因为它变为1,在这种情况下
场景2:我得到建议,如果用户在未注销的情况下卸载应用程序,或者您未在应用程序中登录直到1天,则应将用户状态更改为注销。但在这种情况下,如果用户登录在一个设备中,并在几个小时内立即卸载应用程序(可能是因为ram低),再次用户安装app意味着,在这种情况下,上述情况也会失败。
我使用gcm中的设备ID来使用,但设备ID也不是一个uinque,如果在同一设备中卸载应用并登录,设备ID也会有所不同。 请建议我如何解决这个问题。
感谢。
答案 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