Importing the Rewarded Ad SDK:
import 'package:anythink_sdk/at_index.dart';
If you need to distribute rewards through the developer's server (some ad platforms support server-side rewards), you need to pass the following parameters. Once passed, they will be forwarded through to the developer's server.
kATAdLoadingExtraUserIDKey(): String, required, used to identify each user,
kATAdLoadingExtraUserDataKeywordKey(): String, optional, user-defined parameters.
_loadRewardedVideo() async {
ATRewardedManager.loadRewardedVideo(
placementID: 'you placementId',
extraMap: {
ATRewardedManager.kATAdLoadingExtraUserDataKeywordKey(): '1234',
ATRewardedManager.kATAdLoadingExtraUserIDKey(): '1234',
});
}
Use the following code to check if there is a cached ad:
_hasAdReady() async {
await ATRewardedManager
.rewardedVideoReady(
placementID: 'you placementId',
).then((value) {
print('Ad video cache $value');
});
}
Use the following code to get the ad status (return value type is Map). The key-value pairs are as follows:
isLoading: Whether it is loading
isReady: Whether there is a cached ad
adInfo: The highest-priority cached ad info
_checkAdStatus() async {
await ATRewardedManager
.checkRewardedVideoLoadStatus(
placementID: 'you placementId',
).then((value) {
print('Ad video status $value');
});
}
Get information about all available ads under the current ad placement
getRewardedVideoValidAds() async {
await ATRewardedManager.getRewardedVideoValidAds(
placementID: Configuration.rewarderPlacementID,)
.then((value) {
print('Rewarded video under current ad placement $value');
});
}
entryRewardedVideoScenario(String placementID, String sceneID) async {
ATRewardedManager.entryRewardedVideoScenario(
placementID: 'you placementId',
sceneID: 'you sceneID',
);
}
To display a rewarded video, simply call the show API and pass the ad placement ID.
_showAd() async {
ATRewardedManager
.showRewardedVideo(
placementID: 'you placementId',
);
}
When using the scenario feature, display the ad through this API. Parameters: Ad Placement ID + Scenario ID (the Scenario ID can be created in the Taku dashboard)
showSceneRewardedAd() async {
ATRewardedManager
.showSceneRewardedVideo(
sceneID: 'you sceneID',
placementID: 'you placementId',
);
}
ATRewardResponse property description:
RewardedStatus: Rewarded video status
placementID: placementID
requestMessage: Request info (error message)
extraMap: Callback Info
isDeeplinkSuccess: isDeeplinkSuccess
See the sample code below:
_rewarderListen() {
ATListenerManager.rewardedVideoEventHandler.listen((value) {
switch (value.rewardStatus) {
// Ad load failed
case RewardedStatus.rewardedVideoDidFailToLoad:
print("flutter rewardedVideoDidFailToLoad ---- placementID: ${value.placementID} ---- errStr:${value.requestMessage}");
break;
// Ad loaded successfully
case RewardedStatus.rewardedVideoDidFinishLoading:
print("flutter rewardedVideoDidFinishLoading ---- placementID: ${value.placementID}");
break;
// Ad playback started
case RewardedStatus.rewardedVideoDidStartPlaying:
print("flutter rewardedVideoDidStartPlaying ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
break;
// Ad playback ended
case RewardedStatus.rewardedVideoDidEndPlaying:
print("flutter rewardedVideoDidEndPlaying ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
break;
// Ad playback failed
case RewardedStatus.rewardedVideoDidFailToPlay:
print("flutter rewardedVideoDidFailToPlay ---- placementID: ${value.placementID} ---- errStr:${value.extraMap}");
break;
// Reward granted. It is recommended to distribute rewards in this callback
case RewardedStatus.rewardedVideoDidRewardSuccess:
print("flutter rewardedVideoDidRewardSuccess ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
break;
// Ad clicked
case RewardedStatus.rewardedVideoDidClick:
print("flutter rewardedVideoDidClick ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
break;
// Deeplink
case RewardedStatus.rewardedVideoDidDeepLink:
print("flutter rewardedVideoDidDeepLink ---- placementID: ${value.placementID} ---- extra:${value.extraMap} ---- isDeeplinkSuccess:${value.isDeeplinkSuccess}");
break;
// Ad closed
case RewardedStatus.rewardedVideoDidClose:
print("flutter rewardedVideoDidClose ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
break;
// Ad playback started (only for Pangle Watch Another Ad)
case RewardedStatus.rewardedVideoDidAgainStartPlaying:
print("flutter rewardedVideoDidAgainStartPlaying ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
break;
// Ad playback ended (only for Pangle Watch Another Ad)
case RewardedStatus.rewardedVideoDidAgainEndPlaying:
print("flutter rewardedVideoDidAgainEndPlaying ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
break;
// Ad playback failed (only for Pangle Watch Another Ad)
case RewardedStatus.rewardedVideoDidAgainFailToPlay:
print("flutter rewardedVideoDidAgainFailToPlay ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
break;
// Reward granted (only for Pangle Watch Another Ad)
case RewardedStatus.rewardedVideoDidAgainRewardSuccess:
print("flutter rewardedVideoDidAgainRewardSuccess ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
break;
// Ad clicked (only for Pangle Watch Another Ad)
case RewardedStatus.rewardedVideoDidAgainClick:
print("flutter rewardedVideoDidAgainClick ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
case RewardedStatus.rewardedVideoUnknown:
print("flutter rewardedVideoUnknown");
break;
}
});
}