LiveOpsキャンペーン #
The response from the LiveOps feature won’t always be real-time. We don’t have the guaranteed response time, so please implement the retry logic if you don’t get a response in time.
In Tenjin you can set up a custom user journey depending on their attribution source. This opens up a whole array of different opportunities for better and more innovative in-app experience.
Example 1: Give in-game rewards to users that came from a specific ad campaign (eg cross-promotional campaign).
Example 2: Set different user flows (onboarding, monetization, and others) depending on whether a user is coming from an advertising campaign or from an organic source.
LiveOps Campaigns is an add-on feature depending on our Tenjin plan. Please contact your Tenjin account manager or write to support@tenjin.com if you are interested.
How do LiveOps Campaigns work? #
After attribution data is processed on a Tenjin server, it can be returned to a client (app) upon request. The data is then processed by the app and used to display in-app content accordingly.
Tenjin is covering only the data transition part of this workflow. Dynamic replacement of in-app content is the responsibility of app developers.
What attribution data can I pass to an app? #
When available, the following parameters can be passed back to an app:
| Parameter | Description | Example of returned value |
| advertising_id | Advertising ID of the device | 11de7924d076456d9a203c8dee56632a |
| ad_network | Ad network of the campaign | mintegral |
| campaign_id | Tenjin campaign ID | 6ebd3332-68f8-4919-875c-73fe6780d4f7 |
| campaign_name | Tenjin campaign name or campaign name from ad network (if the ad network passes campaign name to Tenjin via attribution link or API, including all major channels: Meta, Google, Tiktok, Applovin, etc.) | mtg_us_1103 |
| site_id | Sub channel or source app id | mtg_1256527 |
| creative_name | Creative name from ad network | video_123 |
| remote_campaign_id | Ad network campaign ID | ss_mtg_US_1123 |
| deferred_deeplink_url | Deferred Deep Link URL | |
| click_id | Ad network click ID | mtg65cebc77cddec80001c17f4w |
| analytics_installation_id | Tenjin generated application install-specific identifier | f024e65f3dd94f16983726bcef192d68 |
Here is the example of how the returned data object may look like:

What do I need to set up LiveOps campaigns with Tenjin? #
You will need the following:
- Successfully integrate Tenjin SDK 1.12.19+
- Make sure you initiate Tenjin SDK in every app open
- For Android, main activity onResume, call instance.connect();
- For Unity Plugin, Application onStart and onApplicationPause, call instance.connect();
Integration Sample – iOS:
[[TenjinSDK sharedInstance]
getAttributionInfo:^(NSMutableDictionary *attributionInfo) {
NSLog(@"TenjinSDK getAttributionInfo result: %@", attributionInfo);
// LOG:
// {
// "advertising_id": "11de7924d076456d9a203c8dee56632a",
// "ad_network": "mintegral",
// "campaign_id": "6ebd3332-68f8-4919-875c-73fe6780d4f7",
// "campaign_name": "mtg_us_1103"
// "site_id": "mtg_1256527",
// "creative_name": "video_123"
// }
}]
;Integration Sample – Android:
import com.tenjin.android.Callback;
import com.tenjin.android.TenjinSDK;
public class TenjinDemo extends ActionBarActivity {
//...other callbacks are here
@Override
public void onResume() {
// standard code
super.onResume()
// Integrate TenjinSDK connect call
String apiKey = "<API_KEY>";
TenjinSDK instance = TenjinSDK.getInstance(こちら, apiKey);
instance.connect();
instance.getAttributionInfo(new Callback() {
@Override
public void onSuccess(Map<String, String> data) {
if (data.containsKey(TenjinConsts.ATTR_PARAM_ADVERTISING_ID)) {
// Advertising ID of the device
}
if (data.containsKey(TenjinConsts.ATTR_PARAM_AD_NETWORK)) {
// Ad network of the campaign
}
if (data.containsKey(TenjinConsts.ATTR_PARAM_CAMPAIGN_ID)) {
// Tenjin campaign ID
}
if (data.containsKey(TenjinConsts.ATTR_PARAM_CAMPAIGN_NAME)) {
// Tenjin campaign name
}
if (data.containsKey(TenjinConsts.ATTR_PARAM_SITE_ID)) {
// Tenjin site id
}
if (data.containsKey(TenjinConsts.ATTR_PARAM_CREATIVE_NAME)) {
// Tenjin creative name
}
}
});
// Your other code...
...
}
}
Integration Sample – Unity:
BaseTenjin instance = Tenjin.getInstance("<SDK_KEY>");
instance.GetAttributionInfo((Dictionary<string, string> attributionInfoData) => {
// Handle the attribution info data here
});Here is the example of how the returned data object may look like:
