react-native-applovin-max 8.1.1 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +14 -3
- package/android/src/main/java/com/applovin/reactnative/AppLovinMAXAdView.java +33 -26
- package/android/src/main/java/com/applovin/reactnative/AppLovinMAXAdViewManagerImpl.java +110 -0
- package/android/src/main/java/com/applovin/reactnative/AppLovinMAXAdViewUiComponent.java +17 -15
- package/android/src/main/java/com/applovin/reactnative/{AppLovinMAXModule.java → AppLovinMAXModuleImpl.java} +115 -179
- package/android/src/main/java/com/applovin/reactnative/AppLovinMAXNativeAdView.java +84 -56
- package/android/src/main/java/com/applovin/reactnative/AppLovinMAXNativeAdViewManagerImpl.java +101 -0
- package/android/src/main/java/com/applovin/reactnative/AppLovinMAXPackage.java +44 -11
- package/android/src/main/java/com/applovin/reactnative/AppLovinMAXUtils.java +56 -0
- package/android/src/newarch/com/applovin/reactnative/AppLovinMAXAdViewManager.java +151 -0
- package/android/src/newarch/com/applovin/reactnative/AppLovinMAXModule.java +453 -0
- package/android/src/newarch/com/applovin/reactnative/AppLovinMAXNativeAdViewManager.java +130 -0
- package/android/src/oldarch/com/applovin/reactnative/AppLovinMAXAdViewManager.java +128 -0
- package/android/src/oldarch/com/applovin/reactnative/AppLovinMAXModule.java +453 -0
- package/android/src/oldarch/com/applovin/reactnative/AppLovinMAXNativeAdViewManager.java +93 -0
- package/ios/AppLovinMAX.h +8 -8
- package/ios/{AppLovinMAX.m → AppLovinMAX.mm} +73 -64
- package/ios/AppLovinMAXAdView.h +7 -2
- package/ios/AppLovinMAXAdView.mm +747 -0
- package/ios/{AppLovinMAXAdViewManager.m → AppLovinMAXAdViewManager.mm} +3 -2
- package/ios/{AppLovinMAXAdViewUIComponent.m → AppLovinMAXAdViewUIComponent.mm} +2 -1
- package/ios/AppLovinMAXNativeAdView.h +15 -4
- package/ios/AppLovinMAXNativeAdView.mm +745 -0
- package/ios/AppLovinMAXNativeAdViewManager.mm +116 -0
- package/lib/commonjs/AdView.js +67 -85
- package/lib/commonjs/AdView.js.map +1 -1
- package/lib/commonjs/AppLovinMAX.js +51 -10
- package/lib/commonjs/AppLovinMAX.js.map +1 -1
- package/lib/commonjs/AppOpenAd.js +8 -10
- package/lib/commonjs/AppOpenAd.js.map +1 -1
- package/lib/commonjs/BannerAd.js +19 -21
- package/lib/commonjs/BannerAd.js.map +1 -1
- package/lib/commonjs/ErrorCode.js +57 -5
- package/lib/commonjs/ErrorCode.js.map +1 -1
- package/lib/commonjs/EventEmitter.js +3 -5
- package/lib/commonjs/EventEmitter.js.map +1 -1
- package/lib/commonjs/InterstitialAd.js +8 -10
- package/lib/commonjs/InterstitialAd.js.map +1 -1
- package/lib/commonjs/MRecAd.js +14 -16
- package/lib/commonjs/MRecAd.js.map +1 -1
- package/lib/commonjs/Privacy.js +3 -5
- package/lib/commonjs/Privacy.js.map +1 -1
- package/lib/commonjs/RewardedAd.js +8 -10
- package/lib/commonjs/RewardedAd.js.map +1 -1
- package/lib/commonjs/Utils.js +25 -0
- package/lib/commonjs/Utils.js.map +1 -0
- package/lib/commonjs/nativeAd/NativeAdView.js +65 -42
- package/lib/commonjs/nativeAd/NativeAdView.js.map +1 -1
- package/lib/commonjs/nativeAd/NativeAdViewComponents.js +51 -47
- package/lib/commonjs/nativeAd/NativeAdViewComponents.js.map +1 -1
- package/lib/commonjs/nativeAd/NativeAdViewProvider.js +38 -8
- package/lib/commonjs/nativeAd/NativeAdViewProvider.js.map +1 -1
- package/lib/commonjs/nativeAd/img/blank_icon.png +0 -0
- package/lib/commonjs/specs/AppLovinMAXAdViewNativeComponent.js +14 -0
- package/lib/commonjs/specs/AppLovinMAXAdViewNativeComponent.js.map +1 -0
- package/lib/commonjs/specs/AppLovinMAXNativeAdViewNativeComponent.js +14 -0
- package/lib/commonjs/specs/AppLovinMAXNativeAdViewNativeComponent.js.map +1 -0
- package/lib/commonjs/specs/NativeAppLovinMAXModule.js +9 -0
- package/lib/commonjs/specs/NativeAppLovinMAXModule.js.map +1 -0
- package/lib/commonjs/types/AdInfo.js +10 -3
- package/lib/commonjs/types/AdInfo.js.map +1 -1
- package/lib/module/AdView.js +62 -81
- package/lib/module/AdView.js.map +1 -1
- package/lib/module/AppLovinMAX.js +47 -7
- package/lib/module/AppLovinMAX.js.map +1 -1
- package/lib/module/AppOpenAd.js +1 -4
- package/lib/module/AppOpenAd.js.map +1 -1
- package/lib/module/BannerAd.js +1 -4
- package/lib/module/BannerAd.js.map +1 -1
- package/lib/module/ErrorCode.js +55 -4
- package/lib/module/ErrorCode.js.map +1 -1
- package/lib/module/EventEmitter.js +2 -4
- package/lib/module/EventEmitter.js.map +1 -1
- package/lib/module/InterstitialAd.js +2 -5
- package/lib/module/InterstitialAd.js.map +1 -1
- package/lib/module/MRecAd.js +1 -4
- package/lib/module/MRecAd.js.map +1 -1
- package/lib/module/Privacy.js +1 -4
- package/lib/module/Privacy.js.map +1 -1
- package/lib/module/RewardedAd.js +2 -5
- package/lib/module/RewardedAd.js.map +1 -1
- package/lib/module/Utils.js +17 -0
- package/lib/module/Utils.js.map +1 -0
- package/lib/module/nativeAd/NativeAdView.js +63 -40
- package/lib/module/nativeAd/NativeAdView.js.map +1 -1
- package/lib/module/nativeAd/NativeAdViewComponents.js +53 -49
- package/lib/module/nativeAd/NativeAdViewComponents.js.map +1 -1
- package/lib/module/nativeAd/NativeAdViewProvider.js +39 -9
- package/lib/module/nativeAd/NativeAdViewProvider.js.map +1 -1
- package/lib/module/nativeAd/img/blank_icon.png +0 -0
- package/lib/module/specs/AppLovinMAXAdViewNativeComponent.js +7 -0
- package/lib/module/specs/AppLovinMAXAdViewNativeComponent.js.map +1 -0
- package/lib/module/specs/AppLovinMAXNativeAdViewNativeComponent.js +7 -0
- package/lib/module/specs/AppLovinMAXNativeAdViewNativeComponent.js.map +1 -0
- package/lib/module/specs/NativeAppLovinMAXModule.js +3 -0
- package/lib/module/specs/NativeAppLovinMAXModule.js.map +1 -0
- package/lib/module/types/AdInfo.js +10 -4
- package/lib/module/types/AdInfo.js.map +1 -1
- package/lib/typescript/src/AdView.d.ts +16 -16
- package/lib/typescript/src/AdView.d.ts.map +1 -1
- package/lib/typescript/src/AppLovinMAX.d.ts.map +1 -1
- package/lib/typescript/src/AppOpenAd.d.ts.map +1 -1
- package/lib/typescript/src/BannerAd.d.ts.map +1 -1
- package/lib/typescript/src/ErrorCode.d.ts.map +1 -1
- package/lib/typescript/src/EventEmitter.d.ts.map +1 -1
- package/lib/typescript/src/InterstitialAd.d.ts.map +1 -1
- package/lib/typescript/src/MRecAd.d.ts.map +1 -1
- package/lib/typescript/src/Privacy.d.ts.map +1 -1
- package/lib/typescript/src/RewardedAd.d.ts.map +1 -1
- package/lib/typescript/src/Utils.d.ts +16 -0
- package/lib/typescript/src/Utils.d.ts.map +1 -0
- package/lib/typescript/src/nativeAd/NativeAdView.d.ts.map +1 -1
- package/lib/typescript/src/nativeAd/NativeAdViewComponents.d.ts +1 -1
- package/lib/typescript/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -1
- package/lib/typescript/src/nativeAd/NativeAdViewProvider.d.ts +14 -5
- package/lib/typescript/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -1
- package/lib/typescript/src/specs/AppLovinMAXAdViewNativeComponent.d.ts +86 -0
- package/lib/typescript/src/specs/AppLovinMAXAdViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/specs/AppLovinMAXNativeAdViewNativeComponent.d.ts +80 -0
- package/lib/typescript/src/specs/AppLovinMAXNativeAdViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativeAppLovinMAXModule.d.ts +132 -0
- package/lib/typescript/src/specs/NativeAppLovinMAXModule.d.ts.map +1 -0
- package/lib/typescript/src/types/AdEvent.d.ts +2 -2
- package/lib/typescript/src/types/AdEvent.d.ts.map +1 -1
- package/lib/typescript/src/types/AdInfo.d.ts +24 -25
- package/lib/typescript/src/types/AdInfo.d.ts.map +1 -1
- package/lib/typescript/src/types/AdProps.d.ts +4 -4
- package/lib/typescript/src/types/AdProps.d.ts.map +1 -1
- package/lib/typescript/src/types/FullscreenAd.d.ts +4 -4
- package/lib/typescript/src/types/FullscreenAd.d.ts.map +1 -1
- package/lib/typescript/src/types/NativeAd.d.ts +4 -0
- package/lib/typescript/src/types/NativeAd.d.ts.map +1 -1
- package/lib/typescript/src/types/ViewAd.d.ts +4 -4
- package/lib/typescript/src/types/ViewAd.d.ts.map +1 -1
- package/package.json +9 -1
- package/react-native-applovin-max.podspec +3 -3
- package/src/AdView.tsx +56 -121
- package/src/AppLovinMAX.ts +7 -8
- package/src/AppOpenAd.ts +3 -5
- package/src/BannerAd.ts +3 -5
- package/src/ErrorCode.ts +1 -3
- package/src/EventEmitter.ts +2 -3
- package/src/InterstitialAd.ts +4 -6
- package/src/MRecAd.ts +3 -5
- package/src/Privacy.ts +1 -3
- package/src/RewardedAd.ts +4 -6
- package/src/Utils.ts +26 -0
- package/src/nativeAd/NativeAdView.tsx +65 -65
- package/src/nativeAd/NativeAdViewComponents.tsx +32 -60
- package/src/nativeAd/NativeAdViewProvider.tsx +37 -12
- package/src/nativeAd/img/blank_icon.png +0 -0
- package/src/specs/AppLovinMAXAdViewNativeComponent.ts +96 -0
- package/src/specs/AppLovinMAXNativeAdViewNativeComponent.ts +89 -0
- package/src/specs/NativeAppLovinMAXModule.ts +208 -0
- package/src/types/AdEvent.ts +2 -2
- package/src/types/AdInfo.ts +28 -28
- package/src/types/AdProps.ts +4 -4
- package/src/types/FullscreenAd.ts +4 -4
- package/src/types/NativeAd.ts +5 -0
- package/src/types/ViewAd.ts +4 -4
- package/android/src/main/java/com/applovin/reactnative/AppLovinMAXAdViewManager.java +0 -149
- package/android/src/main/java/com/applovin/reactnative/AppLovinMAXNativeAdViewManager.java +0 -163
- package/ios/AppLovinMAXAdView.m +0 -323
- package/ios/AppLovinMAXNativeAdView.m +0 -432
- package/ios/AppLovinMAXNativeAdViewManager.m +0 -64
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
package com.applovin.reactnative;
|
|
2
|
-
|
|
3
|
-
import com.facebook.react.bridge.ReadableArray;
|
|
4
|
-
import com.facebook.react.bridge.ReadableMap;
|
|
5
|
-
import com.facebook.react.common.MapBuilder;
|
|
6
|
-
import com.facebook.react.uimanager.ThemedReactContext;
|
|
7
|
-
import com.facebook.react.uimanager.ViewGroupManager;
|
|
8
|
-
import com.facebook.react.uimanager.annotations.ReactProp;
|
|
9
|
-
|
|
10
|
-
import java.util.Map;
|
|
11
|
-
|
|
12
|
-
import androidx.annotation.NonNull;
|
|
13
|
-
import androidx.annotation.Nullable;
|
|
14
|
-
|
|
15
|
-
public class AppLovinMAXNativeAdViewManager
|
|
16
|
-
extends ViewGroupManager<AppLovinMAXNativeAdView>
|
|
17
|
-
{
|
|
18
|
-
public static final String REACT_CLASS = "AppLovinMAXNativeAdView";
|
|
19
|
-
|
|
20
|
-
public final int COMMAND_LOAD_AD = 1;
|
|
21
|
-
|
|
22
|
-
public AppLovinMAXNativeAdViewManager() { }
|
|
23
|
-
|
|
24
|
-
@NonNull
|
|
25
|
-
@Override
|
|
26
|
-
protected AppLovinMAXNativeAdView createViewInstance(@NonNull final ThemedReactContext reactContext)
|
|
27
|
-
{
|
|
28
|
-
return new AppLovinMAXNativeAdView( reactContext );
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
@NonNull
|
|
32
|
-
@Override
|
|
33
|
-
public String getName()
|
|
34
|
-
{
|
|
35
|
-
return REACT_CLASS;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/// Callback to JavaScript
|
|
39
|
-
|
|
40
|
-
@Nullable
|
|
41
|
-
@Override
|
|
42
|
-
public Map<String, Object> getExportedCustomDirectEventTypeConstants()
|
|
43
|
-
{
|
|
44
|
-
// mapping Android events to JavaScript events
|
|
45
|
-
return MapBuilder.<String, Object>builder()
|
|
46
|
-
.put( AppLovinMAXAdEvents.ON_AD_LOADED_EVENT, MapBuilder.of( "registrationName", AppLovinMAXAdEvents.ON_AD_LOADED_EVENT ) )
|
|
47
|
-
.put( AppLovinMAXAdEvents.ON_AD_LOAD_FAILED_EVENT, MapBuilder.of( "registrationName", AppLovinMAXAdEvents.ON_AD_LOAD_FAILED_EVENT ) )
|
|
48
|
-
.put( AppLovinMAXAdEvents.ON_AD_CLICKED_EVENT, MapBuilder.of( "registrationName", AppLovinMAXAdEvents.ON_AD_CLICKED_EVENT ) )
|
|
49
|
-
.put( AppLovinMAXAdEvents.ON_AD_REVENUE_PAID_EVENT, MapBuilder.of( "registrationName", AppLovinMAXAdEvents.ON_AD_REVENUE_PAID_EVENT ) )
|
|
50
|
-
.build();
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/// Call from JavaScript
|
|
54
|
-
|
|
55
|
-
@Nullable
|
|
56
|
-
@Override
|
|
57
|
-
public Map<String, Integer> getCommandsMap()
|
|
58
|
-
{
|
|
59
|
-
return MapBuilder.of(
|
|
60
|
-
"loadAd", COMMAND_LOAD_AD
|
|
61
|
-
);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// NOTE: the method is deprecated but the new version won't work
|
|
65
|
-
@Override
|
|
66
|
-
public void receiveCommand(@NonNull final AppLovinMAXNativeAdView root, final int commandId, @Nullable final ReadableArray args)
|
|
67
|
-
{
|
|
68
|
-
if ( commandId == COMMAND_LOAD_AD )
|
|
69
|
-
{
|
|
70
|
-
root.loadAd();
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/// Property Setters
|
|
75
|
-
|
|
76
|
-
@ReactProp(name = "adUnitId")
|
|
77
|
-
public void setAdUnitId(final AppLovinMAXNativeAdView view, final String value)
|
|
78
|
-
{
|
|
79
|
-
view.setAdUnitId( value );
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
@ReactProp(name = "placement")
|
|
83
|
-
public void setPlacement(final AppLovinMAXNativeAdView view, @Nullable final String value)
|
|
84
|
-
{
|
|
85
|
-
view.setPlacement( value );
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
@ReactProp(name = "customData")
|
|
89
|
-
public void setCustomData(final AppLovinMAXNativeAdView view, @Nullable final String value)
|
|
90
|
-
{
|
|
91
|
-
view.setCustomData( value );
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
@ReactProp(name = "extraParameters")
|
|
95
|
-
public void setExtraParameters(final AppLovinMAXNativeAdView view, @Nullable final ReadableMap value)
|
|
96
|
-
{
|
|
97
|
-
view.setExtraParameters( value );
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
@ReactProp(name = "localExtraParameters")
|
|
101
|
-
public void setLocalExtraParameters(final AppLovinMAXNativeAdView view, @Nullable final ReadableMap value)
|
|
102
|
-
{
|
|
103
|
-
view.setLocalExtraParameters( value );
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
@ReactProp(name = "titleView")
|
|
107
|
-
public void setTitleView(final AppLovinMAXNativeAdView view, final int value)
|
|
108
|
-
{
|
|
109
|
-
view.setTitleView( value );
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
@ReactProp(name = "advertiserView")
|
|
113
|
-
public void setAdvertiserView(final AppLovinMAXNativeAdView view, final int value)
|
|
114
|
-
{
|
|
115
|
-
view.setAdvertiserView( value );
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
@ReactProp(name = "bodyView")
|
|
119
|
-
public void setBodyView(final AppLovinMAXNativeAdView view, final int value)
|
|
120
|
-
{
|
|
121
|
-
view.setBodyView( value );
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
@ReactProp(name = "callToActionView")
|
|
125
|
-
public void setCallToActionView(final AppLovinMAXNativeAdView view, final int value)
|
|
126
|
-
{
|
|
127
|
-
view.setCallToActionView( value );
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
@ReactProp(name = "iconView")
|
|
131
|
-
public void setIconView(final AppLovinMAXNativeAdView view, final int value)
|
|
132
|
-
{
|
|
133
|
-
view.setIconView( value );
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
@ReactProp(name = "optionsView")
|
|
137
|
-
public void setOptionsView(final AppLovinMAXNativeAdView view, final int value)
|
|
138
|
-
{
|
|
139
|
-
view.setOptionsView( value );
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
@ReactProp(name = "mediaView")
|
|
143
|
-
public void setMediaView(final AppLovinMAXNativeAdView view, final int value)
|
|
144
|
-
{
|
|
145
|
-
view.setMediaView( value );
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
@Override
|
|
149
|
-
public void onAfterUpdateTransaction(@NonNull final AppLovinMAXNativeAdView view)
|
|
150
|
-
{
|
|
151
|
-
super.onAfterUpdateTransaction( view );
|
|
152
|
-
|
|
153
|
-
view.onSetProps();
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
@Override
|
|
157
|
-
public void onDropViewInstance(@NonNull final AppLovinMAXNativeAdView view)
|
|
158
|
-
{
|
|
159
|
-
view.destroy();
|
|
160
|
-
|
|
161
|
-
super.onDropViewInstance( view );
|
|
162
|
-
}
|
|
163
|
-
}
|
package/ios/AppLovinMAXAdView.m
DELETED
|
@@ -1,323 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// AppLovinMAXAdView.m
|
|
3
|
-
// AppLovin MAX React Native Module
|
|
4
|
-
//
|
|
5
|
-
// Copyright © 2022 AppLovin. All rights reserved.
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
#import <AppLovinSDK/AppLovinSDK.h>
|
|
9
|
-
#import "AppLovinMAX.h"
|
|
10
|
-
#import "AppLovinMAXAdView.h"
|
|
11
|
-
#import "AppLovinMAXAdViewUIComponent.h"
|
|
12
|
-
|
|
13
|
-
@interface AppLovinMAXAdView()
|
|
14
|
-
|
|
15
|
-
@property (nonatomic, strong, nullable) AppLovinMAXAdViewUIComponent *uiComponent; // nil when unmounted
|
|
16
|
-
|
|
17
|
-
// The following properties are updated from RN layer via the view manager
|
|
18
|
-
@property (nonatomic, copy) NSString *adUnitId;
|
|
19
|
-
@property (nonatomic, weak) MAAdFormat *adFormat;
|
|
20
|
-
@property (nonatomic, copy) NSNumber *adViewId;
|
|
21
|
-
@property (nonatomic, copy, nullable) NSString *placement;
|
|
22
|
-
@property (nonatomic, copy, nullable) NSString *customData;
|
|
23
|
-
@property (nonatomic, assign, readonly, getter=isAdaptiveBannerEnabled) BOOL adaptiveBannerEnabled;
|
|
24
|
-
@property (nonatomic, assign, readonly, getter=isAutoRefreshEnabled) BOOL autoRefresh;
|
|
25
|
-
@property (nonatomic, assign, readonly, getter=isLoadOnMount) BOOL loadOnMount;
|
|
26
|
-
@property (nonatomic, copy, nullable) NSDictionary<NSString *, id> *extraParameters;
|
|
27
|
-
@property (nonatomic, copy, nullable) NSDictionary<NSString *, id> *localExtraParameters;
|
|
28
|
-
|
|
29
|
-
@end
|
|
30
|
-
|
|
31
|
-
@implementation AppLovinMAXAdView
|
|
32
|
-
|
|
33
|
-
static NSMutableDictionary<NSNumber *, AppLovinMAXAdViewUIComponent *> *uiComponentInstances;
|
|
34
|
-
static NSMutableDictionary<NSNumber *, AppLovinMAXAdViewUIComponent *> *preloadedUIComponentInstances;
|
|
35
|
-
|
|
36
|
-
+ (void)initialize
|
|
37
|
-
{
|
|
38
|
-
[super initialize];
|
|
39
|
-
uiComponentInstances = [NSMutableDictionary dictionaryWithCapacity: 2];
|
|
40
|
-
preloadedUIComponentInstances = [NSMutableDictionary dictionaryWithCapacity: 2];
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
// Returns an MAAdView to support Amazon integrations. This method returns the first instance that
|
|
45
|
-
// matches the Ad Unit ID, consistent with the behavior introduced when this feature was first
|
|
46
|
-
// implemented.
|
|
47
|
-
+ (nullable MAAdView *)sharedWithAdUnitIdentifier:(NSString *)adUnitIdentifier
|
|
48
|
-
{
|
|
49
|
-
for ( id key in preloadedUIComponentInstances )
|
|
50
|
-
{
|
|
51
|
-
AppLovinMAXAdViewUIComponent *uiComponent = preloadedUIComponentInstances[key];
|
|
52
|
-
if ( [uiComponent.adUnitIdentifier isEqualToString: adUnitIdentifier] )
|
|
53
|
-
{
|
|
54
|
-
return uiComponent.adView;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
for ( id key in uiComponentInstances )
|
|
59
|
-
{
|
|
60
|
-
AppLovinMAXAdViewUIComponent *uiComponent = uiComponentInstances[key];
|
|
61
|
-
if ( [uiComponent.adUnitIdentifier isEqualToString: adUnitIdentifier] )
|
|
62
|
-
{
|
|
63
|
-
return uiComponent.adView;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
return nil;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
+ (BOOL)hasPreloadedAdViewForIdentifier:(NSNumber *)adViewId
|
|
71
|
-
{
|
|
72
|
-
return preloadedUIComponentInstances[adViewId];
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
+ (void)preloadNativeUIComponentAdView:(NSString *)adUnitIdentifier
|
|
76
|
-
adFormat:(MAAdFormat *)adFormat
|
|
77
|
-
placement:(nullable NSString *)placement
|
|
78
|
-
customData:(nullable NSString *)customData
|
|
79
|
-
extraParameters:(nullable NSDictionary<NSString *, id> *)extraParameters
|
|
80
|
-
localExtraParameters:(nullable NSDictionary<NSString *, id> *)localExtraParameters
|
|
81
|
-
withPromiseResolver:(RCTPromiseResolveBlock)resolve
|
|
82
|
-
withPromiseRejecter:(RCTPromiseRejectBlock)reject
|
|
83
|
-
{
|
|
84
|
-
AppLovinMAXAdViewUIComponent *preloadedUIComponent = [[AppLovinMAXAdViewUIComponent alloc] initWithAdUnitIdentifier: adUnitIdentifier adFormat: adFormat];
|
|
85
|
-
preloadedUIComponentInstances[@(preloadedUIComponent.hash)] = preloadedUIComponent;
|
|
86
|
-
|
|
87
|
-
preloadedUIComponent.placement = placement;
|
|
88
|
-
preloadedUIComponent.customData = customData;
|
|
89
|
-
preloadedUIComponent.extraParameters = extraParameters;
|
|
90
|
-
preloadedUIComponent.localExtraParameters = localExtraParameters;
|
|
91
|
-
|
|
92
|
-
[preloadedUIComponent loadAd];
|
|
93
|
-
|
|
94
|
-
resolve(@(preloadedUIComponent.hash));
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
+ (void)destroyNativeUIComponentAdView:(NSNumber *)adViewId
|
|
98
|
-
withPromiseResolver:(RCTPromiseResolveBlock)resolve
|
|
99
|
-
withPromiseRejecter:(RCTPromiseRejectBlock)reject
|
|
100
|
-
{
|
|
101
|
-
AppLovinMAXAdViewUIComponent *preloadedUIComponent = preloadedUIComponentInstances[adViewId];
|
|
102
|
-
if ( !preloadedUIComponent )
|
|
103
|
-
{
|
|
104
|
-
reject(RCTErrorUnspecified, @"No preloaded AdView found to destroy", nil);
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
if ( [preloadedUIComponent hasContainerView] )
|
|
109
|
-
{
|
|
110
|
-
reject(RCTErrorUnspecified, @"Cannot destroy - the preloaded AdView is currently in use", nil);
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
[preloadedUIComponentInstances removeObjectForKey: adViewId];
|
|
115
|
-
|
|
116
|
-
[preloadedUIComponent detachAdView];
|
|
117
|
-
[preloadedUIComponent destroy];
|
|
118
|
-
|
|
119
|
-
resolve(nil);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
- (void)setAdUnitId:(NSString *)adUnitId
|
|
123
|
-
{
|
|
124
|
-
// Ad Unit ID must be set prior to creating MAAdView
|
|
125
|
-
if ( self.uiComponent )
|
|
126
|
-
{
|
|
127
|
-
[[AppLovinMAX shared] log: @"Attempting to set Ad Unit ID %@ after the native UI component is created", adUnitId];
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
_adUnitId = adUnitId;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
- (void)setAdFormat:(NSString *)adFormat
|
|
135
|
-
{
|
|
136
|
-
// Ad format must be set prior to creating MAAdView
|
|
137
|
-
if ( self.uiComponent )
|
|
138
|
-
{
|
|
139
|
-
[[AppLovinMAX shared] log: @"Attempting to set ad format %@ after the native UI component is created", adFormat];
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
if ( [MAAdFormat.banner.label isEqualToString: adFormat] )
|
|
144
|
-
{
|
|
145
|
-
_adFormat = DEVICE_SPECIFIC_ADVIEW_AD_FORMAT;
|
|
146
|
-
}
|
|
147
|
-
else if ( [MAAdFormat.mrec.label isEqualToString: adFormat] )
|
|
148
|
-
{
|
|
149
|
-
_adFormat = MAAdFormat.mrec;
|
|
150
|
-
}
|
|
151
|
-
else
|
|
152
|
-
{
|
|
153
|
-
[[AppLovinMAX shared] log: @"Attempting to set an invalid ad format of \"%@\" for %@", adFormat, self.adUnitId];
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
- (void)setAdViewId:(NSNumber *)adViewId
|
|
158
|
-
{
|
|
159
|
-
_adViewId = adViewId;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
- (void)setPlacement:(NSString *)placement
|
|
163
|
-
{
|
|
164
|
-
_placement = placement;
|
|
165
|
-
|
|
166
|
-
if ( self.uiComponent )
|
|
167
|
-
{
|
|
168
|
-
self.uiComponent.placement = placement;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
- (void)setCustomData:(NSString *)customData
|
|
173
|
-
{
|
|
174
|
-
_customData = customData;
|
|
175
|
-
|
|
176
|
-
if ( self.uiComponent )
|
|
177
|
-
{
|
|
178
|
-
self.uiComponent.customData = customData;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
- (void)setAdaptiveBannerEnabled:(BOOL)adaptiveBannerEnabled
|
|
183
|
-
{
|
|
184
|
-
_adaptiveBannerEnabled = adaptiveBannerEnabled;
|
|
185
|
-
|
|
186
|
-
if ( self.uiComponent )
|
|
187
|
-
{
|
|
188
|
-
self.uiComponent.adaptiveBannerEnabled = adaptiveBannerEnabled;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
- (void)setAutoRefresh:(BOOL)autoRefresh
|
|
193
|
-
{
|
|
194
|
-
_autoRefresh = autoRefresh;
|
|
195
|
-
|
|
196
|
-
if ( self.uiComponent )
|
|
197
|
-
{
|
|
198
|
-
self.uiComponent.autoRefreshEnabled = autoRefresh;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
- (void)setLoadOnMount:(BOOL)loadOnMount
|
|
203
|
-
{
|
|
204
|
-
_loadOnMount = loadOnMount;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
// Invoked after all the JavaScript properties are set when mounting AdView
|
|
208
|
-
- (void)didSetProps:(NSArray<NSString *> *)changedProps
|
|
209
|
-
{
|
|
210
|
-
[self attachAdViewIfNeeded];
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
- (void)attachAdViewIfNeeded
|
|
214
|
-
{
|
|
215
|
-
// Re-assign in case of race condition
|
|
216
|
-
NSString *adUnitId = self.adUnitId;
|
|
217
|
-
MAAdFormat *adFormat = self.adFormat;
|
|
218
|
-
|
|
219
|
-
dispatch_async(dispatch_get_main_queue(), ^{
|
|
220
|
-
|
|
221
|
-
if ( ![AppLovinMAX shared].sdk )
|
|
222
|
-
{
|
|
223
|
-
[[AppLovinMAX shared] logUninitializedAccessError: @"AppLovinMAXAdView.attachAdViewIfNeeded"];
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
if ( ![adUnitId al_isValidString] )
|
|
228
|
-
{
|
|
229
|
-
[[AppLovinMAX shared] log: @"Attempting to attach a native UI component without Ad Unit ID"];
|
|
230
|
-
return;
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
if ( !adFormat )
|
|
234
|
-
{
|
|
235
|
-
[[AppLovinMAX shared] log: @"Attempting to attach a native UI component without ad format"];
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
if ( self.uiComponent )
|
|
240
|
-
{
|
|
241
|
-
[[AppLovinMAX shared] log: @"Attempting to re-attach with existing AdView (%@) for Ad Unit ID %@", @(self.uiComponent.hash), self.adUnitId];
|
|
242
|
-
return;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
self.uiComponent = preloadedUIComponentInstances[self.adViewId];
|
|
246
|
-
if ( self.uiComponent )
|
|
247
|
-
{
|
|
248
|
-
// Attach the preloaded uiComponent if possible, otherwise create a new one for the same adUnitId
|
|
249
|
-
if ( ![self.uiComponent hasContainerView] )
|
|
250
|
-
{
|
|
251
|
-
[[AppLovinMAX shared] log: @"Mounting the preloaded AdView (%@) for Ad Unit ID %@", self.adViewId, self.adUnitId];
|
|
252
|
-
|
|
253
|
-
self.uiComponent.adaptiveBannerEnabled = [self isAdaptiveBannerEnabled];
|
|
254
|
-
self.uiComponent.autoRefreshEnabled = [self isAutoRefreshEnabled];
|
|
255
|
-
[self.uiComponent attachAdView: self];
|
|
256
|
-
return;
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
self.uiComponent = [[AppLovinMAXAdViewUIComponent alloc] initWithAdUnitIdentifier: adUnitId adFormat: adFormat];
|
|
261
|
-
self.adViewId = @(self.uiComponent.hash);
|
|
262
|
-
uiComponentInstances[self.adViewId] = self.uiComponent;
|
|
263
|
-
|
|
264
|
-
[[AppLovinMAX shared] log: @"Mounting a new AdView (%@) for Ad Unit ID %@", self.adViewId, self.adUnitId];
|
|
265
|
-
|
|
266
|
-
self.uiComponent.placement = self.placement;
|
|
267
|
-
self.uiComponent.customData = self.customData;
|
|
268
|
-
self.uiComponent.extraParameters = self.extraParameters;
|
|
269
|
-
self.uiComponent.localExtraParameters = self.localExtraParameters;
|
|
270
|
-
self.uiComponent.adaptiveBannerEnabled = [self isAdaptiveBannerEnabled];
|
|
271
|
-
self.uiComponent.autoRefreshEnabled = [self isAutoRefreshEnabled];
|
|
272
|
-
|
|
273
|
-
[self.uiComponent attachAdView: self];
|
|
274
|
-
|
|
275
|
-
if ( [self isLoadOnMount] )
|
|
276
|
-
{
|
|
277
|
-
[self.uiComponent loadAd];
|
|
278
|
-
}
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
- (void)loadAd
|
|
283
|
-
{
|
|
284
|
-
if ( !self.uiComponent )
|
|
285
|
-
{
|
|
286
|
-
[[AppLovinMAX shared] log: @"Attempting to load uninitialized native UI component for %@", self.adUnitId];
|
|
287
|
-
return;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
[self.uiComponent loadAd];
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
- (void)didMoveToWindow
|
|
294
|
-
{
|
|
295
|
-
[super didMoveToWindow];
|
|
296
|
-
|
|
297
|
-
// This view is unmounted
|
|
298
|
-
if ( !self.window && !self.superview )
|
|
299
|
-
{
|
|
300
|
-
if ( self.uiComponent )
|
|
301
|
-
{
|
|
302
|
-
[self.uiComponent detachAdView];
|
|
303
|
-
|
|
304
|
-
AppLovinMAXAdViewUIComponent *preloadedUIComponent = preloadedUIComponentInstances[self.adViewId];
|
|
305
|
-
|
|
306
|
-
if ( self.uiComponent == preloadedUIComponent )
|
|
307
|
-
{
|
|
308
|
-
[[AppLovinMAX shared] log: @"Unmounting the preloaded AdView (%@) for Ad Unit ID %@", self.adViewId, self.adUnitId];
|
|
309
|
-
|
|
310
|
-
self.uiComponent.autoRefreshEnabled = NO;
|
|
311
|
-
}
|
|
312
|
-
else
|
|
313
|
-
{
|
|
314
|
-
[[AppLovinMAX shared] log: @"Unmounting the AdView (%@) to destroy for Ad Unit ID %@", self.adViewId, self.adUnitId];
|
|
315
|
-
|
|
316
|
-
[uiComponentInstances removeObjectForKey: self.adViewId];
|
|
317
|
-
[self.uiComponent destroy];
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
@end
|