Track Referrals

Reward your players for referrals and grow your business

Introduction

One of the most effective ways to get new users is through user referrals. You can use Gameball referrals capabilities to encourage your users to invite their friends by offering rewards for successful referrals to both the referrer and the recipient.

Gameball referrals uses Firebase Dynamic Links in the background to generate players referral links and track referrals. Dynamic Links are smart URLs (deep links) that survive the app install process, so new referred users via referral links will be easily tracked when they open the app for the first time.

Gameball and its SDK provides hassle free integration to track referrals where you will only need to

  1. Provide your firebase info through Gameball dashboard to generate referral links to your players

  2. Invoke referral method with every new account creation through your app.

Your players will be able to get and share their referral link from Gameball Player Widget

Tracking referral requires Firebase and Firebase Dynamic Links SDKs installed into your app.

Sending Referral

Referral information can be submitted to Gameball using two methods. The first option involves relying on automatic detection, which is triggered when the register player method is called. Alternatively, you can explicitly use the friend referral. Both approaches yield the desired outcome, and the choice between them depends on your specific scenarios.

Automatic Detection

After setting up the necessary Firebase dependencies and adding your Firebase details to Gameball's dashboard, when register player SDK method is called, the system will automatically detect if there is a referral code. If a referral code is found, it will be included in the registration request. This allows the newly registered player to be linked with the referral code.

Using Friend Referral Method

friendReferral should be called after your user registration, hence a new player is created. It basically detects if the user has registered using a referral code or not.

If you need to use a referral method to sign up a new player using a referral link, call the function below to use the referral module. Best use case is in the success of the registration API of your app.

    let playerAttributes: [String : Any] = [
        "displayName": "John Snow",
        "email": "example@example.com"
    ]
    self.gameballApp?.friendReferral(playerUniqueId:"{{layer_unique_id}}" , playerAttributes: playerAttributes, completion: { result in
print(result)} )

The playerAttributes is optional, so if you haven't created it yet then call the method like this with only the new playerUniqueId.

    self.gameballApp?.friendReferral(playerUniqueId:"{{player_unique_id}}", completion: { result in print(result)
    } )

To integrate and track referrals you need to perform two main steps

  1. Configure your Firebase dynamic links settings from your firebase console

  2. Configure Firebase on your App and Gameball account dashboard

  3. Invoke SDK Referral method within your App user registration flow.

1. Firebase configuration

Set up a new Firebase project and install the Dynamic Links SDK into your app. Installing the Dynamic Links SDK allows Firebase to pass along data about the Dynamic Link to the app, including after the user installs the app.

  • Import FireBase in AppDelegate File

import Firebase
  • Copy this code in you AppDelegate

func handleIncommingDynamicLink(_ dynamicLink: DynamicLink){
        guard let url  = dynamicLink.url else {
            return
        }
        self.gameballApp?.recievedDynamicLink(url: url)
    }
    func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
        if let incommingURL = userActivity.webpageURL {
            let linkHandled = DynamicLinks.dynamicLinks().handleUniversalLink(incommingURL) { (dynamicLink, error) in
                guard error == nil else {
                    return
                }
                if let dynamicLink = dynamicLink {
                    self.handleIncommingDynamicLink(dynamicLink)
                }
            }
            return linkHandled
        }
        return false
    }
    
    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
        if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url){
            self.handleIncommingDynamicLink(dynamicLink)
            return true
        } else {
            return false
        }
    }

Last updated