· 6 years ago · Dec 16, 2019, 10:18 AM
1// Mintegral Script
2
3 public bool interstitialAdReady;
4
5 private bool bannerAdClicked;
6 private BannerAd bannerBottomAd;
7
8 public void Start()
9 {
10 // Sdk Initialization
11 Mintegral.initMTGSDK(AdNetwork.Mintegral.App_Id, AdNetwork.Mintegral.Api_Key);
12
13 // load Native Ad
14 InitNative(AdNetwork.Mintegral.PopupUnitId);
15
16 // load Interstitial
17 InitInterstitial();
18
19 }
20
21 private void InitNative(string unitId)
22 {
23 MTGNativeInfo[] nativeAdInfos = new MTGNativeInfo[1];
24
25 MTGTemplate[] supportedTemplates = new MTGTemplate[1];
26 supportedTemplates[0] = new MTGTemplate()
27 {
28 templateType = MTGAdTemplateType.MTGAD_TEMPLATE_BIG_IMAGE,
29 adsNum = 1 // count of Ads to be returned to a request
30 };
31
32 MTGNativeInfo info;
33 info.adUnitId = unitId;
34 info.fb_placement_id = "";
35 info.autoCacheImage = false;
36 info.adCategory = MTGAdCategory.MTGAD_CATEGORY_ALL;
37 info.supportedTemplate = supportedTemplates;
38
39 nativeAdInfos[0] = info;
40
41 Mintegral.loadNativePluginsForAdUnits(nativeAdInfos);
42 }
43
44 private void InitInterstitial()
45 {
46 MTGInterstitialInfo[] interstitialAdInfos = new MTGInterstitialInfo[1];
47
48 MTGInterstitialInfo info;
49 info.adUnitId = AdNetwork.Mintegral.InterstitialUnitId;
50 info.adCategory = MTGAdCategory.MTGAD_CATEGORY_ALL;
51
52 interstitialAdInfos[0] = info;
53
54 Mintegral.loadInterstitialPluginsForAdUnits(interstitialAdInfos);
55
56 RequestInterstitialAd();
57 }
58
59 private void OnEnable()
60 {
61 MintegralManager.onNativeLoggingImpressionEvent += onNativeLoggingImpressionEvent;
62 MintegralManager.onNativeDidClickEvent += OnNativeDidClickEvent;
63 MintegralManager.onNativeLoadedEvent += OnNativeLoadedEvent;
64
65 MintegralManager.onInterstitialLoadedEvent += OnInterstitialLoadedEvent;
66 MintegralManager.onInterstitialClickedEvent += OnInterstitialClickedEvent;
67
68 MintegralManager.onInterstitialFailedEvent += OnInterstitialFailedEvent;
69 MintegralManager.onNativeFailedEvent += OnNativeFailedEvent;
70 }
71
72 private void OnDisable()
73 {
74 MintegralManager.onInterstitialLoadedEvent -= OnInterstitialLoadedEvent;
75 MintegralManager.onNativeLoadedEvent -= OnNativeLoadedEvent;
76
77 MintegralManager.onInterstitialClickedEvent -= OnInterstitialClickedEvent;
78
79 MintegralManager.onInterstitialFailedEvent -= OnInterstitialFailedEvent;
80 MintegralManager.onNativeFailedEvent -= OnNativeFailedEvent;
81 }
82
83 private void onNativeLoggingImpressionEvent(string data)
84 {
85 // A user has been impressed with a Native Ad
86 }
87
88 private void OnNativeDidClickEvent(string data)
89 {
90 // A user has clicked a Native Ad
91 }
92
93 private void OnNativeLoadedEvent(string data)
94 {
95 MTGCampaignArrayWrapper wrapper = JsonUtility.FromJson<MTGCampaignArrayWrapper>(data);
96 MTGCampaign[] campaigns = wrapper.objects;
97
98 if (campaigns.Length > 0)
99 {
100 popupCampaign = campaigns[UnityEngine.Random.Range(0, campaigns.Length)];
101
102 if (popupCampaign != null)
103 {
104 ShowPopupAd();
105 }
106 }
107 }
108
109 public void ShowPopupAd()
110 {
111 if (popupCampaign != null && !string.IsNullOrWhiteSpace(popupCampaign.imageUrl))
112 {
113 StartCoroutine(LoadCoverImage(popupCampaign, popupAd));
114 }
115 }
116
117 private IEnumerator LoadCoverImage(MTGCampaign campaign, NativeAd nativeAd)
118 {
119 UnityWebRequest www = UnityWebRequestTexture.GetTexture(campaign.imageUrl);
120 yield return www.SendWebRequest();
121
122 Texture2D texture = DownloadHandlerTexture.GetContent(www);
123
124 if (texture != null)
125 {
126 if (CONDITION) // if can show Ad
127 {
128 // create a Rect object and place the texture in it to create a Sprite
129
130 Debug.Log(campaign.appName); // title of the Native Ad's campaign
131
132 Mintegral.registerViewNativeAd(
133 AdNetwork.Mintegral.PopupUnitId,
134 50,
135 (Screen.height / 2) - 305,
136 texture.width,
137 550,
138 popupCampaign.index);
139
140 StartCoroutine(UnRegisterView());
141 }
142 }
143 }
144
145 private IEnumerator UnRegisterView()
146 {
147 yield return new WaitUntil(() => (CONDITION) ); // Unregister the view when the Native Ad is longer showing
148
149 Mintegral.unRegisterViewNativeAd(AdNetwork.Mintegral.PopupUnitId, index);
150 }
151
152 private void OnInterstitialLoadedEvent() => interstitialAdReady = true;
153
154 private void OnInterstitialFailedEvent(string err) => interstitialAdReady = false;
155
156 private void OnNativeFailedEvent(string err)
157 {
158 Debug.Log(err);
159 }
160
161public struct Mintegral
162 {
163 #region App Id
164
165 private const string APP_ID_DEVELOPMENT = "";
166 private const string APP_ID_PRODUCTION = "";
167
168 public static string App_Id
169 {
170 get
171 {
172 switch (BuildConfig.BuildType)
173 {
174 default:
175 case BuildConfig.Type.DEVELOPMENT:
176 case BuildConfig.Type.STAGING:
177 case BuildConfig.Type.PRODUCTION_TRIAL:
178 return APP_ID_DEVELOPMENT;
179
180 case BuildConfig.Type.PRODUCTION:
181 return APP_ID_PRODUCTION;
182 }
183 }
184 }
185
186 #endregion
187
188 #region Api Key
189
190 private const string API_KEY_DEVELOPMENT = "";
191 private const string API_KEY_PRODUCTION = "";
192
193 public static string Api_Key
194 {
195 get
196 {
197 switch (BuildConfig.BuildType)
198 {
199 default:
200 case BuildConfig.Type.DEVELOPMENT:
201 case BuildConfig.Type.STAGING:
202 case BuildConfig.Type.PRODUCTION_TRIAL:
203 return API_KEY_DEVELOPMENT;
204
205 case BuildConfig.Type.PRODUCTION:
206 return API_KEY_PRODUCTION;
207 }
208 }
209 }
210
211 #endregion
212
213 #region Interstitial Unit Id
214
215 private const string INTERSTITIAL_DEVELOPMENT = "";
216 private const string INTERSTITIAL_PRODUCTION = "";
217
218 public static string InterstitialUnitId
219 {
220 get
221 {
222 switch (BuildConfig.BuildType)
223 {
224 default:
225 case BuildConfig.Type.DEVELOPMENT:
226 case BuildConfig.Type.STAGING:
227 case BuildConfig.Type.PRODUCTION_TRIAL:
228 return INTERSTITIAL_DEVELOPMENT;
229
230 case BuildConfig.Type.PRODUCTION:
231 return INTERSTITIAL_PRODUCTION;
232 }
233 }
234 }
235
236 #endregion
237
238 #region Native Popup Unit Id
239
240 private const string NATIVE_DEVELOPMENT = "";
241 private const string NATIVE_PRODUCTION = "";
242
243 public static string PopupUnitId
244 {
245 get
246 {
247 switch (BuildConfig.BuildType)
248 {
249 default:
250 case BuildConfig.Type.DEVELOPMENT:
251 case BuildConfig.Type.STAGING:
252 case BuildConfig.Type.PRODUCTION_TRIAL:
253 return NATIVE_DEVELOPMENT;
254
255 case BuildConfig.Type.PRODUCTION:
256 return NATIVE_PRODUCTION;
257 }
258 }
259 }
260
261 #endregion
262 }