記住使用者身分

每當你記得自己的名字,大家都會很喜歡。如要使應用程式更易於使用,最有效的方式之一就是記住使用者的使用者身分,特別是在使用者升級到新裝置,或開始攜帶平板電腦和手機時。但該如何得知使用者的身分?那麼要如何在新裝置中 辨識他們?

對許多應用程式而言,答案是 AccountManager API。您只要授予權限,就能透過客戶經理擷取使用者儲存在裝置上的帳戶名稱。

與使用者帳戶整合可讓您執行各種操作,例如:

  • 以使用者的電子郵件地址自動填入表單。
  • 擷取與使用者 (而非裝置) 相關聯的 ID。

判斷 AccountManager 是否適合您

應用程式通常會透過下列三種技巧嘗試記住使用者:

  1. 請使用者輸入使用者名稱。
  2. 擷取裝置專屬 ID 以記住裝置。
  3. AccountManager 擷取內建帳戶。

選項 (1) 有問題。首先,要求使用者先輸入一些內容才使用應用程式, 應用程式的吸引力自然會降低。其次,我們無法保證他們選擇的使用者名稱是獨一無二的。

選項 (2) 對使用者而言較少,但請難以正確取得。更重要的是,您只能在一部裝置上記住使用者。想像一下,若使用者升級到閃閃發亮的新裝置,卻已經不記得自己,那會讓人很痛。

建議選用方法 (3)。客戶經理可針對儲存在使用者裝置上的帳戶取得相關資訊。使用客戶經理時,無論使用者擁有多少裝置,您只要在 UI 中輕觸幾下,就能記住使用者。

決定要使用的帳戶類型

Android 裝置可儲存不同供應商的多個帳戶。查詢 AccountManager 以取得帳戶名稱時,您可以選擇依帳戶類型進行篩選。帳戶類型為字串,專門用於識別核發帳戶的實體。舉例來說,Google 帳戶的類型是 com.google,而 Twitter 則是 com.twitter.android.auth.login

要求 GET_ACCOUNTS 權限

如要取得裝置上的帳戶清單,應用程式必須具備 GET_ACCOUNTS 權限。在資訊清單檔案中加入 <uses-permission> 標記,要求這項權限:

<manifest ... >
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    ...
</manifest>

通知使用者並取得同意聲明

您可以呼叫 getAccounts()getAccountsByType() 來取得使用者帳戶清單。不過請注意,API 會傳回使用者的個人和機密資料。應用程式每次存取、收集、使用或分享個人和機密資料時,都必須向使用者明確揭露這項資訊。對於在 Google Play 上發布的應用程式,您必須執行下列操作,才能透過政策保護使用者資料:

  1. 向使用者說明應用程式存取、收集、使用或分享個人和機密資料的方式。進一步瞭解可接受的揭露事項與同意聲明
  2. 提供隱私權政策,說明您在裝置端和外部使用這項資料的方式。

詳情請參閱「Google Play 使用者資料政策」。

查詢 AccountManager 查看帳戶清單

當您決定感興趣的帳戶類型後,就必須查詢該類型的帳戶。呼叫 AccountManager.get() 以取得 AccountManager 的例項。然後使用該執行個體呼叫 getAccountsByType()

Kotlin

val am: AccountManager = AccountManager.get(this) // "this" references the current Context

val accounts: Array<out Account> = am.getAccountsByType("com.google")

Java

AccountManager am = AccountManager.get(this); // "this" references the current Context

Account[] accounts = am.getAccountsByType("com.google");

這會傳回 Account 物件的陣列。如果陣列中有多個 Account,系統會顯示對話方塊,要求使用者選取其中一個。

使用帳戶物件個人化應用程式

Account 物件包含帳戶名稱,如果是 Google 帳戶,則為電子郵件地址。您可以透過多種方式使用這項資訊,包括:

  • 做為表單中的建議,因此使用者不需要自行輸入帳戶資訊。
  • 做為您自有線上資料庫使用和個人化資訊的金鑰。

判斷帳戶名稱是否足夠

帳戶名稱是記住使用者的好方法,但 Account 物件本身不會保護您的資料,也無法讓您存取使用者帳戶名稱以外的任何內容。如果應用程式需要讓使用者上線存取私人資料,則必須採用更強大的驗證機制。瞭解如何驗證現有線上服務如何編寫自訂驗證器,以便安裝自己的帳戶類型。