Skip to main content

Initialize Customer (Register / Identify)

Use initializeCustomer whenever a user logs in, registers, or you need to refresh their profile. This lets Gameball attach events, rewards, and notifications to the correct customer.
Before calling initializeCustomer,make sure you have already initialized the SDK using Initialize SDK

Basic Customer Initialization

val customerRequest = InitializeCustomerRequest.builder()
    .customerId("customer-123")
    .email("customer@example.com")
    .mobileNumber("+1234567890")
    .deviceToken("fcm-device-token")
    .pushProvider(PushProvider.Firebase)
    .build()

GameballApp.getInstance(context).initializeCustomer(
    customerRequest,
    object : Callback<InitializeCustomerResponse> {
        override fun onSuccess(response: InitializeCustomerResponse) {
            // Customer initialized successfully
        }

        override fun onError(error: Throwable) {
            // Handle error
        }
    }
)

// With session token override
GameballApp.getInstance(context).initializeCustomer(
    customerRequest,
    callback,
    sessionToken = "custom-token"
)
Call initializeCustomer immediately after a successful login or registration flow so the customer profile stays up to date.

Request Parameters

customerId
string
required
Unique identifier for the customer. This must not change for a given customer.
email
string
Customer’s email address.
mobile
string
Customer’s mobile number with country code.
deviceToken
string
Push notification token (for example, FCM/Huawei token). Required if pushProvider is set.
pushProvider
PushProvider
Push notification provider: PushProvider.Firebase or PushProvider.Huawei. Required if deviceToken is set.
customerAttributes
CustomerAttributes
Additional customer attributes such as name, date of birth, custom fields, etc.
referralCode
string
Referral code if the customer was referred by another customer.
referralCode
string
Referral code if the customer was referred by another customer.
isGuest
boolean
Guest user flag (defaults to false).
osType
string
Operating system type. Automatically set to "Android".
sessionToken
string
Optional session token to override the global token for this specific request.

Validation Rules

InitializeCustomerRequest requires:
  • customerId cannot be empty
  • If pushProvider is set, deviceToken is required
  • If deviceToken is set, pushProvider is required
Choose an Unchangeable Customer ID: customerId should be a permanent identifier that never changes.

Enriching Profiles with Customer Attributes

Use the CustomerAttributes builder to send richer profile data to Gameball.
val attributes = CustomerAttributes.builder()
    .displayName("John Doe")
    .firstName("John")
    .lastName("Doe")
    .email("john@example.com")
    .mobileNumber("+1234567890")
    .gender("male")
    .dateOfBirth("1990-01-15")
    .joinDate("2024-01-01")
    .preferredLanguage("en")
    .channel("mobile")
    .addCustomAttribute("vip_level", "gold")
    .addCustomAttribute("city", "New York")
    .addAdditionalAttribute("segment", "premium")
    .build()

val customerRequest = InitializeCustomerRequest.builder()
    .customerId("customer-123")
    .email("john@example.com")
    .mobile("+1234567890")
    .customerAttributes(attributes)
    .referralCode("REF123")  // Optional
    .isGuest(false)          // Optional
    .build()

CustomerAttributes Builder


1

User Authenticates

Wait until the user has successfully logged in or registered in your app.
2

Build Attributes

Build CustomerAttributes with all available information (name, contact, custom attributes).
3

Initialize Customer

Call initializeCustomer with a stable customerId and attributes.
4

Proceed with Events & Rewards

After initialization succeeds, start tracking events, showing the profile widget, and enabling rewards.