کاربر مهمان - Android

در این بخش از مستند قصد داریم با کاربر مهمان آشنا شویم. کاربر مهمان نوعی از کاربر است که برای ثبت‌نام نیاز به اطلاعاتی مانند نام و نام‌خانوادگی و ایمیل ندارد و برای اپلیکیشن‌هایی کاربرد دارد که نیاز به کاربر دارد، اما ثبت‌نام جدی ندارد. ثبت‌نام جدی به این معنی است که کاربر اطلاعات شخصی مانند نام و نام‌خانوادگی، ایمیل و … را وارد کند. به عنوان نمونه اگر یک بازی ساده دارید که ثبت‌نام جدی ندارد، ولی نیاز به سرویس‌های مرکز بازی بکتوری مانند لیدربورد دارید، بایستی از کاربر مهمان استفاده کنید.

پیش‌نیازها

  1. در صورتی که با سرویس کاربران بکتوری آشنایی ندارید، به معرفی سرویس کاربران مراجعه کنید.
  2. در صورتی که هنوز SDK اندروید را راه‌اندازی نکرده‌اید، به راه‌اندازی SDK بکتوری در اندروید مراجعه کنید.

‘کاربر مهمان’ کیست؟

کاربران اپلیکیشن‌های موبایل در بکتوری دو نوع هستند:

دسته اول کاربرانی هستند که با وارد کردن اطلاعات (مثلا فرم ثبت‌نام در اپلیکیشن) در بکتوری ثبت‌نام می‌کنند. در صورتی که تمایل دارید کاربران بدون نیاز به وارد‌کردن اطلاعات خود، وارد سیستم شوند، از کاربران مهمان استفاده می‌کنید. کاربر مهمان برای بکتوری تفاوتی با کاربر عادی ندارد به جز اینکه مقدار isGuest برای او برابر true است و شما می‌توانید بر اساس آن امکانات متفاوتی در اپلیکیشن خود به کاربر نشان دهید و یا دسترسی کاربر مهمان را محدود کنید. کاربران مهمان می‌توانند بعدا به کاربر معمولی تبدیل شوند. برای این کار کافیست اطلاعات و مشخصات کامل آنها را به بکتوری بدهید.

ورود به عنوان مهمان

فرآیند ثبت‌نام مهمان بسیار ساده است. شما بدون دادن هیچ پارامتری از بکتوری یک کاربر مهمان درخواست می‌کنید. بکتوری در پاسخ یک کاربر با نام‌کاربری و رمزعبور تصادفی ایجاد می‌کند و آن را در گوشی موبایل ذخیره می‌کند. همچنین به طور اتوماتیک، کاربر مهمان درخواستی، ورود می‌کند و نیازی به انجام کار اضافه از سمت شما نیست، یعنی فقط با فراخوانی loginAsGuestInBackground، در صورتی که پاسخ موفق دریافت کنید، کاربر شما ورود کرده است و برای همیشه در گوشی شما به صورت واردشده باقی خواهد ماند. متناسبا نیز به طور اتوماتیک currentUser برابر کاربر مهمان خواهد شد.

کد زیر یک نمونه از این کار می‌باشد:

// Request a guest user from backtory 
BacktoryUser.loginAsGuestInBackground(new BacktoryCallBack<LoginResponse>() {

    // Login done (fail or success), checking for result
    @Override
    public void onResponse(BacktoryResponse<LoginResponse> response) {
        // Checking if operation was successful
        if (response.isSuccessful()) {
            // Getting new username and password from CURRENT user
            String newUsername = BacktoryUser.getCurrentUser().getUsername();
            String newPassword = BacktoryUser.getCurrentUser().getGuestPassword();

            // Logging new username and password
            Log.d(TAG, "your guest username: " + newUsername 
                + " & your guest password: " + newPassword);
        } else {
            // Operation generally failed, maybe internet connection issue
            Log.d(TAG, "Login failed for other reasons like network issues");
        }
    }
});

