تذكُّر المستخدم

ينال إعجاب الجميع عندما تتذكر اسمهم. أحد أبسط الأشياء التي يمكنك القيام بها لجعل تطبيقك أكثر جاذبية هو تذكر من هو المستخدم - خاصة عندما يقوم المستخدم بترقية جهاز جديد أو بدء حمل جهاز لوحي بالإضافة إلى هاتف. ولكن كيف تعرف من هو المستخدم؟ وكيف يمكنك التعرّف عليهما على جهاز جديد؟

الإجابة هي "AccountManager API" في العديد من التطبيقات. يمكنك، بعد الحصول على إذن المستخدم، استخدام مدير الحساب لجلب أسماء الحسابات التي خزّنها المستخدم على جهازه.

يتيح لك الدمج مع حسابات المستخدم إمكانية تنفيذ العديد من الأشياء، مثل:

  • ملء النماذج تلقائيًا باستخدام عنوان البريد الإلكتروني للمستخدم.
  • استرداد معرّف مرتبط بمستخدم وليس بجهاز

تحديد ما إذا كان AccountManager مناسبًا لك

عادةً ما تحاول التطبيقات تذكر المستخدم باستخدام أحد الأساليب الثلاثة التالية:

  1. اطلب من المستخدم إدخال اسم مستخدم.
  2. استرجع رقم تعريف جهاز فريد لتذكر الجهاز.
  3. يمكنك استرداد حساب مدمج من AccountManager.

الخيار (1) يمثل مشكلة. أولاً، إن مطالبة المستخدم بإدخال شيء ما قبل استخدام تطبيقك يجعل تطبيقك أقل جاذبية تلقائيًا. ثانيًا، ليس هناك ما يضمن أن يكون اسم المستخدم الذي يختاره فريدًا.

يكون الخيار (2) أقل عبئًا على المستخدم، ولكن من الصعب تنفيذ ذلك. والأهم من ذلك، أنه يتيح لك تذكُّر المستخدم على جهاز واحد فقط. تخيّلوا للشعور بالاستياء الذي ينشأ بسبب ترقية جهاز جديد إلى جهاز جديد، وستلاحظ أن تطبيقك لم يعد يتذكره.

الخيار (3) هو الأسلوب المفضل. يتيح لك مدير الحساب الحصول على معلومات حول الحسابات المخزنة على جهاز المستخدم. يتيح لك مدير الحساب إمكانية تذكر المستخدم، بغض النظر عن عدد الأجهزة التي قد يمتلكها المستخدم، وذلك بإضافة بضع نقرات فقط إلى واجهة المستخدم.

تحديد نوع الحساب الذي تريد استخدامه

يمكن لأجهزة 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(). يُرجى العِلم أنّ واجهة برمجة التطبيقات تعرض بيانات المستخدمين الشخصية والحساسة، وفي أي وقت يصل فيه تطبيقك إلى البيانات الشخصية والحساسة أو يجمعها أو يستخدمها أو يشاركها، عليك الإفصاح للمستخدمين بوضوح عن هذه الحقيقة. بالنسبة إلى التطبيقات المنشورة على Google Play، تتطلب السياسات التي تحمي بيانات المستخدمين إجراء ما يلي:

  1. الإفصاح للمستخدم عن كيفية وصول تطبيقك إلى البيانات الشخصية والحساسة أو جمعها أو استخدامها أو مشاركتها اطّلع على مزيد من المعلومات حول الإفصاح والموافقة المقبولَين.
  2. يُرجى تقديم سياسة خصوصية تصف استخدامك لهذه البيانات على وخارج الجهاز.

للاطّلاع على مزيد من المعلومات، يُرجى الانتقال إلى سياسة Google Play بشأن بيانات المستخدمين.

إرسال طلب إلى AccountManager للحصول على قائمة حسابات

بمجرد أن تقرر نوع الحساب الذي تهتم به، ستحتاج إلى البحث عن حسابات من هذا النوع. احصل على نسخة افتراضية من AccountManager عن طريق استدعاء AccountManager.get(). ثم استخدِم هذا المثيل لاستدعاء 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 بحدّ ذاته لا يحمي بياناتك أو يمنحك إمكانية الوصول إلى أي معلومات أخرى غير اسم حساب المستخدم. إذا كان تطبيقك يحتاج إلى السماح للمستخدم بالاتصال بالإنترنت للوصول إلى البيانات الخاصة، فأنت بحاجة إلى شيء أقوى وهو: المصادقة. تعرَّف على كيفية المصادقة على الخدمات الحالية على الإنترنت وكيفية كتابة برنامج مصادقة مخصّص حتى تتمكّن من تثبيت أنواع حساباتك.