动态运营LiveOps #
LiveOps 功能的响应并不总是即时的。我们并不能保证每一次都能在指定时间内获得确认应答。因此,如若未能及时收到响应,敬请您实施重试逻辑(retry logic)以获得更好的效果。
在Tenjin中,您可以根据用户归因来源设置自定义用户旅程。这为改进和更具创新性的应用内体验提供了一系列不同的机会。
场景1: 为来自特定广告活动(例如交叉推广活动)的用户提供游戏内奖励。
场景2: 根据用户是来自买量还是自然量,设置不同的用户流程(如引导、变现等)
LiveOps Campaigns 如何运作? #
在Tenjin服务器上处理了归因数据之后,可以根据请求将数据返回给客户端(应用)。然后,应用会处理数据并根据需要显示应用内内容。
Tenjin仅负责此工作流程的数据传输部分。应用内内容的动态替换由应用开发者负责。
我可以将哪些归因数据传递给应用? #
如果可用,以下参数可以传递回应用:
| 参数 | 说明 | 返回值示例 |
| advertising_id | 设备的广告ID | 11de7924d076456d9a203c8dee56632a |
| ad_network | Campaign的广告渠道 | mintegral |
| campaign_id | Tenjin campaign ID | 6ebd3332-68f8-4919-875c-73fe6780d4f7 |
| campaign_name | Tenjin的Campaign名称,或来自广告渠道的Campaign名称(如果广告渠道通过归因链接或API将Campaign名称传递给Tenjin,包括所有主要渠道:Meta、Google、Tiktok、Axon by Applovin等) | mtg_us_1103 |
| site_id | 子渠道ID | mtg_1256527 |
| creative_name | 来自广告渠道的素材名称 | video_123 |
| remote_campaign_id | 广告渠道Campaign ID | ss_mtg_US_1123 |
| deferred_deeplink_url | 延迟深度链接 | |
| click_id | 广告渠道点击ID | mtg65cebc77cddec80001c17f4w |
| analytics_installation_id | Tenjin生成的应用安装ID | f024e65f3dd94f16983726bcef192d68 |
以下是返回数据的示例:

我需要如何设置LiveOps Campaigns? #
您需要以下内容:
- 成功集成Tenjin SDK 1.12.19+
- 请确保在每次应用启动时都初始化 Tenjin SDK:
- 对于Android,在主Activity的onResume中调用instance.connect();
- 对于Unity插件,在Application的onStart和onApplicationPause中调用instance.connect();
集成示例– iOS:
JavaScript
[[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"
// }
}]
;集成示例– Android:
JavaScript
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(this, 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...
...
}
}
集成示例 – Unity:
JavaScript
BaseTenjin instance = Tenjin.getInstance("<SDK_KEY>");
instance.GetAttributionInfo((Dictionary<string, string> attributionInfoData) => {
// Handle the Attribution info data here
});以下是返回数据的示例:
