VCS Rewarding

Introduction

VCS is the default rewarding option in the dashboard, so you should not have to make any configuration changes unless you have previously altered the setting.

If you want to modify the rewarding settings, you can refer back to modifying your app settings.

Request for New Rewards

To reward your users after they have engaged with a rewarded ad format, you must make a request to VCS. Unless specified otherwise, a request to VCS asks for the default currency.

C# - Example: Requesting Rewards
using FyberPlugin;

[...]

VirtualCurrencyRequester virtualCurrencyRequester = VirtualCurrencyRequester.Create();

[...]

virtualCurrencyRequester.Request();

Best Practice Check

When most Offer Wall offers are complete they reward the user immediately when the user has performed the required action for the offer. Some Offer Wall offers may take some time to complete and reward the user.

To handle both scenarios, we recommend you place requests to VCS in two places in your app:

  1. When the Offer Wall closes, you may make an immediate request for VCS to get most of the rewards, which comes through as soon as the user completes the offer.
  2. Whenever you direct the user to a view in which their total currency is visible, you can make a request for VCS to gather any rewards that may have been credited since the user's last visit to the Offer Wall.

Handling the Response

Handling the VCS request response can be accomplished through events or callbacks. Select the option you want to use in your project. 

Events

The class FyberCallback contains the events VirtualCurrencySuccess and VirtualCurrencyError to notify the corresponding result of the request to the VCS.

C#
void OnEnable()
    {
        FyberCallback.VirtualCurrencySuccess += OnCurrencyResponse;
        FyberCallback.VirtualCurrencyError += OnCurrencyErrorResponse;
    }
        
    void OnDisable()
    {
        FyberCallback.VirtualCurrencySuccess += OnCurrencyResponse;
        FyberCallback.VirtualCurrencyError += OnCurrencyErrorResponse;
    }

    [...]

    public void OnCurrencyResponse(VirtualCurrencyResponse response)
    {
        Debug.Log("Delta of coins: " + response.DeltaOfCoins.ToString() +
            ". Transaction ID: " + response.LatestTransactionId +
            ".\nCurreny ID: " + response.CurrencyId +
            ". Currency Name: " + response.CurrencyName +
            ". Is the default currency?: " + response.DefaultCurrency);
    }

    public void OnCurrencyErrorResponse(VirtualCurrencyErrorResponse vcsError)
    {
        Debug.Log(string.Format("Delta of coins request failed.\n" +
            "Error Type: {0}\nError Code: {1}\nError Message: {2}",
            vcsError.Type, vcsError.Code, vcsError.Message));
    }

On a successful request, the parameter of type VirtualCurrencyResponse provides you with information about the reward that is provided to your user. In particular, use DeltaOfCoins to receive the total reward amount to provide to the user and LatestTransactionId if you’re interested in the user’s latest Transaction ID.

The passed response parameter returned on the first call to VCS from a new installation of your app always contains the reward amount and Transaction ID of the user's latest transaction in our system. To avoid rewarding a user for a second time if they have uninstalled and re-installed your app, you can do one of two things:

Option 1: Store it

Store the most recent Transaction ID somewhere that can survive an uninstall, and compare it to the transaction ID returned from response.LatestTransactionId. Only rewarding when the stored ID and returned ID don't match.

Option 2: Fresh install

Ignore the first response from VCS from a fresh install of your app. All subsequent calls to VCS then behave normally.

Callbacks

The interface VirtualCurrencyCallback contains the following methods:

Method Description
OnSuccess Successful. The parameter of type VirtualCurrencyResponse contains the response data.
OnError Fired in the case of an error related specifically to the Virtual Server request.
The parameter of type VirtualCurrencyErrorResponse contains data about the error.
OnRequestError Triggered in the case of any other error.
C# Example: Handling VCS Response Using Callbacks
public class VCSCallback : VirtualCurrencyCallback
{

    public void OnSuccess(VirtualCurrencyResponse response)
    {
        Debug.Log("Virtual currency response success. Delta of coins: " + response.DeltaOfCoins.ToString() +
            ". Transaction ID: " + response.LatestTransactionId +
            ".\nCurreny ID: " + response.CurrencyId +
            ". Currency Name: " + response.CurrencyName +
            ". Is the default currency?: " + response.DefaultCurrency);
    }

    public void OnError(VirtualCurrencyErrorResponse vcsError)
    {
        Debug.Log(string.Format("Delta of coins request failed.\n" +
            "Error Type: {0}\nError Code: {1}\nError Message: {2}",
            vcsError.Type, vcsError.Code, vcsError.Message));
    }
  
    public void OnRequestError(RequestError error)
    {
        Debug.Log("OnRequestError: " + error.Description);
    }
}

To be notified through the implemented VirtualCurrencyCallback instead of through events, you must pass an instance of it, using the method WithCallback, before calling the method Request of the VirtualCurrencyRequester.

C# - Example: Specifying the User of Callbacks instead of Events
private VCSCallback vcsCallback = new VCSCallback();

    [...]

    private void RequestVCS ()
    {
    VirtualCurrencyRequester.Create()
            .WithCallback(vcsCallback)
            .Request();

On a successful request, the parameter of type VirtualCurrencyResponse provides you with information about the reward that is to be provided to your user. Use DeltaOfCoins to receive the total reward amount to provide to the user and LatestTransactionId if you’re interested in the user’s latest Transaction ID.

The passed response parameter returned on the first call to VCS from a new installation of your app always contains the reward amount and Transaction ID of the user's latest transaction in our system. To avoid rewarding a user for a second time if they have uninstalled and re-installed your app, you can do one of two options:

Option 1: Store it

Store the most recent Transaction ID somewhere that can survive an uninstall, and compare it to the Transaction ID returned from response.LatestTransactionId. Only rewarding when the stored ID and returned ID don't match.

Option 2: Fresh install

Ignore the first response from VCS from a fresh install of your app. All subsequent calls to VCS can then behave normally.

Handling Multiple Currencies

If you have created multiple currencies for your application on your dashboard, you can call the method ForCurrencyId of the VirtualCurrencyRequester before making the request. This allows you to query VCS for a specific currency.

C# - Example: Requesting rewards from specific currency
using FyberPlugin;

[...]

// We can create the requester, set the currency we want, and make the request in the same line
VirtualCurrencyRequester.Create()
            .ForCurrencyId(currencyId)
            .Request();

Notifying the User

A user notification with the message: "Congratulations! You've earned XX coins!" is shown by default after a successful response in which the delta of coins is larger than 0. You can override this behavior by calling the method NotifyUserOnReward of the VirtualCurrencyRequester before making the request.

C# - Example: Disabling VCS user notifications
VirtualCurrencyRequester.Create()
            .NotifyUserOnReward(false)
            .Request();

You have now successfully set up the Offer Wall via Fyber Unity Plugin.