Android开发中单用户登录的逻辑

今天在程序中应产品的需求设计,程序只能单用户登录,其他设备正在登录则会被挤掉。

下面我把我做这部分的逻辑详细说明一下:


首先是当新用户第一次注册的时候,前台会把设备号和手机号给后台(设备号是每个手机本身的属性),然后当A用户登录C设备后,正常情况是通过点击程序中的退出按钮告诉后台该用户已经已经退出,但是如果A用户在登录情况下,直接把程序卸载了,这时候后台是不知道A用户的情况的,当A用户在次下载该程序并登录,同样的,登录的时候把手机号和设备号发给后台,后台检测这个手机号登录使用的设备号和他数据库里正在登录的做对比,发现是一样的,就把之前那个状态强行退出,这次登录的作为最新的登录情况。如果是A用户登录C设备,然后A用户在登录B设备,这时候C设备的情况分为两种:主动和被动,被动是:后台检测到设备号是不一样的,肯定是在多个地方登录了,后台做的处理是,它通过第三方的推送(后台是通过设备号,此时也就是把设备号作为了一个别名进行推送),推送给别名也就是设备号为C设备的手机,A用户在C设备上的广播接受者的onReceiver()方法里 接收到推送并进行处理(弹出框什么的),;;另一个情况主动:第三方推送在推送期间,手机还没接收到推送,A用户还要在C设备上操作其他接口,后台会给我们返回一个状态,比如是status ,我们根据这个状态去处理(比如弹出框)。


对于目前我们使用的推送:比如信鸽,通过信鸽推送一跳信息给用户,分为两种情况:用户用不用自定义通知栏;信鸽推送中用户需要在 Application中,用XGPushManager.setNotifactionCallback()方法,进行拦截,拦截的意思是,当后台通过信鸽推送消息时候,我们如果进行刚才调用XGPushManager.setNotifactionCallback()方法,拦截后,我们可以自定义通知栏显示的ui,然后在通过信鸽封装好的发送通知api进行发送,然后就在手机的通知栏里有了通知,此处必须要说明,是要用信鸽封装的通知api发送,不然,当用户在手机通知栏里接收到通知后,进行点击,或者删除等等,我们就在MessageReceiver 里面就检测不到用户的行为了,class MessageReceiver extends XGPushBaseReceiver{

 }

这个接收类里面都是回调的方法,例如:通知展示   反注册   点击通知    删除通知   注册通知

另一种情况是,我们不在application中拦截,就是不做任何操作,则信鸽就会自动发送到手机通知栏。


就目前的推送,只要不拦截,都是第三方推送直接发送到通知栏notify, 用户不用操作。

你可能感兴趣的:(安卓开发)