@scrimmage/rewards
v1.4.0
Published
Simple rewards for your app or website
Downloads
461
Readme
Rewards.ts
The low-code loyalty program maker.
This library is a part of the Scrimmage Rewards Program that is providing a solution for loyalty programs and rewards.
Tutorial can be found at Scrimmage Rewards Tutorial.
Installation
- Install the library
ornpm install @scrimmage/rewards
yarn add @scrimmage/rewards
Usage on the backend
Import the library in CommonJS:
const Scrimmage = require('@scrimmage/rewards');
or in ES6:
import Scrimmage from '@scrimmage/rewards';
Initialize the library for global usage
Scrimmage.initRewarder({ apiServerEndpoint: '<your api server endpoint>', privateKey: '<your private key>', namespace: '<environment, e.g. staging or production>', });
Use the library
await Scrimmage.reward.trackRewardable( 'unique-user-id', 'Data Type Name', { 'custom-property': 'custom-value', 'custom-property-2': { 'custom-property-2-1': 'custom-value-2-1', }, }, );
For one-time events you can use
trackRewardableOnce
method. Make sure to use unique event id.await Scrimmage.reward.trackRewardableOnce( 'unique-user-id', 'Data Type Name', 'unique-event-id', { 'custom-property': 'custom-value', 'custom-property-2': { 'custom-property-2-1': 'custom-value-2-1', }, }, );
Get user token
const token = await Scrimmage.user.getUserToken('unique-user-id');
or
const token = await Scrimmage.user.getUserToken('unique-user-id', { tags: ['tag1', 'tag2'], properties: { 'custom-property': 'custom-value', 'custom-property-2': 12345, }, });
Use this token to identify the user on the frontend. Make sure to deliver the token to the frontend securely.
Multiple connections
If you want to use multiple connections, you need to create a new instance of the library.
const rewarderForProduction = Scrimmage.createRewarder({
apiServer: '<your api server endpoint 1>',
privateKey: '<your private key 1>',
namespace: '<environment 1, e.g. staging or production>',
});
const rewarderForStaging = Scrimmage.createRewarder({
apiServer: '<your api server endpoint 2>',
privateKey: '<your private key 2>',
namespace: '<environment 2, e.g. staging or production>',
});
Then you can use the two instances simultaneously.
await rewarderForProduction.reward.trackRewardable(
'unique-user-id',
'Data Type Name',
{
'custom-property': 'custom-value',
'custom-property-2': {
'custom-property-2-1': 'custom-value-2-1',
},
},
);
await rewarderForStaging.reward.trackRewardable(
'unique-user-id',
'Data Type Name',
{
'custom-property': 'custom-value',
'custom-property-2': {
'custom-property-2-1': 'custom-value-2-1',
},
},
);
Usage on the frontend
- Using
<iframe />
: github.com/Scrimmage-co/scrimmage-rewards-iframe - Using Android: github.com/Scrimmage-co/scrimmage-rewards-android
- Using iOS: github.com/Scrimmage-co/scrimmage-rewards-ios
- Using Flutter: github.com/Scrimmage-co/scrimmage-rewards-flutter