-
-
Notifications
You must be signed in to change notification settings - Fork 72
/
AdmobView.java
225 lines (202 loc) · 7.4 KB
/
AdmobView.java
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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
/**
* Copyright (c) 2011 by Studio Classics. All Rights Reserved.
* Copyright (c) 2017-present by Axway Appcelerator. All Rights Reserved.
* Author: Brian Kurzius, Axway Appcelerator
* Licensed under the terms of the Apache Public License
* Please see the LICENSE included with this distribution for details.
*/
package ti.admob;
import android.os.Bundle;
import com.google.ads.mediation.admob.AdMobAdapter;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.mediation.admob.AdMobExtras;
import org.appcelerator.kroll.KrollDict;
import org.appcelerator.kroll.common.Log;
import org.appcelerator.titanium.proxy.TiViewProxy;
import org.appcelerator.titanium.view.TiUIView;
public class AdmobView extends TiUIView
{
private static final String TAG = "AdMobView";
private AdView adView;
AdmobSizeProxy prop_adSize = AdmobSizeEnum.BANNER.getAdmobSizeProxy();
String prop_adUnitId;
// Put these in extras bundle of load
Boolean prop_debugEnabled = false;
int prop_top;
int prop_left;
int prop_right;
String prop_color_bg;
String prop_color_bg_top;
String prop_color_border;
String prop_color_text;
String prop_color_link;
String prop_color_url;
// -------------------------------------
Bundle extras;
public AdmobView(final TiViewProxy proxy)
{
super(proxy);
}
private void createAdView()
{
Log.d(TAG, "createAdView()");
adView = new AdView(proxy.getActivity());
adView.setAdUnitId(prop_adUnitId);
adView.setAdSize(prop_adSize.getAdSize());
// set the listener
adView.setAdListener(new CommonAdListener(proxy, TAG));
adView.setPadding(prop_left, prop_top, prop_right, 0);
// Add the AdView to your view hierarchy.
// The view will have no size until the ad is loaded.
setNativeView(adView);
loadAd(prop_debugEnabled, null);
}
//Deprecated in 5.0.0. Should be remove in 6.0.0
private void loadAd(final Boolean testing, Bundle extrasBundle)
{
proxy.getActivity().runOnUiThread(new Runnable() {
public void run()
{
final AdRequest.Builder adRequestBuilder = new AdRequest.Builder();
Log.d(TAG, "requestAd(Boolean testing) -- testing:" + testing);
if (testing) {
//adRequestBuilder.addTestDevice(AdRequest.DEVICE_ID_EMULATOR);
}
Bundle bundle = createAdRequestProperties();
if (bundle.size() > 0) {
Log.d(TAG, "extras.size() > 0 -- set ad properties");
adRequestBuilder.addNetworkExtras(new AdMobExtras(bundle));
}
adView.loadAd(adRequestBuilder.build());
}
});
}
public void nativeLoadAd(final KrollDict options)
{
proxy.getActivity().runOnUiThread(new Runnable() {
public void run()
{
final AdRequest.Builder adRequestBuilder = AdmobModule.createRequestBuilderWithOptions(options);
adView.loadAd(adRequestBuilder.build());
}
});
}
@Override
public void processProperties(KrollDict d)
{
super.processProperties(d);
if (d.containsKey(AdmobModule.PROPERTY_AD_UNIT_ID)) {
prop_adUnitId = d.getString(AdmobModule.PROPERTY_AD_UNIT_ID);
}
if (d.containsKey(AdmobModule.PROPERTY_AD_SIZE)) {
//KrollDict prop = d.getKrollDict(AdmobModule.PROPERTY_AD_SIZE);
prop_adSize = AdmobSizeEnum.fromModuleConst(d.getInt(AdmobModule.PROPERTY_AD_SIZE)).getAdmobSizeProxy();
}
if (d.containsKey(AdmobModule.PROPERTY_DEBUG_ENABLED)) {
warnForDeprecatedProperty(AdmobModule.PROPERTY_DEBUG_ENABLED);
prop_debugEnabled = d.getBoolean(AdmobModule.PROPERTY_DEBUG_ENABLED);
}
if (d.containsKey(AdmobModule.PROPERTY_COLOR_BG)) {
warnForDeprecatedProperty(AdmobModule.PROPERTY_COLOR_BG);
Log.d(TAG, "has PROPERTY_COLOR_BG: " + d.getString(AdmobModule.PROPERTY_COLOR_BG));
prop_color_bg = AdmobModule.convertColorProp(d.getString(AdmobModule.PROPERTY_COLOR_BG));
}
if (d.containsKey(AdmobModule.PROPERTY_COLOR_BG_TOP)) {
warnForDeprecatedProperty(AdmobModule.PROPERTY_COLOR_BG_TOP);
Log.d(TAG, "has PROPERTY_COLOR_BG_TOP: " + d.getString(AdmobModule.PROPERTY_COLOR_BG_TOP));
prop_color_bg_top = AdmobModule.convertColorProp(d.getString(AdmobModule.PROPERTY_COLOR_BG_TOP));
}
if (d.containsKey(AdmobModule.PROPERTY_COLOR_BORDER)) {
warnForDeprecatedProperty(AdmobModule.PROPERTY_COLOR_BORDER);
Log.d(TAG, "has PROPERTY_COLOR_BORDER: " + d.getString(AdmobModule.PROPERTY_COLOR_BORDER));
prop_color_border = AdmobModule.convertColorProp(d.getString(AdmobModule.PROPERTY_COLOR_BORDER));
}
if (d.containsKey(AdmobModule.PROPERTY_COLOR_TEXT)) {
warnForDeprecatedProperty(AdmobModule.PROPERTY_COLOR_TEXT);
Log.d(TAG, "has PROPERTY_COLOR_TEXT: " + d.getString(AdmobModule.PROPERTY_COLOR_TEXT));
prop_color_text = AdmobModule.convertColorProp(d.getString(AdmobModule.PROPERTY_COLOR_TEXT));
}
if (d.containsKey(AdmobModule.PROPERTY_COLOR_LINK)) {
warnForDeprecatedProperty(AdmobModule.PROPERTY_COLOR_LINK);
Log.d(TAG, "has PROPERTY_COLOR_LINK: " + d.getString(AdmobModule.PROPERTY_COLOR_LINK));
prop_color_link = AdmobModule.convertColorProp(d.getString(AdmobModule.PROPERTY_COLOR_LINK));
}
if (d.containsKey(AdmobModule.PROPERTY_COLOR_URL)) {
warnForDeprecatedProperty(AdmobModule.PROPERTY_COLOR_URL);
Log.d(TAG, "has PROPERTY_COLOR_URL: " + d.getString(AdmobModule.PROPERTY_COLOR_URL));
prop_color_url = AdmobModule.convertColorProp(d.getString(AdmobModule.PROPERTY_COLOR_URL));
}
// now create the adView
this.createAdView();
}
private void warnForDeprecatedProperty(String property)
{
Log.w(TAG, "You are using " + property
+ " which is deprecated. Instead use the <extras> parameter in load() method.");
}
public void pause()
{
Log.d(TAG, "pause");
adView.pause();
}
public void resume()
{
Log.d(TAG, "resume");
adView.resume();
}
public void destroy()
{
Log.d(TAG, "destroy");
adView.destroy();
}
// pass the method the TESTING flag
// Deprecated in 5.0.0. Should be removed in 6.0.0
// Use nativeLoadAd() instead.
public void requestAd(KrollDict parameters)
{
Log.d(TAG, "requestAd()");
if (parameters != null) {
// Pass additional extras if existing
if (parameters.containsKeyAndNotNull("extras")) {
extras = AdmobModule.mapToBundle(parameters.getKrollDict("extras"));
}
}
loadAd(prop_debugEnabled, null);
}
// pass true to requestAd(Boolean testing) -- this overrides how the module was set
// Deprecated in 5.0.0. Should be removed in 6.0.0.
// Use the test parameter for nativeLoadAd() options instead.
public void requestTestAd()
{
Log.d(TAG, "requestTestAd()");
loadAd(true, null);
}
// helper methods
// http://code.google.com/mobile/ads/docs/bestpractices.html#adcolors
// Deprecated in 5.0.0. Should be removed in the next major version.
// Use createAdRequestExtrasBundleFromDictionary() instead.
private Bundle createAdRequestProperties()
{
Bundle bundle = new Bundle();
if (prop_color_bg != null) {
Log.d(TAG, "color_bg: " + prop_color_bg);
bundle.putString("color_bg", prop_color_bg);
}
if (prop_color_bg_top != null)
bundle.putString("color_bg_top", prop_color_bg_top);
if (prop_color_border != null)
bundle.putString("color_border", prop_color_border);
if (prop_color_text != null)
bundle.putString("color_text", prop_color_text);
if (prop_color_link != null)
bundle.putString("color_link", prop_color_link);
if (prop_color_url != null)
bundle.putString("color_url", prop_color_url);
if (extras != null)
bundle.putAll(extras);
return bundle;
}
}