Skip to main content

Android SDK

The Accrue Savings Android SDK is available as a package for your company to integrate the Accrue Wallet.

It simplifies the integration by combining the Wallet lifecycle and deep linking into a single package.

Installation

Your package is available as a Package on Github package repository.

To install it you need to add the following to your build.gradle.kts file:

dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/accrue-savings/android-sdk")
credentials {
username = System.getenv("GITHUB_USERNAME")
password = System.getenv("GITHUB_TOKEN")
}
}
}
}

You need to set the GITHUB_USERNAME and GITHUB_TOKEN environment variables. Any Github user can generate a token here. It only needs read:packages permission to read packages. But, you can also use the token provided by us:

export GITHUB_USERNAME="accruesavings"
export GITHUB_TOKEN="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"

And then add the dependency to your build.gradle.kts file:

dependencies {
implementation("com.accruesavings:androidsdk:v1.0.0")
}

Usage

Here is an example of how to embed the widget in a Android application:

val userData = AccrueUserData(
referenceId = "<your_unique_user_id>",
phoneNumber = "<users_phone_number>",
email = "<users_email>"
)

val settingsData = AccrueSettingsData(
shouldInheritAuthentication = true
)

val contextData = AccrueContextData(userData, settingsData)

val fragment = AccrueWallet.newInstance(
contextData = contextData,
redirectionToken = redirectionToken,
isSandbox = true,
merchantId = merchantId,
onAction = mapOf(
AccrueAction.SignInButtonClicked to {
// Handle sign in button click
},
AccrueAction.RegisterButtonClicked to {
// Handle register button click
}
)
)

supportFragmentManager.beginTransaction()
.replace(R.id.fragment_container, fragment)
.commit()

Props

The following props are available for the AccrueWallet component:

merchantId
RequiredYes
TypeString
DescriptionMerchant ID (received from Accrue)
DefaultN/A
Example724a57f2-1670-42de-b1f0-a94425fb60cf
redirectionToken
RequiredNo
TypeString
DescriptionRedirection token for the deep linking. This token will be used to redirect the user to a specific screen within the Accrue Savings Widget
Defaultnull
Example61a77652-14ae-4ed4-9bb3-cdb31312869e
isSandbox
RequiredNo
TypeBoolean
DescriptionFlag to enable the sandbox mode. If set to true, the widget will use the sandbox environment
Defaulttrue
Exampletrue
contextData
Requiredyes
TypeContextData(userData: AccrueUserData, settingsData: AccrueSettingsData)
DescriptionYour own user data to be attached to the user profile stored with Accrue
Defaultnull
ExampleContextData(userData: AccrueUserData(), settingsData: AccrueSettingsData())
onAction
RequiredNo
TypeMap<AccrueAction, () -> Unit>
DescriptionCallback with actions triggered by the user
DefaultemptyMap()
ExamplemapOf( AccrueAction.SignInButtonClicked to { // Handle sign in button click }, AccrueAction.RegisterButtonClicked to { // Handle register button click } )

ContextData

The ContextData struct is used to pass the user data and settings data to the widget.

AccrueUserData

The AccrueUserData struct is used to pass the user data to the widget. The following fields are available:

referenceId
RequiredYes
TypeString
DescriptionA unique reference id for the user
DefaultN/A
Example123e4567-e89b-12d3-a456-426614174000
email
RequiredNo
TypeString
DescriptionUser email
DefaultN/A
Exampleemail@example.com
phoneNumber
RequiredYes
TypeString
DescriptionUser US phone number
DefaultN/A
Example+12125559999

AccrueSettingsData

The AccrueSettingsData struct is used to pass the settings data to the widget. The following fields are available:

shouldInheritAuthentication
RequiredNo
TypeBoolean
DescriptionShould the widget inherit the authentication from the parent app
Defaulttrue
Exampletrue

⚠️ Important: Keep in mind that the shouldInheritAuthentication will change the behavior of the widget.

The following UX changes will occur:

  • We will use the phoneNumber passed as props to auto-send the OTP to the user if not already authenticated on the widget.
  • We will use the referenceId passed as the authentication state (on merchant side). If present, we will consider the user as authenticated. Otherwise, we will consider the user as unauthenticated.
  • Once user confirms the OTP, we will consider the user as authenticated on the widget.
  • If referenceId changes, the user will be logged out from the widget.

Considerations:

  • The user would not be able to change the phone number in the widget.
  • The user would not be able to logout from the widget (unless the referenceId changes).
  • The user would not be able to change the email in the widget.
  • All phoneNumber/email changes should be handled on the merchant side.

Actions

Actions are emitted from the webview in the form of a string. The onAction callback will be triggered with the action as a parameter.

The following actions are available:

  • SignInButtonClicked: The user clicked the sign-in button
  • RegisterButtonClicked: The user clicked the register button