uni-app 结合 PHP 实现单用户登陆
单用户登陆,即在一个应用中,同一个用户只能在线登陆一个,一个用户登陆,在其他设备上会被即时挤下线,确认后清空登陆该设备上的登陆装填并退回到登陆界面。
uni-app 是目前能通过使用 vue.js 框架只需要编写一套代码同时打包 Android,IOS,微信小程序,头条支付宝小程序和 H5,通过使用 HBuilder 工具方便调试与云打包,关于苹果证书,推荐 CW.PUB,https://cw.pub/index/document/index。使用 HBuilder 打越狱包通过那个网站签名就可以在正常苹果手机安装,不过网上还有其他些方法这里就不列举了。
一般 APP 做单用户登陆会使用第三方消息推送平台,虽然 uni-app 虽然也可以对接友盟,极光等推送平台。但还是因为时间,对接平台审核等流程时间不允许。之前使用 gatewayworkman 和 websocket 做了即时聊天,所以单用户登陆也使用 websocket 实现。
uni-app socket 单用户登陆例
uni-app 前端在初始化 socke 时发送当前设备的唯一标识,然后实时接收一个“强制退出”类型的消息,一下只是简单示例。
后端接收“设备唯一标识”参数,先查找缓存是否存在,不存在记录设备标识和 socket 的 clientid。
登陆接口接收设备标识,缓存或库里取出标识记录与当前接收的设备标识判断是否一致,不一致则根据缓存中的 clientid 发送消息。
工具类 sendToClient 方法部分
推送单用户登陆例
首先对接了友盟,包括前端后端都加了 SDK 和使用上了他们的方法。
消息推送有一个唯一值"token",这里简称“pushtoken”,由客户端生成,可以标识一个唯一的设备。
后端登陆时,接收 pushtoken,同样判断该 pushtoken 是否存在,不存在就以用户 ID 为键存储。
存在时再判断与缓存是否一致,一致则加长缓存时间,不一致则给旧的 pushtoken(缓存中的)推送一条消息,并缓存新的 pushtoken。
APP 客户端接收推送进行弹窗提示和退出处理。
以上是根据友盟的 SDK 封装的推送方法,其中包括单播,广播,跳应用 activity,跳网页连接等等。
评论