Initialization
Integrating the Tyrads offerwall functionality into your application is a straightforward process that involves a few key steps. By following these integration steps, you can seamlessly incorporate the offerwall feature, enhancing user engagement and potentially generating revenue for your application.
1. Initialization
SDK Initialization best practices:
Initiate early: It's advisable to initialize the SDK promptly after your app launches to ensure that all Tyr SDK functionalities are accessible when needed.
Initiate post-app authentication: Re-initiate the SDK with current user details immediately after your user signs up or signs in to the app to update the
userId.Initiate periodically: To optimize user experience, we strongly suggest invoking this method each time your app is brought to the forefront. This shouldn't impact your app's performance noticeably.
This step initializes the Tyrads SDK within your application. You need to provide the API key and API secret obtained from the Tyrads platform. This allows your app to communicate securely with Tyrads' servers.
CoroutineScope(Dispatchers.Main).launch {
Tyrads.getInstance().init(
context,
apiKey: "xyz",
apiSecret:"abc123",
encryptionKey:"qwet",
engagementId = 333",
config = TyradsConfig(
skipInitialPages = true
),
);
}Tyrads.getInstance().init(
context,
"xyz",
"abc123",
engagementId = "333",
config = TyradsConfig(
skipInitialPages = true
),
new TyradsCallback {
override fun onSuccess() {
Log.i("Tyrads", "Initialized successfully")
}
override fun onFailure(error: String) {
Log.e("Tyrads", "Failed to initialize: $error")
}
}
);encryptionKey: This would be used for encrypting data transmitted from the SDK. If not provided, data will be transmitted plain form.
engagementId: (New) Optional engagement identifier to associate SDK activity with specific user engagements or campaigns.
config: (New) Configuration object (TyradsConfig) to customize SDK behavior. For example, skipInitialPages a Boolean (true or false) can be set dynamically. The skipInitialPages option in the TyradsConfig allows your app to bypass certain introductory pages during SDK initialization. When set to true, the SDK will skip the Privacy and Terms & Conditions page as well as the Usage Permission page, allowing users to enter directly into the main app experience without having to manually navigate through these consent or informational screens.
1.1 Advanced Practices for initialization for personalized rewards
To maximize the value to the user sending us more data about the user and where they came from allow us to customize the reward experience. This can be used to provide feedback of quality of users aswell as customize the earnings journey of different segments of users.
To maximize the value of our Tyr SDK please follow the advanced options for initialization. This will allow us to personalize the rewards for the user event further and maximize the earnings for you as publisher.
CoroutineScope(Dispatchers.Main).launch {
val userInfo = TyradsUserInfo(
email = "[email protected]",
phoneNumber = "0987653211223",
userGroup = "High purchase user"
)
val mediaSourceInfo = TyradsMediaSourceInfo(
mediaSourceName = "Facebook",
mediaCampaignName = "Summer Sale",
mediaSourceId = "123",
mediaSubSourceId = "A1",
incentivized = true,
mediaAdsetName = "AdSet1",
mediaAdsetId = "AS123",
mediaCreativeName = "CreativeBanner",
mediaCreativeId = "CB123",
sub1 = "user123",
sub2 = "app_launch",
sub3 = "variantA",
sub4 = "regionX",
sub5 = "extraInfo"
)
Tyrads.getInstance().setMediaSourceInfo(mediaSourceInfo)
Tyrads.getInstance().setUserInfo(userInfo)
Tyrads.getInstance().init(
context,
apiKey: "xyz",
apiSecret:"abc123",
encryptionKey:"qwet",
engagementId = 333",
config = TyradsConfig(
skipInitialPages = true
),
);
}TyradsUserInfo userInfo = new TyradsUserInfo(
email = "[email protected]",
phoneNumber = "0987653211223",
userGroup = "High purchase user"
);
TyradsMediaSourceInfo mediaSource = new TyradsMediaSourceInfo(
mediaSourceName = "Facebook",
mediaCampaignName = "Summer Sale",
mediaSourceId = "123",
mediaSubSourceId = "A1",
incentivized = true,
mediaAdsetName = "AdSet1",
mediaAdsetId = "AS123",
mediaCreativeName = "CreativeBanner",
mediaCreativeId = "CB123",
sub1 = "user123",
sub2 = "app_launch",
sub3 = "variantA",
sub4 = "regionX",
sub5 = "extraInfo"
);
Tyrads.getInstance().setMediaSourceInfo(mediaSource);
Tyrads.getInstance().setUserInfo(userInfo);
Tyrads.getInstance().init(
context,
"xyz",
"abc123",
engagementId = "333",
config = TyradsConfig(
skipInitialPages = true
),
new TyradsCallback {
override fun onSuccess() {
Log.i("Tyrads", "Initialized successfully")
}
override fun onFailure(error: String) {
Log.e("Tyrads", "Failed to initialize: $error")
}
}
););
Always call
setMediaSourceInfoorsetUserInfoimmediately prior (before) to SDKloginUseror just afterinitto ensure all campaign metadata is tracked from session start.If certain fields in the
TyradsMediaSourceInfoorTyradsUserInfoclass are not needed, simply omit them from your object creation—these fields will remainnullby default and can be ignored unless explicitly set. There is no need to assignnullmanually; unassigned parameters will default automatically.
Sending User Segments / User Info
2. User Login
Upon initializing the SDK, the mandatory step is to log in the user. However, passing a user ID is optional and is only necessary when the publisher operates its own user system. This login process ensures that user interactions with the offerwall are accurately tracked and attributed within the application.
CoroutineScope(Dispatchers.Main).launch {
Tyrads.getInstance().loginUser(
userID: "xxx"
);//userID is optional
} Tyrads.getInstance().loginUser(
"xxx",
new TyradsLoginCallback {
override fun onSuccess() {
Log.i("Tyrads", "Login successfully")
}
override fun onFailure(error: String) {
Log.e("Tyrads", "Failed to login: $error")
}
}
); // userID is optionalThe generated user ID from the SDK is based on the device identifier (GAID/OAID/IDFA)
If your app user resets the device identifier, your user will lose the progress data
If the SDK can't access the device identifier, it will generate its own device identifier and store it in the app storage. If this is the case, your app user will lose the progress data when the user uninstalls the app
If you send us your userId within userId field from your backened we will save this and even if the user changes their device ID we will ke ep their progress.
3. Show Offerwall
Once the SDK is initialized and the user is logged in (if applicable), you can display the offerwall to the user. This typically involves calling a function provided by the Tyrads SDK, such as showOffers. The offerwall is where users can engage with various offers, advertisements, or promotions provided by Tyrads, potentially earning rewards or incentives in the process.
CoroutineScope(Dispatchers.Main).launch {
Tyrads.getInstance().showOffers();
}Tyrads.getInstance().showOffers(
null,
null,
new TyradsCallback {
override fun onSuccess() {
Log.i("Tyrads", "Offers displayed successfully")
}
override fun onFailure(error: String) {
Log.e("Tyrads", "Failed to display offers: $error")
}
}
);Last updated