forked from squaretwo/react-native-iron-source
-
Notifications
You must be signed in to change notification settings - Fork 36
Expand file tree
/
Copy pathRNIronSourceRewardedVideoModule.java
More file actions
163 lines (151 loc) · 6.7 KB
/
RNIronSourceRewardedVideoModule.java
File metadata and controls
163 lines (151 loc) · 6.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
package co.squaretwo.ironsource;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import androidx.annotation.Nullable;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.ironsource.mediationsdk.IronSource;
import com.ironsource.mediationsdk.logger.IronSourceError;
import com.ironsource.mediationsdk.model.Placement;
import com.ironsource.mediationsdk.sdk.RewardedVideoListener;
public class RNIronSourceRewardedVideoModule extends ReactContextBaseJavaModule {
private static final String TAG = "RNIronSourceRewardedVideo";
private final ReactApplicationContext reactContext;
private boolean initialized;
public RNIronSourceRewardedVideoModule(ReactApplicationContext reactContext) {
super(reactContext);
this.reactContext = reactContext;
}
@Override
public String getName() {
return TAG;
}
@ReactMethod
public void initializeRewardedVideo() {
if (!initialized) {
initialized = true;
IronSource.setRewardedVideoListener(new RewardedVideoListener() {
@Override
public void onRewardedVideoAdOpened() {
Log.d(TAG, "onRewardedVideoAdOpened() called!");
// @Deprecated "ironSourceRewardedVideoDidStart"
sendEvent("ironSourceRewardedVideoDidStart", null);
sendEvent("ironSourceRewardedVideoDidOpen", null);
}
@Override
public void onRewardedVideoAdClosed() {
Log.d(TAG, "onRewardedVideoAdClosed() called!");
sendEvent("ironSourceRewardedVideoClosedByUser", null);
}
@Override
public void onRewardedVideoAvailabilityChanged(boolean available) {
Log.d(TAG, "onRewardedVideoAvailabilityChanged() called!");
if (available) {
Log.d(TAG, "ironSourceRewardedVideoAvailable!" );
sendEvent("ironSourceRewardedVideoAvailable", null);
} else {
Log.d(TAG, "ironSourceRewardedVideoUnavailable!" );
sendEvent("ironSourceRewardedVideoUnavailable", null);
}
}
@Override
public void onRewardedVideoAdRewarded(Placement placement) {
String rewardName = placement.getRewardName();
int rewardAmount = placement.getRewardAmount();
Log.d(TAG, "onRewardedVideoAdRewarded() called! " + rewardName + " " + rewardAmount);
WritableMap map = Arguments.createMap();
map.putString("rewardName", rewardName);
map.putString("rewardAmount", String.valueOf(rewardAmount));
sendEvent("ironSourceRewardedVideoAdRewarded", map);
}
@Override
public void onRewardedVideoAdShowFailed(IronSourceError se) {
Log.d(TAG, "onRewardedVideoAdShowFailed() called!");
sendEvent("ironSourceRewardedVideoClosedByError", null);
}
@Override
public void onRewardedVideoAdClicked(Placement placement) {
Log.d(TAG, "onRewardedVideoAdClicked() called!");
}
/*
* Note: the events below are not available for
* all supported Rewarded Video Ad Networks.
* Check which events are available per Ad Network
* you choose to include in your build.
* We recommend only using events which register to
* ALL Ad Networks you include in your build.
*/
/*
* Available for: AdColony, Vungle, AppLovin, UnityAds
* Invoked when the video ad starts playing.
*/
@Override
public void onRewardedVideoAdStarted() {
Log.d(TAG, "onRewardedVideoAdStarted() called!");
sendEvent("ironSourceRewardedVideoAdStarted", null);
}
/*
* Available for: AdColony, Vungle, AppLovin, UnityAds
* Invoked when the video ad finishes playing.
*/
@Override
public void onRewardedVideoAdEnded() {
Log.d(TAG, "onRewardedVideoAdEnded() called!");
sendEvent("ironSourceRewardedVideoAdEnded", null);
}
});
}
}
@ReactMethod
public void showRewardedVideo(final String placementName) {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Log.d(TAG, "showRewardedVideo() called!!");
boolean available = IronSource.isRewardedVideoAvailable();
if (available) {
Log.d(TAG, "isRewardedVideoAvailable() = true");
IronSource.showRewardedVideo(placementName);
} else {
Log.d(TAG, "isRewardedVideoAvailable() = false");
}
}
});
}
@ReactMethod
public void isRewardedVideoPlacementCapped(final String placementName, Promise promise) {
try {
Log.d(TAG, "isRewardedVideoPlacementCapped() called!!");
promise.resolve(IronSource.isRewardedVideoPlacementCapped(placementName));
}
catch (Exception e) {
Log.d(TAG, "isRewardedVideoPlacementCapped error %s", e);
promise.reject("isRewardedVideoPlacementCapped, Error, " + e);
}
}
@ReactMethod
public void isRewardedVideoAvailable(Promise promise) {
try {
Log.d(TAG, "isRewardedVideo() called!!");
promise.resolve(IronSource.isRewardedVideoAvailable());
}
catch (Exception e) {
Log.d(TAG, "isRewardedVideo error %s", e);
promise.reject("isRewardedVideoAvailable, Error, " + e);
}
}
@ReactMethod
public void setDynamicUserId(String userId) {
IronSource.setDynamicUserId(userId);
}
private void sendEvent(String eventName, @Nullable WritableMap params) {
getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(eventName, params);
}
}