强制设置更新

Mandatory Settings Update

我正在制作一个 android 应用程序,其中一个设置是每个用户都必须更新密码。

所以在成功登录后,如果用户还没有更新密码,则需要在导航到任何其他屏幕之前强制更新。

实现这个的最佳方法是什么?有什么想法吗?

更新:

回答后,我的意思是说我将从 firebase 数据库中获取的设置作为布尔标志。所以我的实际查询是如何将其显示为获取用户更新的强制性要求? (即)导航到不同的 activity 或显示弹出窗口并获取设置等。我需要 UI 设计思路。

最佳做法是什么?

目前尚不清楚这样做的意义何在,如果您有控制这些内容的服务器端,但我会尽力提供帮助。

如果您有一个控制身份验证的服务器:

  • 登录后,调用您的服务的 API 检查是否发生。您可以将答案保存在 "shared preference" (Android Documentation) 中,这样您就不会每次都调用您的 API。

如果您只想在客户端安装应用程序:

  • 使用 1 存储指示是否执行了所需操作的值,这些值会在登录后立即验证。

编辑: 如果该操作是强制性的,您可以将用户发送到 activity 以更新 pin,这将发生直到执行该操作。

客户端方法:

您可以使用 SharedPreferences 来保存一个值,例如一个简单的布尔值,它会通知您用户是否已经更新了密码。

我建议您在启动器 Activity 的 onResume() 中执行检查。

简单明了:

public static final String PREF_FILE_NAME = "PrefFileName";
    public static final String PREF_IS_PIN_CODE_UPDATED = "PREF_IS_PIN_CODE_UPDATED";

    @Override
    protected void onResume() {
        super.onResume();

        SharedPreferences prefs = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
        Boolean isPinCodeUpdated = prefs.getBoolean(PREF_IS_PIN_CODE_UPDATED, false);
        if (isPinCodeUpdated) {
            // You can proceed
        } else {
            // Force the user to update the pin code, by prompting for instance a dialog where he can change the pin with setCancelable(false)
        }
    }

在您知道您的用户已经更新了个人识别码后,您只需将首选项设置为 true。

SharedPreferences.Editor editor = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE).edit();
    editor.putBoolean(PREF_IS_PIN_CODE_UPDATED, true);
    editor.apply();

在此之后,每次用户打开应用程序时,它都会传入 onResume() 方法,您的 isPinCodeUpdated var 将为真,应用程序应该照常进行。

从你的问题来看,我假设你不想要 UI 方面的回应,但你怎么能保留这些信息。

注意:对于同一设备中的多个用户,此实现失败。通过一些调整,您可以让它在同一设备上为多个用户工作,但在我看来,这种验证应该在服务器端完成。