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. IfshowRewardVideoAd ()
is executed in theonAdLoaded
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
- adInfo:For more information, please refer to Callback Information Description。
- error:Error messages about ad request failure and ad display failure. For details, please refer to Error code and error message 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
}
...