Статьи

Parse.com анонимные и зарегистрированные пользователи (Android)

Вступление

При написании мобильного приложения вам, как правило, всегда нужен способ хранения информации вне самого приложения, чтобы данные были доступны не только для самого приложения на конкретном устройстве, но и на каждом устройстве, на котором установлено приложение, и, возможно, даже в веб-приложениях. , Это означает, что приложению понадобится какой-нибудь бэкэнд-сервис / API для взаимодействия. Обычно это также означает, что приложение будет использовать своего рода управление учетными записями / пользователями.

Существует несколько так называемых мобильных бэкэндов в качестве сервисной платформы, которые способствуют этому. Я думаю, что слово «мобильный» немного неуместно, потому что клиенты этих платформ не всегда являются мобильными устройствами. Поэтому я называю эти платформы Backend As a Service (BAAS). Parse.com является одной из таких платформ.

В этом посте рассказывается о том, как вы можете управлять пользователями с Parse.com и, в частности, о том, как использовать анонимных пользователей и конвертировать анонимного и зарегистрированного пользователя.

Анонимный пользователь

Многие приложения требуют от пользователя регистрации (создания учетной записи пользователя) или входа в систему через Facebook или подобную учетную запись. Если это обязательный процесс, есть вероятность, что определенная группа пользователей не будет использовать ваше приложение из-за необходимого входа в систему. Если функциональность вашего приложения позволяет, возможный обходной путь для этого — предоставить приложению анонимный логин пользователя. Используя анонимного пользователя, пользователь вашего приложения может использовать все или большинство функций приложения, не требуя учетной записи пользователя. Если пользователю нравится ваше приложение, он может зарегистрировать зарегистрированный аккаунт. В идеале все данные, собранные во время анонимного доступа, должны быть перенесены на зарегистрированный аккаунт. К счастью, вышеуказанную функциональность довольно легко реализовать с помощью платформы Parse.com.

Включение анонимного доступа

Чтобы включить приложение Parse.com для использования анонимного доступа, вам необходимо сделать следующее:

  1. Включите анонимный доступ в консоли Parse.com. Зайдите в Настройки -> Аутентификация и включите «Разрешить анонимный доступ».
  2. Добавьте следующий код в метод onCreate вашего класса приложений Android:
1
2
3
4
5
6
@Override
    public void onCreate() {
        super.onCreate();
        Parse.initialize(this, "APPLICATION_ID", "CLIENT_KEY");
        ParseUser.enableAutomaticUser();
}

При включении автоматического пользователя вызов ParseUser.getCurrentUser () всегда возвращает пользователя и, следовательно, никогда не является нулевым. Вы можете проверить, является ли пользователь анонимным или зарегистрированным, используя следующий код:

1
ParseAnonymousUtils.isLinked(ParseUser.getCurrentUser());

Это может быть полезно, чтобы проверить, должна ли отображаться кнопка регистрации или отключить некоторые функции, которые доступны только зарегистрированным пользователям.

Преобразование анонимного пользователя в зарегистрированного

Анонимный пользователь может быть преобразован в зарегистрированного. Данные, принадлежащие анонимному пользователю, также присутствуют на зарегистрированном.

Прежде чем конвертировать анонимного пользователя, необходимо учесть несколько вещей:

  1. Имя пользователя не может быть пустым. Вы должны явно указать имя пользователя и пароль для пользователя, который должен быть преобразован в зарегистрированный.
  2. Рекомендуется сохранить анонимного пользователя в серверной части сразу после его создания. Если этого не сделано, и для зарегистрированного пользователя вызывается вызов saveInBackground (после преобразования его из анонимного), в Android parse SDK генерируется переполнение стека. Смотрите также следующий вопрос о переполнении стека (созданный мной): http://stackoverflow.com/questions/27595057/converting-an-anonymous-user-to-a-regular-user-and-saving

Чтобы сохранить пользователя сразу после его создания, измените код приложения так, чтобы он выглядел следующим образом:

1
2
3
4
5
6
7
@Override
    public void onCreate() {
        super.onCreate();
        Parse.initialize(this, "APPLICATION_ID", "CLIENT_KEY");
        ParseUser.enableAutomaticUser();
        ParseUser.getCurrentUser.saveInBackground();
}

Теперь анонимный пользователь может быть преобразован в зарегистрированного с помощью следующего кода:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
findViewById(R.id.createUser).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View v) {
                final String accountUsername = username.getText().toString();
                final String accountPassword = password.getText().toString();
                final ParseUser user = ParseUser.getCurrentUser();
                user.setUsername(accountUsername);
                user.setPassword(accountPassword);
                user.signUpInBackground(new SignUpCallback() {
                    @Override
                    public void done(final ParseException e) {
                        if (e != null) {
                            Toast.makeText(MainActivity.this, "Signup Fail", Toast.LENGTH_SHORT).show();
                            Log.e(TAG, "Signup fail", e);
                        } else {
                            Toast.makeText(MainActivity.this, "Signup success", Toast.LENGTH_SHORT).show();
                            final ParseUser user = ParseUser.getCurrentUser();
                            user.put("phone_no", "31612345678");
                            user.saveInBackground(new SaveCallback() {
                                @Override
                                public void done(final ParseException e) {
                                    if (e != null) {
                                        Toast.makeText(MainActivity.this, "Save data Fail", Toast.LENGTH_SHORT).show();
                                        Log.e(TAG, "Signup fail", e);
                                    } else {
                                        Toast.makeText(MainActivity.this, "Save data success", Toast.LENGTH_SHORT).show();
                                    }
                                }
                            });
                        }
                    }
                });
            }
        })

Обратите внимание, что данные, связанные с пользователем в вызове saveInBackground (после успешной регистрации), также могут быть немедленно связаны с пользователем перед вызовом регистрации. Это экономит дополнительный сетевой вызов. Вызов saveInBackground чисто для демонстрационных целей.

Вывод

В этом посте рассказывалось о преимуществах анонимного пользователя мобильного приложения и о том, как анонимный пользователь может использоваться с платформой Parse.com. Также были показаны примеры кода того, как анонимный пользователь превращается в зарегистрированного, а также возможные проблемы и решения с ним.