本指南介绍如何配置 InMobi SDK,以便传递用于广告竞价定价或第一方数据的自定义信号。此外,您还可以随每个广告请求向 InMobi SDK 发送自定义用户级或请求级信号。这有助于提高广告相关性,从而提升填充率和有效每千次展示费用 (eCPM)。
从 InMobi SDK 10.7.8 版本开始支持。
对于 Unity 集成——无论是直接集成到 Unity 中,还是通过中介平台的 Unity 集成,您都需要从 下载 SDK下载 Unity 插件 并将其添加到您的项目中。
请按照以下说明操作:
putPublisherSignals。此方法必须在 InMobi SDK 成功初始化后调用。getPublisherSignals方法来检查已经设置了哪些信号。resetPublisherSignals如果要清除用户的所有信号数据, 可以调用该方法。
有些信号,例如底价、曝光深度、用户点击率等,在每种格式中都有不同的值,而付费用户和留存率等信号在各种格式中则具有相同的值。
<span class="hljs-comment">// Ensure InMobi SDK is initialized</span>
<span class="hljs-comment">// Create a map with required values</span>
<span class="hljs-title class_">Map</span><<span class="hljs-title class_">String</span>, <span class="hljs-title class_">Object</span>> publisherSignals = <span class="hljs-keyword">new</span> <span class="hljs-title class_">HashMap</span><>();
publisherSignals.<span class="hljs-title function_">put</span>(<span class="hljs-string">"iap"</span>, <span class="hljs-literal">true</span>); <span class="hljs-comment">// User has made IAP</span>
publisherSignals.<span class="hljs-title function_">put</span>(<span class="hljs-string">"ua_type"</span>, <span class="hljs-string">"paid"</span>); <span class="hljs-comment">// User is acquired via paid medium</span>
publisherSignals.<span class="hljs-title function_">put</span>(<span class="hljs-string">"iap_type"</span>, <span class="hljs-string">"minnow"</span>); <span class="hljs-comment">// User has made low purchases</span>
publisherSignals.<span class="hljs-title function_">put</span>(<span class="hljs-string">"iaa_type"</span>, <span class="hljs-string">"whale"</span>); <span class="hljs-comment">// User has seen high number of ads</span>
publisherSignals.<span class="hljs-title function_">put</span>(<span class="hljs-string">"s_dep_rew"</span>, <span class="hljs-number">4</span>); <span class="hljs-comment">// User has seen 4 rewarded ads in current session</span>
publisherSignals.<span class="hljs-title function_">put</span>(<span class="hljs-string">"i_dep_rew"</span>, <span class="hljs-number">10</span>); <span class="hljs-comment">// User has seen 10 rewarded ads in lifetime</span>
publisherSignals.<span class="hljs-title function_">put</span>(<span class="hljs-string">"ctr_rew"</span>, <span class="hljs-number">9.25</span>); <span class="hljs-comment">// Historical CTR for user is 9.25%</span>
publisherSignals.<span class="hljs-title function_">put</span>(<span class="hljs-string">"abp_5_rew"</span>, <span class="hljs-number">0.01720</span>); <span class="hljs-comment">// Average winning bid price for last 5 rewarded auctions was $0.01720, eCPM is $17.2</span>
<span class="hljs-comment">// Set the extras on InMobiSdk</span>
<span class="hljs-title class_">InMobiSdk</span>.<span class="hljs-property">PublisherSignals</span>.<span class="hljs-property">INSTANCE</span>.<span class="hljs-title function_">putPublisherSignals</span>(publisherSignals);
<span class="hljs-comment">// ensure InMobi SDK is initialised</span>
<span class="hljs-comment">// create map with required values</span>
<span class="hljs-type">val</span> <span class="hljs-variable">publisherSignals</span> <span class="hljs-operator">=</span> mapOf(
<span class="hljs-string">"iap"</span> to <span class="hljs-literal">true</span>, <span class="hljs-comment">// User has made IAP</span>
<span class="hljs-string">"ua_type"</span> to <span class="hljs-string">"paid"</span>, <span class="hljs-comment">// User is acquired via paid medium</span>
<span class="hljs-string">"iap_type"</span> to <span class="hljs-string">"minnow"</span>, <span class="hljs-comment">//User has made low purchases</span>
<span class="hljs-string">"iaa_type"</span> to <span class="hljs-string">"whale"</span>, <span class="hljs-comment">//User has seen high number of ads</span>
<span class="hljs-string">"s_dep_rew"</span> to <span class="hljs-number">4</span>, <span class="hljs-comment">//User has seen 4 rewarded ads in current session</span>
<span class="hljs-string">"i_dep_rew"</span> to <span class="hljs-number">10</span>, <span class="hljs-comment">//User has seen 10 rewarded ads in lifetime</span>
<span class="hljs-string">"ctr_rew"</span> to <span class="hljs-number">9.25</span>, <span class="hljs-comment">//Historical CTR for user is 9.25%</span>
<span class="hljs-string">"abp_5_rew"</span> to <span class="hljs-number">0.01720</span> <span class="hljs-comment">//average winning bid price for last 5 rewarded auctions was $0.01720, eCPM is $17.2</span>
)
<span class="hljs-comment">// Set the extras on InMobiSdk</span>
InMobiSdk.PublisherSignals.putPublisherSignals(publisherSignals)
<span class="hljs-comment">// ensure InMobi SDK is initialised</span>
<span class="hljs-comment">// create map with required values</span>
<span class="hljs-keyword">let</span> <span class="hljs-attr">publisherSignals</span>: [<span class="hljs-title class_">String</span>: <span class="hljs-title class_">Any</span>] = [
<span class="hljs-string">"iap"</span>: <span class="hljs-literal">true</span>, <span class="hljs-comment">// User has made IAP</span>
<span class="hljs-string">"ua_type"</span>: <span class="hljs-string">"paid"</span>, <span class="hljs-comment">// User is acquired via paid medium</span>
<span class="hljs-string">"iap_type"</span>: <span class="hljs-string">"minnow"</span>, <span class="hljs-comment">// User has made low purchases</span>
<span class="hljs-string">"iaa_type"</span>: <span class="hljs-string">"whale"</span>, <span class="hljs-comment">// User has seen high number of ads</span>
<span class="hljs-string">"s_dep_rew"</span>: <span class="hljs-number">4</span>, <span class="hljs-comment">// User has seen 4 rewarded ads in current session</span>
<span class="hljs-string">"i_dep_rew"</span>: <span class="hljs-number">10</span>, <span class="hljs-comment">// User has seen 10 rewarded ads in lifetime</span>
<span class="hljs-string">"ctr_rew"</span>: <span class="hljs-number">9.25</span>, <span class="hljs-comment">// Historical CTR for user is 9.25%</span>
<span class="hljs-string">"abp_5_rew"</span>: <span class="hljs-number">0.01720</span> <span class="hljs-comment">// Average winning bid price for last 5 rewarded auctions was $0.01720, eCPM is $17.2</span>
]
<span class="hljs-comment">// Set the extras on InMobiSdk</span>
<span class="hljs-title class_">IMSdk</span>.<span class="hljs-title function_">putPublisherSignals</span>(publisherSignals)
<span class="hljs-comment">// create a dictionary with all required signals and corresponding values</span>
<span class="hljs-title class_">Dictionary</span><<span class="hljs-built_in">string</span>, <span class="hljs-built_in">object</span>> publisherSignals = <span class="hljs-keyword">new</span> <span class="hljs-title class_">Dictionary</span><<span class="hljs-built_in">string</span>, <span class="hljs-built_in">object</span>> { };
publisherSignals.<span class="hljs-title class_">Add</span>(<span class="hljs-string">"iap"</span>, <span class="hljs-string">"true"</span>); <span class="hljs-comment">// User has made IAP</span>
publisherSignals.<span class="hljs-title class_">Add</span>(<span class="hljs-string">"ua_type"</span>, <span class="hljs-string">"paid"</span>); <span class="hljs-comment">// User is acquired via paid medium</span>
publisherSignals.<span class="hljs-title class_">Add</span>(<span class="hljs-string">"iap_type"</span>, <span class="hljs-string">"minnow"</span>); <span class="hljs-comment">// User has made low purchases</span>
publisherSignals.<span class="hljs-title class_">Add</span>(<span class="hljs-string">"iaa_type"</span>, <span class="hljs-string">"whale"</span>); <span class="hljs-comment">// User has seen high number of ads</span>
publisherSignals.<span class="hljs-title class_">Add</span>(<span class="hljs-string">"s_dep_rew"</span>, <span class="hljs-number">4</span>); <span class="hljs-comment">// User has seen 4 rewarded ads in current session</span>
publisherSignals.<span class="hljs-title class_">Add</span>(<span class="hljs-string">"i_dep_rew"</span>, <span class="hljs-number">10</span>); <span class="hljs-comment">// User has seen 10 rewarded ads in lifetime</span>
publisherSignals.<span class="hljs-title class_">Add</span>(<span class="hljs-string">"ctr_rew"</span>, <span class="hljs-number">9.25</span>); <span class="hljs-comment">// Historical CTR for user is 9.25%</span>
publisherSignals.<span class="hljs-title class_">Add</span>(<span class="hljs-string">"abp_5_rew"</span>, <span class="hljs-number">0.01720</span>); <span class="hljs-comment">// Average winning bid price for last 5 rewarded auctions was $0.01720, eCPM is $17.2</span>
<span class="hljs-comment">// example for passing signals in rewarded requests</span>
<span class="hljs-title class_">InMobiplugin</span>.<span class="hljs-title function_">putPublisherSignals</span>(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,并按广告格式分组。
您可以通过以下任何一种方式来实现:
这种方法适用于喜欢更精细控制的开发者。您可以显式提取并传递诸如收入、网络名称和广告格式等各个值。
<span class="hljs-meta">@Override</span>
<span class="hljs-keyword">public</span> <span class="hljs-built_in">void</span> <span class="hljs-title function_">onAdDisplayed</span>(<span class="hljs-params">MaxAd maxAd</span>) {
<span class="hljs-title class_">Map</span><<span class="hljs-title class_">String</span>, <span class="hljs-title class_">Object</span>> signals = <span class="hljs-keyword">new</span> <span class="hljs-title class_">HashMap</span><>();
signals.<span class="hljs-title function_">put</span>(<span class="hljs-string">"dir_r"</span>, maxAd.<span class="hljs-title function_">getRevenue</span>());
signals.<span class="hljs-title function_">put</span>(<span class="hljs-string">"dir_nn"</span>, maxAd.<span class="hljs-title function_">getNetworkName</span>());
signals.<span class="hljs-title function_">put</span>(<span class="hljs-string">"dir_type"</span>, maxAd.<span class="hljs-title function_">getFormat</span>().<span class="hljs-title function_">getLabel</span>());
<span class="hljs-title class_">InMobiSdk</span>.<span class="hljs-property">PublisherSignals</span>.<span class="hljs-property">INSTANCE</span>.<span class="hljs-title function_">putPublisherSignals</span>(signals);
}
<span class="hljs-keyword">override</span> <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">onAdDisplayed</span><span class="hljs-params">(maxAd: <span class="hljs-type">MaxAd</span>)</span></span> {
InMobiSdk.PublisherSignals.putPublisherSignals(
mapOf(
<span class="hljs-string">"dir_r"</span> to maxAd.revenue,
<span class="hljs-string">"dir_nn"</span> to maxAd.networkName,
<span class="hljs-string">"dir_type"</span> to maxAd.format.label
)
)
}
<span class="hljs-keyword">func</span> <span class="hljs-title function_">onAdDisplayed</span>(<span class="hljs-keyword">_</span> <span class="hljs-params">maxAd</span>: <span class="hljs-type">MAAd</span>) {
<span class="hljs-keyword">let</span> signals: [<span class="hljs-type">String</span>: <span class="hljs-keyword">Any</span>] <span class="hljs-operator">=</span> [
<span class="hljs-string">"dir_r"</span>: maxAd.revenue,
<span class="hljs-string">"dir_nn"</span>: maxAd.networkName,
<span class="hljs-string">"dir_type"</span>: maxAd.format.label
]
<span class="hljs-type">IMSdk</span>.putPublisherSignals(signals)
}
maxAd对象在这种方法中,您可以将完整的 maxAd 对象直接传递给 SDK。SDK 会在内部提取所有必需的值,从而简化您的集成。
<span class="hljs-meta">@Override</span>
<span class="hljs-keyword">public</span> <span class="hljs-built_in">void</span> <span class="hljs-title function_">onAdDisplayed</span>(<span class="hljs-params">MaxAd maxAd</span>) {
<span class="hljs-title class_">Map</span><<span class="hljs-title class_">String</span>, <span class="hljs-title class_">Object</span>> signals = <span class="hljs-keyword">new</span> <span class="hljs-title class_">HashMap</span><>();
signals.<span class="hljs-title function_">put</span>(<span class="hljs-string">"obj_max"</span>, maxAd);
<span class="hljs-title class_">InMobiSdk</span>.<span class="hljs-property">PublisherSignals</span>.<span class="hljs-property">INSTANCE</span>.<span class="hljs-title function_">putPublisherSignals</span>(signals);
}
<span class="hljs-keyword">override</span> <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">onAdDisplayed</span><span class="hljs-params">(maxAd: <span class="hljs-type">MaxAd</span>)</span></span> {
InMobiSdk.PublisherSignals.putPublisherSignals(
mapOf(<span class="hljs-string">"obj_max"</span> to maxAd)
)
}
<span class="hljs-keyword">func</span> <span class="hljs-title function_">onAdDisplayed</span>(<span class="hljs-keyword">_</span> <span class="hljs-params">maxAd</span>: <span class="hljs-type">MAAd</span>) {
<span class="hljs-keyword">let</span> signals: [<span class="hljs-type">String</span>: <span class="hljs-keyword">Any</span>] <span class="hljs-operator">=</span> [
<span class="hljs-string">"obj_max"</span>: maxAd
]
<span class="hljs-type">IMSdk</span>.putPublisherSignals(signals)
}
在 Unity 中,您必须从广告事件中提取各个属性,并将它们添加到字典中,然后才能将其传递给 SDK。Unity 不支持传递完整的广告信息对象。
<span class="hljs-function"><span class="hljs-keyword">private</span> <span class="hljs-keyword">void</span> <span class="hljs-title">OnAdDisplayed</span>(<span class="hljs-params"><span class="hljs-built_in">string</span> adUnitId, MaxSdkBase.AdInfo adInfo</span>)</span>
{
<span class="hljs-keyword">var</span> signals = <span class="hljs-keyword">new</span> Dictionary<<span class="hljs-built_in">string</span>, <span class="hljs-built_in">object</span>>();
signals.Add(<span class="hljs-string">"dir_r"</span>, adInfo.Revenue);
signals.Add(<span class="hljs-string">"dir_nn"</span>, adInfo.NetworkName);
signals.Add(<span class="hljs-string">"dir_type"</span>, adInfo.AdFormat.ToUpper());
<span class="hljs-keyword">this</span>.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<span class="hljs-selector-class">.setGender</span>(InMobiSdk.Gender.MALE); <span class="hljs-comment">// or InMobiSdk.Gender.FEMALE </span>
InMobiSdk<span class="hljs-selector-class">.setAge</span>(age);
InMobiSdk<span class="hljs-selector-class">.setAgeGroup</span>(InMobiSdk.AgeGroup.BELOW_18); <span class="hljs-comment">// other enums: BETWEEN_18_AND_20, BETWEEN_21_AND_24, BETWEEN_25_AND_34 // BETWEEN_35_AND_5, ABOVE_55</span>
InMobiSdk<span class="hljs-selector-class">.setGender</span>(InMobiSdk.Gender.MALE) <span class="hljs-comment">// or InMobiSdk.Gender.FEMALE </span>
InMobiSdk<span class="hljs-selector-class">.setAge</span>(age)
InMobiSdk<span class="hljs-selector-class">.setAgeGroup</span>(InMobiSdk.AgeGroup.BELOW_18)
IMSdk<span class="hljs-selector-class">.setGender</span>(.female)
IMSdk<span class="hljs-selector-class">.setAge</span>(<span class="hljs-number">28</span>)
IMSdk<span class="hljs-selector-class">.setAgeGroup</span>(.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.
Support Center