AppLovin Support

S2S Rewarded 回调 API

AppLovin 的服务器可以向您指定的外部服务器发送 S2S rewarded 回调。 在应用用户观看完 rewarded 广告,获得奖励资格时,服务器就会向您发送这些回调。 这样可以防止恶意用户在未完成 rewarded 广告的情况下尝试获得奖励。

简介

用户观看完通过 MAX mediation 提供的 rewarded 广告后,AppLovin 的服务器就可以向外部终端发送回调。 您可以指定接收这些请求的终端。 回调采用 HTTP 或 HTTPS GET 请求的形式。 AppLovin 会在广告播放完后立即发送这些回调,但也可能发生几分钟的延迟。 您可以使用 impression 时间戳宏,弥合 impression 与回调时间之间的延迟。

如果 5 秒后,您的终端没有做出响应,那么回调请求就会超时。 如果回调请求超时,AppLovin 会重试回调最多两次。

您可以通过在针对您的任何 rewarded Ad Unit 的 Edit Ad Unit 页面中设置 Server Side Callback URL 的值来配置这些回调。

示例

https://myrewardedserver.com/rewards?idfa={IDFA}&user_id={USER_ID}&event={EVENT_ID}&token={EVENT_TOKEN}

可用宏

您可以将下表中的任意宏加入到回调 URL。 上述示例 URL 中包含 {IDFA}{USER_ID}{EVENT_ID}{EVENT_TOKEN} 宏。 当 AppLovin 服务器向您的终端发出回调时,这些宏名称会被准确的值替换。

名称描述示例
{AD_UNIT_ID}MAX Ad Unit ID(16 位十六进制字符)9ad0816ac071552a
{AD_UNIT_NAME}Ad Unit 名称(URL 编码)My%20App%20Banners
{AMOUNT}您选择奖励用户的货币金额。您可以在每个 Ad Unit 的编辑页面中设置此项。100
{CC}用户国家/地区代码 (两个字母)gb
{CURRENCY}您选择奖励用户的货币类型(URL 编码)。您可以在每个 Ad Unit 的编辑页面中设置此项。coins
{CUSTOM_DATA}从集成传入的自定义数据 (URL 编码)。AppLovin 建议字符串的长度不要超过 8192 个字符。my%20custom%20data
{EVENT_ID}唯一事件 ID,36 位字符的 UUIDa7c3e1b2-4f59-4d8a-9c21-8e6b0f3a1d47
{EVENT_TOKEN}sha1( EVENT_ID + Your-Event-Key )e000949f6d851…a43cf31
{EVENT_TOKEN_ALL}sha256(按字母顺序排列的全部1宏,URL 解码的 + Your-Event-Key)eba615583ed59…5f218702a97a
{IDFA}iOS IDFA 或 Google Advertising ID860635ea-65bc-eaed-d355-1b5283b30b94
{IDFV}IDFV4CD1C3C4-3FD7-00F5-1635-7BC6D9387E60
{IP}用户 IP(IPv6 的值已进行 URL 编码)162.1.1.1 , fe80%3A%3A…890a%0A
{NETWORK_NAME}MAX Ad Network 名称APPLOVIN_BIDDING
{PACKAGE_NAME}应用包名 (Android) 或 Bundle ID (iOS)。URL 编码。com.test.app
{PLACEMENT}开发者定义的 MAX ad placement 名称 (URL 编码)Launch%20Screen
{PLATFORM}平台android , ios
{TS}广告加载时间的时间戳 (整数,UNIX 时间秒数)1546300800
{USER_ID}开发者定义的用户 ID (URL 编码);长度不超过 8192 个字符7634657898

1 提示:如果 EVENT_TOKEN 是您的一个宏,它将从 “按字母顺序排列的所有宏” 字符串中省略

设置 ad placement 名称

下面的代码片段展示了如何向 ad unit 添加 placement 名称。 placement 名称的值会替换 postback 请求中的 {PLACEMENT} 宏:

    ActionScript

    AppLovinMAX.setBannerPlacement(«ad-unit-ID», «placement»);
    

    Blueprint

    Ad Unit 标识符。创建 Banner:Ad Unit 标识符。Banner 位置:底部居中。设置 Banner Placement:Ad Unit 标识符,Placement:YOUR_BANNER_PLACEMENT。

    C++

    UAppLovinMAX::CreateBanner(«ad-unit-ID», «position»);
    UAppLovinMAX::SetBannerPlacement(«ad-unit-ID», «placement»);
    

    C#

    MaxSdk.CreateBanner(«ad-unit-ID», «position»);
    MaxSdk.SetBannerPlacement(«ad-unit-ID», "«placement»");
    

    Dart

    AppLovinMAX.createBanner(«ad-unit-ID», «position»);
    AppLovinMAX.setBannerPlacement(«ad-unit-ID», «placement»);
    

    GDScript

    AppLovinMAX.createBanner(«ad-unit-ID», «position»);
    AppLovinMAX.set_banner_placement(«ad-unit-ID», «placement»);
    

    Java

    adViewAd.setPlacement( "«placement»" );
    

    JavaScript (Cordova)

    AppLovinMAX.createBanner(«ad-unit-ID», «position»);
    AppLovinMAX.setBannerPlacement(«ad-unit-ID», «placement»);
    

    JavaScript (React Native)

    AppLovinMAX.createBanner(«ad-unit-ID», «position»);
    AppLovinMAX.setBannerPlacement(«ad-unit-ID», «placement»);
    

    Kotlin

    adView.setPlacement( "«placement»" )
    

    Lua

    applovin.create_banner(«ad-unit-ID», «position»)
    applovin.set_banner_placement(«ad-unit-ID», «placement»)
    

    Objective-C

    adView.placement = @"«placement»";
    [adView loadAd];
    

    Swift

    adView.placement = "«placement»"
    adView.loadAd()
    

设置内部用户 ID

下面的代码片段展示了如何使用您的内部用户 ID 来标记用户。 User ID 字符串的长度上限为 8192 个字符。

AppLovinMAX.setUserId("«user-ID»");

获取 rewarded 广告的金额和币种

要获取奖励金额 and 币种,请重写奖励回调:

private void OnRewardedAdReceivedRewardEvent(string adUnitId, MaxSdk.Reward reward, MaxSdkBase.AdInfo adInfo)
{
  print("Rewarded user: " + reward.Amount + " " + reward.Label);
}

自定义数据

以下代码片段展示了如何向 postback 添加自定义 String 数据。 该 String 数据将替换 postback 中的 {CUSTOM_DATA} 宏。 AppLovin 建议字符串不要超过 8192 个字符。

在加载 banner 广告或 MREC 广告之前,必须设置自定义数据。 否则,数据将不会出现在与广告关联的 postback 中。

    Banners & MRECs

    MaxSdk.SetBannerCustomData("«ad-unit-ID»", "«custom-data»"); // Banners
    MaxSdk.SetMRecCustomData("«ad-unit-ID»", "«custom-data»"); // MRECs
    

    Interstitials

    MaxSdk.ShowInterstitial(«adUnitIdentifier», «placement», «custom data»);
    

    Rewarded 广告

    MaxSdk.ShowRewardedAd(«adUnitIdentifier», «placement», «custom data»);
    

    Native 广告

    nativeAdLoader.setCustomData( "«custom data»" );
    

search