我开发的应用程序可以让用户根据Google地图查找附近的地方。想要使用我的应用程序的用户必须先使用他们的Google帐户注册才能使用我的应用程序并使用他们的帐户登录。用户成功登录我的应用程序后,我的应用程序会保存一些共享首选项以指示用户已登录。因此,用户无需再次登录。
我的应用程序里面有很多活动和片段。一段时间后,我想为用户添加阻止功能。如果用户已被阻止,则在管理员取消阻止其帐户之前,他们无法再次使用我的应用程序。因此,管理员可以阻止来自Web服务器的用户帐户。管理员可在用户使用我的应用程序时阻止用户所以我需要一个实时系统阻止。
我需要一些想法,只需在我的应用程序上实现。我的应用程序包含许多活动和片段。如果想法是检查每个活动中的用户帐户和片段到数据库服务器,我认为这是个坏主意。因为我可以消耗用户的带宽,并为我提供了大量的工作。我需要一些实时提供阻塞系统的想法。
因此,如果用户被阻止,他们就无法使用我的应用程序:
任何想法?请提供一些代码或链接以供参考。
感谢。
答案 0 :(得分:0)
您的代码中可能有boolean isBlocked
。 Here is a simple example
在启动活动的onCreate
中,您从服务器读取此值(因此每次打开应用时都会这样)并检查其值。每次读取此值时,您还可以将其存储在SharedPreferences
中lastKnownIsBlockedValue
,然后在用户没有互联网连接时读取此值。这样,如果您阻止用户并关闭互联网,它们仍会被阻止。
此外,如果用户被阻止,在onCreate()
内,并且在检查之后,您可以启动另一个活动,告诉他“您被阻止”或沿着这些线路。否则,您可以继续正常的应用流程。
所有案例都以这种方式涵盖,非常简单:
即使他们正在使用应用程序。
由于每次加载应用程序时都会从服务器读取数据,因此无论他们使用应用程序的时间长短,一旦被阻止,他们就会被阻止。
即使他们试图关闭申请并再次开放
与上述原因相同,如果他们与互联网断开连接,您可以使用SharedPreferences
中存储的值。
即使他们试图在“设置/应用程序管理器/我的应用程序/清除数据”中清除应用程序数据
与第一个相同的原因,如果他们有互联网。但是,如果您阻止他们并断开互联网连接,并按清除数据可能会出现问题。如果他们设法删除存储在SharedPreferences
中的内容,他们将会解锁,但只有在他们与互联网断开连接时才会被解锁。老实说,我不确定Clear Data如何工作并删除SharedPreferences
所以我相信其他人会在这里填补空白:)
甚至他们在另一个应用程序上并返回我的应用程序(onResume())
这样做是因为,一旦调用onCreate()
并确定用户被阻止,您就会启动第二个活动,该活动只会告诉他们“抱歉您被阻止”或其他任何内容,以便调用onResume()
对于那项活动而不是你的常规活动。
甚至他们卸载应用程序并从Play商店下载。
与第一个相同的推理。您阻止的用户在线保存,即使他们重新安装应用程序也没问题。
答案 1 :(得分:0)
您可以使用GCM(Google Cloud Messaging)。请阅读this
想法就是这样。管理员将发送推送给用户阻止。您的app上的接收将通过GCM接收块推送。在接收方法上,您可以关闭应用程序,也可以弹出窗口阻止。并且还注销用户,这样当他再次登录时,app将检查服务器上该用户的阻止状态。
当admin想要取消阻止用户时,只需将服务器上的阻止状态更改为UNBLOCK
即可