Import Rewarded Ad SDK:
import 'package:secmtp_sdk/at_index.dart';
import 'package:thinkup_sdk/at_index.dart';
If you need to issue rewards through the developer's server (some ad platforms support server-side rewards), you must pass the following parameters, which will be transparently transmitted to the developer's server after being passed in.
| Key | Type | required | Description |
|---|---|---|---|
| kATAdLoadingExtraUserIDKey | String | YES | used to identify each user |
| kATAdLoadingExtraUserDataKeywordKey | String | NO | user-defined parameters |
_loadRewardedVideo() async {
await ATRewardedManager.loadRewardedVideo(
placementID: 'your placementId',
extraMap: {
ATRewardedManager.kATAdLoadingExtraUserDataKeywordKey(): '1234',
ATRewardedManager.kATAdLoadingExtraUserIDKey(): '1234',
});
}
Use the following code to check if there is ad cache:
_hasAdReady() async {
await ATRewardedManager
.rewardedVideoReady(
placementID: 'your placementId',
).then((value) {
print('Ad video cache: $value');
});
}
entryRewardedVideoScenario(String placementID, String sceneID) async {
await ATRewardedManager.entryRewardedVideoScenario(
placementID: 'your placementId',
sceneID: 'your sceneID',
);
}
To show the rewarded video ad, simply call the display API and pass the display placement ID
_showAd() async {
await ATRewardedManager
.showRewardedVideo(
placementID: 'your placementId',
);
}
When using the scene function, display the ad through this API with parameters: Placement ID + Scene ID (Scene ID can be created via the TopOn backend)
showSceneRewardedAd() async {
await ATRewardedManager
.showSceneRewardedVideo(
sceneID: 'your sceneID',
placementID: 'your placementId',
);
}
Introduction to ATRewardResponse Properties:
RewardedStatus: Rewarded video ad status
placementID: Ad placement ID
requestMessage: Request information (error information)
extraMap: Callback Information
isDeeplinkSuccess: Whether DeepLink is successful
Refer to the sample code below:
_rewarderListen() {
ATListenerManager.rewardedVideoEventHandler.listen((value) {
switch (value.rewardStatus) {
// Ad loading failed
case RewardedStatus.rewardedVideoDidFailToLoad:
print("flutter rewardedVideoDidFailToLoad ---- placementID: ${value.placementID} ---- errStr:${value.requestMessage}");
break;
// Ad loading succeeded
case RewardedStatus.rewardedVideoDidFinishLoading:
print("flutter rewardedVideoDidFinishLoading ---- placementID: ${value.placementID}");
break;
// Ad started playing
case RewardedStatus.rewardedVideoDidStartPlaying:
print("flutter rewardedVideoDidStartPlaying ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
break;
// Ad finished playing
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 issued successfully, it is recommended to issue 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 triggered
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;
case RewardedStatus.rewardedVideoUnknown:
print("flutter rewardedVideoUnknown");
break;
}
});
}