در صورتی که عبارت isSuccessful برابر true باشد یعنی عملیات با موفقیت انجام شده است. در غیر این صورت عبارت ()response.code خطای ایجاد شده را نشان خواهد داد. مقدار عبارت ()response.code یکی از مقادیر زیر خواهد بود:

Tables Description
200-OK Login was successfull
417-Expectation Failed InstanceId or ClientKey does not match
500-Internal Server Error Data access was unsuccessful
503-Service Unavailable Your service is disabled

تکمیل ثبت‌نام مهمان

در صورتی که قصد دارید کاربر مهمان خود را تبدیل به یک کاربر معمولی کنید، باید از ‘تکمیل ثبت‌نام مهمان’ استفاده کنید. نمونه واقعی از کاربرد این سرویس به صورت زیر است:

شما یک اپلیکیشن خرید دارید که کاربران سبد خرید دارند و می‌توانند در کاتالوگ کالاها جستجو کنند و چند کالا را به سبد خرید خود اضافه کنند. در حالت عادی جذاب نیست که کاربران مستقیما ثبت‌نام کنند و بعد از فرم ثبت‌نام وارد بخش کالاها شوند. به جای این کار شما یک کاربر مهمان می‌سازید و سبد خرید فرد را هم به کاربر مهمان متصل می‌کنید. در نهایت وقتی کاربر کالاهای مورد علاقه خود را انتخاب کرد و قصد خرید داشت از او اطلاعات تکمیلی مانند ایمیل او را خواهید گرفت و ثبت‌نام او را تکمیل خواهید کرد.

برای مثال کد زیر اطلاعات کاربر مهمان فعلی شما را تکمیل می‌کند و کاربر مهمان شما به کاربر معمولی تبدیل می‌شود:

// Fill "complete registration" form from Activity or other ways
GuestRegistrationParam params = new GuestRegistrationParam.
    builder().
    setFirstName("alireza").
    setLastName("farahani").
    setEmail("alireza.farahani@gmail.com").
    setNewPassword("123456").
    setNewUsername("a_farahani").
    build();

// CurrentUser is your guest user, so get your currentUser and complete his/her registration
BacktoryUser.getCurrentUser().completeRegistrationInBackground(params,
    new BacktoryCallBack<BacktoryUser>() {

    // CompleteRegistration done (fail or success), handling it: 
    @Override
    public void onResponse(BacktoryResponse<BacktoryUser> response) {
        // Checking result of operation
        if (response.isSuccessful()) {
            // Hooray, You are a normal user now
            String firstName = response.body().getFirstName();
            Log.d(TAG, firstName + ", thanks for registration");
        } else if (response.code() == HttpStatusCode.Conflict.code())
            // You request username(= a_farahani) already exists
            Log.d(TAG, "a user with this username already exist");
        } else {
            // Operation generally failed, maybe internet connection issue
            Log.d(TAG, "registration failed");
        }
    }
});

در صورتی که عملیات موفق نباشد مقدار ()response.code نشان‌دهنده خطای اتفاق‌افتاده است. مقدار این متغیر یکی از مقادیر زیر خواهد بود:

Tables Description
201-Created Operation was successful
409-Conflict Username already exists
500-Internal Server Error Data access was unsuccessful
503-Service Unavailable Your service is disabled

همانطور که دیدید شما به سادگی می‌توانید کاربر مهمان بسازید و آن را تبدیل به یک کاربر معمولی کنید. در قسمت بعدی این راهنما شما می‌توانید کاربران خود را از شبکه‌های اجتماعی وارد اپلیکیشن خود کنید. یعنی کاربران با استفاده از حساب گوگل، اینستاگرام و … خود وارد اپلیکیشن شما شوند و به عنوان یک کاربر معمولی بکتوری شناخته شوند.

گام بعدی