本指南介绍如何配置 InMobi SDK,以便传递用于广告竞价定价或第一方数据的自定义信号。此外,您还可以随每个广告请求向 InMobi SDK 发送自定义用户级或请求级信号。这有助于提高广告相关性,从而提升填充率和有效每千次展示费用 (eCPM)。
从 InMobi SDK 10.7.8 版本开始支持。
对于 Unity 集成——无论是直接集成到 Unity 中,还是通过中介平台的 Unity 集成,您都需要从 下载 SDK下载 Unity 插件 并将其添加到您的项目中。
请按照以下说明操作:
putPublisherSignals。此方法必须在 InMobi SDK 成功初始化后调用。getPublisherSignals方法来检查已经设置了哪些信号。resetPublisherSignals如果要清除用户的所有信号数据, 可以调用该方法。
有些信号,例如底价、曝光深度、用户点击率等,在每种格式中都有不同的值,而付费用户和留存率等信号在各种格式中则具有相同的值。
// Ensure InMobi SDK is initialized
// Create a map with required values
Map<String, Object> publisherSignals = new HashMap<>();
publisherSignals.put("iap", true); // User has made IAP
publisherSignals.put("ua_type", "paid"); // User is acquired via paid medium
publisherSignals.put("iap_type", "minnow"); // User has made low purchases
publisherSignals.put("iaa_type", "whale"); // User has seen high number of ads
publisherSignals.put("s_dep_rew", 4); // User has seen 4 rewarded ads in current session
publisherSignals.put("i_dep_rew", 10); // User has seen 10 rewarded ads in lifetime
publisherSignals.put("ctr_rew", 9.25); // Historical CTR for user is 9.25%
publisherSignals.put("abp_5_rew", 0.01720); // Average winning bid price for last 5 rewarded auctions was $0.01720, eCPM is $17.2
// Set the extras on InMobiSdk
InMobiSdk.PublisherSignals.INSTANCE.putPublisherSignals(publisherSignals);
// ensure InMobi SDK is initialised
// create map with required values
val publisherSignals = mapOf(
"iap" to true, // User has made IAP
"ua_type" to "paid", // User is acquired via paid medium
"iap_type" to "minnow", //User has made low purchases
"iaa_type" to "whale", //User has seen high number of ads
"s_dep_rew" to 4, //User has seen 4 rewarded ads in current session
"i_dep_rew" to 10, //User has seen 10 rewarded ads in lifetime
"ctr_rew" to 9.25, //Historical CTR for user is 9.25%
"abp_5_rew" to 0.01720 //average winning bid price for last 5 rewarded auctions was $0.01720, eCPM is $17.2
)
// Set the extras on InMobiSdk
InMobiSdk.PublisherSignals.putPublisherSignals(publisherSignals)
// ensure InMobi SDK is initialised
// create map with required values
let publisherSignals: [String: Any] = [
"iap": true, // User has made IAP
"ua_type": "paid", // User is acquired via paid medium
"iap_type": "minnow", // User has made low purchases
"iaa_type": "whale", // User has seen high number of ads
"s_dep_rew": 4, // User has seen 4 rewarded ads in current session
"i_dep_rew": 10, // User has seen 10 rewarded ads in lifetime
"ctr_rew": 9.25, // Historical CTR for user is 9.25%
"abp_5_rew": 0.01720 // Average winning bid price for last 5 rewarded auctions was $0.01720, eCPM is $17.2
]
// Set the extras on InMobiSdk
IMSdk.putPublisherSignals(publisherSignals)
// create a dictionary with all required signals and corresponding values
Dictionary<string, object> publisherSignals = new Dictionary<string, object> { };
publisherSignals.Add("iap", "true"); // User has made IAP
publisherSignals.Add("ua_type", "paid"); // User is acquired via paid medium
publisherSignals.Add("iap_type", "minnow"); // User has made low purchases
publisherSignals.Add("iaa_type", "whale"); // User has seen high number of ads
publisherSignals.Add("s_dep_rew", 4); // User has seen 4 rewarded ads in current session
publisherSignals.Add("i_dep_rew", 10); // User has seen 10 rewarded ads in lifetime
publisherSignals.Add("ctr_rew", 9.25); // Historical CTR for user is 9.25%
publisherSignals.Add("abp_5_rew", 0.01720); // Average winning bid price for last 5 rewarded auctions was $0.01720, eCPM is $17.2
// example for passing signals in rewarded requests
InMobiplugin.putPublisherSignals(publisherSignals);
为了帮助优化变现并实现更精准的广告竞价定价,InMobi SDK 允许发布商在每次广告请求中传递与出价相关的信号。这些信号以编程方式提供精细的出价信息,从而提高收益。
注意:目前只有 AppLovin MAX 支持竞价信号。
您可以在 SDK 初始化后使用该方法发送竞价信号putPublisherSignals。竞价信号的典型键值对如下:
| 钥匙 | 描述 | 价值 |
|---|---|---|
dir_r |
竞价 | 来自 MaxAd 对象的收入(以双精度浮点数形式表示,而非 eCPM) |
dir_nn |
需求网络名称 | 来自 MaxAd 对象中的 NetworkName(例如,“AppLovin MAX”、“InMobi”) |
dir_type |
广告格式 | 广告格式标签(大写,例如"INTER","REWARDED") |
或者,您可以传递整个MaxAd对象。InMobi SDK 将自动提取受支持的出价信号值。
要正式启用此功能,必须提供平均清算价格。SDK
会在您提供所需输入后自动计算此平均值。
您必须在回调函数putPublisherSignals内部调用onAdDisplayed,并按广告格式分组。
您可以通过以下任何一种方式来实现:
这种方法适用于喜欢更精细控制的开发者。您可以显式提取并传递诸如收入、网络名称和广告格式等各个值。
@Override
public void onAdDisplayed(MaxAd maxAd) {
Map<String, Object> signals = new HashMap<>();
signals.put("dir_r", maxAd.getRevenue());
signals.put("dir_nn", maxAd.getNetworkName());
signals.put("dir_type", maxAd.getFormat().getLabel());
InMobiSdk.PublisherSignals.INSTANCE.putPublisherSignals(signals);
}
override fun onAdDisplayed(maxAd: MaxAd) {
InMobiSdk.PublisherSignals.putPublisherSignals(
mapOf(
"dir_r" to maxAd.revenue,
"dir_nn" to maxAd.networkName,
"dir_type" to maxAd.format.label
)
)
}
func onAdDisplayed(_ maxAd: MAAd) {
let signals: [String: Any] = [
"dir_r": maxAd.revenue,
"dir_nn": maxAd.networkName,
"dir_type": maxAd.format.label
]
IMSdk.putPublisherSignals(signals)
}
maxAd对象在这种方法中,您可以将完整的 maxAd 对象直接传递给 SDK。SDK 会在内部提取所有必需的值,从而简化您的集成。
@Override
public void onAdDisplayed(MaxAd maxAd) {
Map<String, Object> signals = new HashMap<>();
signals.put("obj_max", maxAd);
InMobiSdk.PublisherSignals.INSTANCE.putPublisherSignals(signals);
}
override fun onAdDisplayed(maxAd: MaxAd) {
InMobiSdk.PublisherSignals.putPublisherSignals(
mapOf("obj_max" to maxAd)
)
}
func onAdDisplayed(_ maxAd: MAAd) {
let signals: [String: Any] = [
"obj_max": maxAd
]
IMSdk.putPublisherSignals(signals)
}
在 Unity 中,您必须从广告事件中提取各个属性,并将它们添加到字典中,然后才能将其传递给 SDK。Unity 不支持传递完整的广告信息对象。
private void OnAdDisplayed(string adUnitId, MaxSdkBase.AdInfo adInfo)
{
var signals = new Dictionary<string, object>();
signals.Add("dir_r", adInfo.Revenue);
signals.Add("dir_nn", adInfo.NetworkName);
signals.Add("dir_type", adInfo.AdFormat.ToUpper());
this.inmobiPlugin.PutPublisherSignals(signals);
}
使用后缀“ban”、“int”、“rew”、“nat”分别表示横幅广告、插页式广告、激励广告和原生广告。
| 信号 | 键(区分大小写) | 支持的数据类型 | 允许值 |
| 印迹深度 |
i_dep_(ad_type) 例如 i_dep_ban、i_dep_int、i_dep_rew 等。 |
整数 | 用户一生中看到的广告总数。 |
| 付费用户 | 应用内购买 | 布尔值 | 如果用户已进行应用内购买,则返回“true”,否则返回“false”。 |
| 最近 n 次拍卖的平均清算价格 |
abp_10_(ad_type) 例如 abp_10_ban、abp_10_int、abp_10_rew、abp_rew、abp_5_ban、abp_5_int、abp_5_rew |
双倍的 | 以美元计价,以及出价(非每千次展示成本)。 |
| 收购来源 | ua_type | 细绳 | “付费”→ 如果用户是通过付费广告获得的, “自然”→ 如果用户是通过自然方式获得的 |
| 会话深度 |
s_dep_(ad_type) 例如 s_dep_ban、s_dep_int 等 |
整数 | “10”、“15”、“20”或任何基于用户在当前会话中看到的广告数量的整数值。 |
| 用户平均点击率 |
ctr_(ad_type) 例如 ctr_ban、ctr_int 等。 |
双倍的 | 根据用户的点击率,可以是“0.5”、“5.5”、“10”或介于 0 到 100 之间的任何双精度值。 |
| 购买用户群 | iap_type | 细绳 | 仅当 iapis 设置为 true 且基于应用内购买价值时适用。
'小鱼'(<$5), '海豚'(>$5 & <=$10), '鲨鱼'(>$10 & <=$50), '鲸鱼'(>$50) |
| 广告用户群体 | iaa_type | 细绳 |
根据用户看到的全屏广告或激励广告的数量。 'minnow'(<5 条广告),'dolphin'(>5 且 <=10),'shark'(>10 且 <=25),'whale'(>25) |
putPublisherSignals方法传递信号的情况。该setExtras方法要求所有值都以字符串形式传递。| 信号 | 描述 | 键(区分大小写) | 值类型 |
|
内容标题 |
内容标题 |
c_title |
细绳 |
|
内容系列 |
内容系列 |
c系列 |
细绳 |
|
内容 URL |
内容网址,供买方进行上下文关联或审核 |
卷曲 |
细绳 |
|
内容类别 |
以逗号分隔的 IAB 内容类别列表,用于描述内容。 |
c_cat |
细绳 |
|
内容类别分类 |
当前使用的分类法。请参阅 列表:类别分类法 |
c_cattax |
整数,默认值为 1 |
|
内容背景 |
内容类型(游戏、视频、文本等)。请参阅“内容上下文”列表。 |
c_context |
细绳 |
|
内容分级(QAG 媒体分级) |
根据IQG指南进行媒体评级。请参阅列表:媒体评级。 |
c_rating |
整数 |
|
内容关键词 |
以逗号分隔的内容关键词列表 |
c_keywords |
细绳 |
|
内容语言 |
内容语言采用 ISO-639-1-alpha-2。 |
铛 |
细绳 |
欲了解更多信息,请阅读我们的博客《发出信号走向成功》第 1 部分和第 2 部分。
如果可用,您还可以将用户的年龄和性别信息传递给 InMobi SDK。这些信息有助于精准定位广告系列,从而提高广告效果。请确保在调用以下函数之前已初始化 InMobi SDK。
InMobiSdk.setGender(InMobiSdk.Gender.MALE); // or InMobiSdk.Gender.FEMALE
InMobiSdk.setAge(age);
InMobiSdk.setAgeGroup(InMobiSdk.AgeGroup.BELOW_18); // other enums: BETWEEN_18_AND_20, BETWEEN_21_AND_24, BETWEEN_25_AND_34 // BETWEEN_35_AND_5, ABOVE_55
InMobiSdk.setGender(InMobiSdk.Gender.MALE) // or InMobiSdk.Gender.FEMALE
InMobiSdk.setAge(age)
InMobiSdk.setAgeGroup(InMobiSdk.AgeGroup.BELOW_18)
IMSdk.setGender(.female)
IMSdk.setAge(28)
IMSdk.setAgeGroup(.between25And29)
By installing this SDK update, you agree that your Children Privacy Compliance setting remains accurate or that you will update that setting, whenever there is a change in your app's audience. You may update the app's Children Privacy Compliance settings at https://publisher.inmobi.com/my-inventory/app-and-placements.