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

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

پیش‌نیازها

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

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

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

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

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

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

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

// Request a guest user from backtory
BacktoryUser.LoginAsGuestInBackground(loginResponse =>
{
    if (loginResponse.Successful) {
        // Getting new username and password from CURRENT user
        string guestUsername = BacktoryUser.CurrentUser.Username;
        string guestPassword = BacktoryUser.CurrentUser.Password;

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

در صورتی که عبارت loginResponse.Successful برابر true باشد یعنی عملیات با موفقیت انجام شده است. در غیر این صورت عبارت loginResponse.code خطای ایجاد شده را نشان خواهد داد. مقدار عبارت loginResponse.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
BacktoryUser.GuestCompletionParam parameters = new BacktoryUser.GuestCompletionParam()
    // creating new instance and initializing properties inline
    {
        FirstName = "Alireza",
        LastName = "Farahani",
        Email = "Alireza.farahani@gmail.com",
        NewPassword = "123456",
        NewUsername = "a_farahani"
    };

// CurrentUser is your guest user, so get your currentUser and complete his/her registration
BacktoryUser.CurrentUser.CompleteRegistrationInBackgrond(parameters,
    completedUserResponse =>
{
    // Checking result of operation
    if (completedUserResponse.Successful) {
        // Hooray, You are a normal user now!
        string firstName = completedUserResponse.Body.FirstName;
        Debug.Log(firstName + ", thanks for registration.");
    }
    else if (completedUserResponse.Code == (int)BacktoryHttpStatusCode.Conflict) {
        // You requested username “a_farahani” already exists
        Debug.Log("A user with this username already exists.");
    }
    else {
        // Operation generally failed, maybe internet connection issue
        Debug.Log("Registration failed.");
    }
});

در صورتی که عملیات موفق نباشد مقدار completedUserResponse.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

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

گام بعدی