2014-09-19 47 views
-1

我開發的應用程序可以讓用戶根據Google地圖找到附近的地方。想要使用我的應用程序的用戶必須使用他們的Google帳戶註冊才能使用我的應用程序並使用他們的帳戶登錄。用戶在我的應用程序中成功登錄後,我的應用程序會保存一些共享首選項以指示用戶已登錄。因此,在此之後,用戶無需再次登錄。Android的阻止用戶使用應用程序

我的應用程序裏面有很多活動和片段。一段時間後,我想爲用戶添加阻止功能。如果用戶被阻止,他們將無法再使用我的應用程序,直到管理員解除其帳戶鎖定。因此,管理員可以阻止來自Web服務器的用戶帳戶。管理員可以在用戶使用我的應用程序時攔截用所以我需要一個實時系統阻止。

我需要一些想法,簡單地在我的應用程序上實現。我的應用程序包含許多活動和片段。如果這個想法是在每個活動中檢查用戶帳戶,並將其分段到數據庫服務器,我認爲它是一個壞主意。因爲我可以消費用戶的帶寬,併爲我提供了很多工作。我需要一些實時提供阻止系統的想法。

所以,如果用戶已被封鎖,他們無法使用我的應用程序:

  1. 即使他們使用的應用程序。
  2. 即使當他們試圖關閉應用程序並再次打開
  3. 即使當他們試圖清除設置/應用程序管理器應用程序的數據/我的應用程序/清除數據
  4. 即使他們在另一個應用程序,並回到我的應用程序(的onResume ())
  5. 甚至他們卸載應用程序並從Play商店下載。

任何想法?請提供一些代碼或鏈接以供參考。

謝謝。

+0

爲什麼它需要關閉?怎麼了?我需要一些想法。我在哪裏必須在這裏問我的問題? – NPE 2014-09-19 05:51:58

回答

0

你的代碼中可能有一個boolean isBlockedHere is a simple example

在啓動活動的onCreate中,您從服務器讀取此值(以便每次啓動應用程序時)並檢查其值。每次讀取此值時,您還可以將其存儲在SharedPreferences中作爲lastKnownIsBlockedValue,然後在用戶沒有互聯網連接時讀取該值。這樣,如果您阻止用戶並關閉互聯網,他們仍然被阻止。

此外,如果用戶被阻止,在onCreate()裏面,並且在檢查之後,您可以啓動另一個活動,告訴他「您被阻止」或沿着這些線路。否則,您可以繼續正常流程的應用程序。

您所有的情況下都涉及這種方式和它相當簡單:

即使他們使用的應用程序。

由於您每次從應用程序加載時都從服務器讀取數據,無論他們使用應用程序多長時間,一旦它們被阻止,就會被阻止。

即使當他們試圖關閉應用程序並再次打開

原因同上,再加上你可以使用存儲在SharedPreferences如果他們從互聯網上斷開值。

即使當他們試圖在設置/應用程序管理器來清除應用數據/我的應用/清除數據

同樣的理由,如果他們有互聯網的第一個。但是,如果您阻止他們,並且他們從互聯網上斷開連接,並按清除數據,則可能有問題。如果他們設法刪除存儲在SharedPreferences中的內容,他們將會被解除封鎖,但只有在他們與互聯網保持斷開連接時。老實說,我不知道清除數據是如何工作的,並不會刪除SharedPreferences所以我相信別人,這裏將填寫在本欄:)

即使他們在另一個應用程序,並回到我的應用程序填寫(的onResume() )

這樣做是因爲,一旦onCreate()叫你確定用戶被阻止,你推出,只是告訴他們:「對不起,你被封鎖」或任何這樣的onResume()將被稱爲該活動與第二活動不是你的常客。

甚至他們卸載應用程序並從Play商店下載。

與第一個相同的推理。你封鎖的用戶在線保存,即使他們重新安裝應用程序,你也可以。

0

您可以使用GCM(Google Cloud Messaging)。請閱讀this

想法就是這樣。當管理員發送推送給用戶阻止。收到您的應用程序將通過GCM接收塊推送。在接收方法,你可以關閉你的應用程序,或者你可以給彈出來阻止。並且還要註銷用戶,因此當他再次登錄時,應用程序將在服務器上檢查該用戶的阻止狀態。

而當管理員想要解除阻止用戶,然後只是將服務器上的塊狀態更改爲UNBLOCK