Skip to main content

Rewarded Ads

Precautions

  • Do not execute the ad loading method in the onAdLoadFailed callback, otherwise it will cause an infinite loop.
  • Do not directly execute the ad display method in the onAdLoaded callback. The SDK has an automatic ad refill function. If showRewardVideoAd () is executed in the onAdLoaded callback, the developer will not be able to accurately control the timing of ad display.
  • Developers can refer to the rewardVideo.dart integration in the Demo

Integration steps

1、Request Ads

Map customMap = {};
Map localParams = {};
Map extraMap = TPRewardVideoManager.createRewardVideoExtraMap(
customMap: customMap,
localParams: localParams,
userId: "rewardVideo_userId",
customData: "rewardVideo_customData");

TPRewardVideoManager.loadRewardVideoAd("your unitId", extraMap: extraMap);

Parameter Description

unitId:The unitId created in the TradPlus backend
  • Developers must fill in the information correctly. For example, if there are spaces before and after the unitId setting, the ad request will fail because the configuration cannot be pulled.
extraMap:Additional parameters
  • customMap:Set Traffic Grouping Related attribute parameters
  • localParams:Set local parameters. Parameters that need to be set for individual advertising platforms.
  • userId和customData:Rewarded Video Server Reward VerificationRequired parameters. If server stimulus is not used, an empty string can be passed directly.

2、Check if ads are available

  • Developers call this method after listening to the onAdLoaded callback.
  • It is recommended that developers call this API to determine whether there are available ads before displaying ads, and then call the show method if there are ads.
  • true means there are available ads, false means there are no available ads for the time being
  • When calling rewardVideoAdReady and returns false, the sdk will request ads again, and the developer does not need to call the load method again.
bool isReady = await TPRewardVideoManager.rewardVideoAdReady("unitId");

3、Enter the Ad scene

TPRewardVideoManager.entryRewardVideoAdScenario("unitId", sceneId: "sceneId");

Parameter Description

sceneId :ad scene ID
  • Developers can create it in the TradPlus backend at the following location: Application Management - ad Scene.
  • For details on how to call, please refer to Description of the timing and purpose of calling advertising scenes
  • When entering the advertising scene, pass in the sceneId. When displaying the advertisement, you also need to pass in the sceneId, otherwise it will affect the statistics.

4、Display ads

//Enter the advertising scene
TPRewardVideoManager.entryRewardVideoAdScenario("unitId", sceneId: "sceneId");
//Display ads
TPRewardVideoManager.showRewardVideoAd("unitId",sceneId: "sceneId");

5、Listening callback

Parameter Description

Basic callback

listener = TPRewardVideoAdListener(
onAdLoaded: (adUnitId, adInfo) {
// Ad loading successful
// You cannot call the show method to display ads in this callback
// V1.1.2 callback mechanism optimization, developers will call load once to get a corresponding loaded callback, no call will result in no callback
},
onAdLoadFailed: (adUnitId, error) {
// Ad loading failed
// You cannot call the load method again to request an ad in this callback, which will result in multiple invalid requests
},
onAdImpression: (adUnitId, adInfo) {
// ad display
},
onAdShowFailed: (adUnitId, adInfo, error) {
// Ad display failed (partial ad support)
},
onAdClicked: (adUnitId, adInfo) {
//Ad clicked
},
onAdClosed: (adUnitId, adInfo) {
//Ad closed
},
oneLayerLoadFailed: (adUnitId, adInfo, error) {
// Ad source loading failed
// Do not call the load method again to request ads in this callback, which will result in multiple invalid requests
// During testing, developers can monitor this callback and obtain the reason for the failure to load each ad platform through error
},
onAdReward: (adUnitId, adInfo) {
// Reward callback
}
);

TPRewardVideoManager.setRewardVideoListener(listener!);

other callback(optional)

...
onAdStartLoad: (adUnitId, adInfo) {
// The callback returned each time the load method is called
},
onBiddingStart: (adUnitId, adInfo) {
// Bidding starts loading
},
onBiddingEnd: (adUnitId, adInfo, error) {
// Bidding loading is finished
// Configure bidding ad source to listen
// During testing, get the reason why bidding loading failed through error
},
oneLayerStartLoad: (adUnitId, adInfo) {
//Callback triggered before each layer of waterfall initiates a request to the third-party advertising source
},
oneLayerLoaded: (adUnitId, adInfo) {
// Configure multiple ad sources in the background, and each ad source will be called back once after loading successfully
},
onVideoPlayStart: (adUnitId, adInfo) {
// video start
},
onVideoPlayEnd: (adUnitId, adInfo) {
// video end
},
onAdAllLoaded: (adUnitId, isSuccess) {
// Status of the ad slot
// isSuccess returns true, indicating that an ad source has been successfully loaded for this request
// isSuccess returns false, indicating that all ad sources under the ad slot adUnitId have failed to load for this request
}
onAdIsLoading: (adUnitId) {
// New in V1.0.5
// If this callback is received after calling load, it means that the ad slot is still in the loading state and cannot trigger a new round of ad loading.
}
...

"Watch again" listener callback Kuaishou, ByteDance support (optional)

...
onPlayAgainImpression: (adUnitId, adInfo) {
// "Watch Again" Showcase
},
onPlayAgainReward: (adUnitId, adInfo) {
// "Watch Again" Reward
},
onPlayAgainClicked: (adUnitId, adInfo) {
// “Watch Again”Click
},
onPlayAgainVideoPlayStart: (adUnitId, adInfo) {
// “Watch Again”video start
},
onPlayAgainVideoPlayEnd: (adUnitId, adInfo) {
// “Watch Again”video end
}
...

Download Kuaishou, ByteDance support (optional) (only supported by Android)

...
onDownloadStart: (adUnitId, totalBytes, currBytes, fileName, appName) {
// Start download callback
// totalBytes: total file size (unit: bytes)
// currBytes: currently downloaded size (unit: bytes)
// fileName: file name
// appName: application name corresponding to the file
},
onDownloadUpdate: (adUnitId, totalBytes, currBytes, fileName, appName, progress) {
// Download progress update callback
// progress: download progress
},
onDownloadPause: (adUnitId, totalBytes, currBytes, fileName, appName) {
// Pause download callback
},
onDownloadFinish: (adUnitId, totalBytes, currBytes, fileName, appName) {
// Download completed callback
},
onDownloadFail: (adUnitId, totalBytes, currBytes, fileName, appName) {
// Download failed callback
},
onInstall: (adUnitId, totalBytes, currBytes, fileName, appName) {
//Apk installation completed callback
}
...