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
Unique identifier for the customer. This must not change for a given customer.
Customer’s email address.
Customer’s mobile number with country code.
Push notification token (for example, FCM/Huawei token). Required if pushProvider is set.
Push notification provider: PushProvider.Firebase or PushProvider.Huawei. Required if deviceToken is set.
Additional customer attributes such as name, date of birth, custom fields, etc.
Referral code if the customer was referred by another customer.
Guest user flag (defaults to false).
Operating system type. Automatically set to "Android".
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 ( "favoriteCategory" , "electronics" )
. addAdditionalAttribute ( "segment" , "premium" )
. addAdditionalAttribute ( "city" , "New York" )
. addAdditionalAttribute ( "country" , "USA" )
. build ()
val customerRequest = InitializeCustomerRequest. builder ()
. customerId ( "customer-123" )
. email ( "john@example.com" )
. mobile ( "+1234567890" )
. customerAttributes (attributes)
. referralCode ( "REF123" )
. isGuest ( false )
. build ()
CustomerAttributes Builder
Show CustomerAttributes Builder Methods
Sets the customer’s display name.
Sets the customer’s first name.
Sets the customer’s last name.
Sets the customer’s email address.
Sets the customer’s mobile number.
Sets the customer’s gender.
Sets the date of birth in
YYYY-MM-DD format.
Sets the join date in
YYYY-MM-DD format.
preferredLanguage(String)
Sets the preferred language code.
Sets the channel identifier (defaults to
“mobile” ).
addCustomAttribute(String, String)
Adds a single custom attribute key-value pair.
Sets all custom attributes at once.
addAdditionalAttribute(String, String)
Adds a single additional attribute key-value pair.
additionalAttributes(Map)
Sets all additional attributes at once.
Recommended Usage Flow
User Authenticates
Wait until the user has successfully logged in or registered in your app.
Build Attributes
Build CustomerAttributes with all available information (name, contact, custom attributes).
Initialize Customer
Call initializeCustomer with a stable customerId and attributes.
Proceed with Events & Rewards
After initialization succeeds, start tracking events, showing the profile widget, and enabling rewards.