Skip to content

Commit 2ee3ccc

Browse files
committed
Release 3.6.1
1 parent b880a2f commit 2ee3ccc

File tree

8 files changed

+36
-43
lines changed

8 files changed

+36
-43
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# CAS.AI Unity Plugin Change Log
22

3+
# [3.6.1] - 2024-05-11
4+
- Discover the latest features in native 3.6.1 SDKs for [Android](https://github.com/cleveradssolutions/CAS-Android/releases) and [iOS](https://github.com/cleveradssolutions/CAS-iOS/releases).
5+
### Bug Fixes
6+
- [iOS] Fixex Banner ads moving after full screen due to a safe area bug in Unity Engine.
7+
- [Editor] The Utils class alias has been hidden to avoid conflict with the global namespace.
8+
### New ads networks support in closed beta
9+
- StartIO
10+
311
# [3.6.0] - 2024-04-29
412
- Discover the latest features in native 3.6.0 SDKs for [Android](https://github.com/cleveradssolutions/CAS-Android/releases) and [iOS](https://github.com/cleveradssolutions/CAS-iOS/releases).
513
- [iOS] The minimum supported Xcode version has been increased to 15.1.

Editor/CASBaseDependencies.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<dependencies>
33
<androidPackages>
4-
<androidPackage spec="com.cleveradssolutions:cas-sdk:3.6.0" version="3.6.0" />
4+
<androidPackage spec="com.cleveradssolutions:cas-sdk:3.6.1" version="3.6.1" />
55
</androidPackages>
66
<iosPods>
77
<sources>
88
<source>https://github.com/cleveradssolutions/CAS-Specs.git</source>
99
</sources>
10-
<iosPod name="CleverAdsSolutions-Base" version="3.6.0" minTargetSdk="13.0" />
10+
<iosPod name="CleverAdsSolutions-Base" version="3.6.1" minTargetSdk="13.0" />
1111
</iosPods>
1212
</dependencies>

Plugins/iOS/CASUView.m

Lines changed: 22 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,17 @@ - (instancetype)initWithManager:(CASMediationManager *)manager
4242
self = [super init];
4343

4444
if (self) {
45-
UIViewController *unityVC = [CASUPluginUtil unityGLViewController];
4645
_client = adViewClient;
4746
_horizontalOffset = 0;
4847
_verticalOffset = 0;
4948
_activePos = AD_POSITION_BOTTOM_CENTER;
5049
_activeSizeId = size;
5150

5251
if (size > 0) {
53-
_bannerView = [[CASBannerView alloc] initWithAdSize:[self getSizeByCode:size with:unityVC] manager:manager];
52+
_bannerView = [[CASBannerView alloc] initWithAdSize:[self getSizeByCode:size] manager:manager];
5453
_bannerView.hidden = YES;
5554
_bannerView.adDelegate = self;
56-
_bannerView.rootViewController = unityVC;
55+
_bannerView.rootViewController = [CASUPluginUtil unityGLViewController];
5756
}
5857
}
5958

@@ -66,12 +65,12 @@ - (void)dealloc {
6665
}
6766
}
6867

69-
- (CASSize *)getSizeByCode:(int)sizeId with:(UIViewController *)controller {
68+
- (CASSize *)getSizeByCode:(int)sizeId {
7069
switch (sizeId) {
7170
case AD_SIZE_BANNER: return CASSize.banner;
7271

7372
case AD_SIZE_ADAPTIVE: {
74-
CGSize screenSize = [self getSafeBoundsView:controller.view].size;
73+
CGSize screenSize = [self getSafeAreaSize];
7574
CGFloat width = MIN(screenSize.width, CASSize.leaderboard.width);
7675
return [CASSize getAdaptiveBannerForMaxWidth:width];
7776
}
@@ -83,12 +82,12 @@ - (CASSize *)getSizeByCode:(int)sizeId with:(UIViewController *)controller {
8382
case AD_SIZE_MREC: return CASSize.mediumRectangle;
8483

8584
case AD_SIZE_FULL_WIDTH:{
86-
CGSize screenSize = [self getSafeBoundsView:controller.view].size;
85+
CGSize screenSize = [self getSafeAreaSize];
8786
return [CASSize getAdaptiveBannerForMaxWidth:screenSize.width];
8887
}
8988

9089
case AD_SIZE_LINE:{
91-
CGSize screenSize = [self getSafeBoundsView:controller.view].size;
90+
CGSize screenSize = [self getSafeAreaSize];
9291
BOOL inLandscape = screenSize.height < screenSize.width;
9392
CGFloat bannerHeight;
9493

@@ -144,8 +143,7 @@ - (void)orientationChangedNotification:(NSNotification *)notification {
144143
// Ignore changes in device orientation if unknown, face up, or face down.
145144
if (UIDeviceOrientationIsValidInterfaceOrientation([[UIDevice currentDevice] orientation])) {
146145
if (_activeSizeId == AD_SIZE_ADAPTIVE || _activeSizeId == AD_SIZE_FULL_WIDTH || _activeSizeId == AD_SIZE_LINE) {
147-
UIViewController *unityController = [CASUPluginUtil unityGLViewController];
148-
self.bannerView.adSize = [self getSizeByCode:_activeSizeId with:unityController];
146+
self.bannerView.adSize = [self getSizeByCode:_activeSizeId];
149147
}
150148

151149
[self refreshPosition];
@@ -197,45 +195,32 @@ - (void)setPositionCode:(int)code withX:(int)x withY:(int)y {
197195
[self refreshPosition];
198196
}
199197

200-
- (void)refreshPosition {
201-
if (self.bannerView && !self.bannerView.isHidden) {
202-
/// Align the bannerView in the Unity view bounds.
203-
UIView *unityView = [CASUPluginUtil unityGLViewController].view;
198+
- (CGSize)getSafeAreaSize {
199+
UIWindow *window = [UIApplication sharedApplication].keyWindow;
204200

205-
if (unityView) {
206-
[self positionView:self.bannerView inParentView:unityView];
207-
}
208-
}
201+
return window.safeAreaLayoutGuide.layoutFrame.size;
209202
}
210203

211-
- (CGRect)getSafeBoundsView:(UIView *)view {
212-
if (@available(iOS 11, *)) {
213-
CGRect safeAreaFrame = view.safeAreaLayoutGuide.layoutFrame;
214-
215-
if (!CGSizeEqualToSize(CGSizeZero, safeAreaFrame.size)) {
216-
return safeAreaFrame;
217-
}
204+
- (void)refreshPosition {
205+
if (!self.bannerView || self.bannerView.isHidden) {
206+
return;
218207
}
219208

220-
return view.bounds;
221-
}
222-
223-
- (void)positionView:(UIView *)view
224-
inParentView:(UIView *)parentView {
225-
CGRect parentBounds = [self getSafeBoundsView:parentView];
226-
CGSize adSize = view.intrinsicContentSize;
209+
UIWindow *window = [UIApplication sharedApplication].keyWindow;
210+
CGRect safeAreaFrame = window.safeAreaLayoutGuide.layoutFrame;
211+
CGSize adSize = self.bannerView.intrinsicContentSize;
227212

228213
if (CGSizeEqualToSize(CGSizeZero, adSize)) {
229214
adSize = [self.bannerView.adSize toCGSize];
230215
}
231216

232217
CGFloat verticalPos;
233-
CGFloat bottom = CGRectGetMaxY(parentBounds) - adSize.height;
218+
CGFloat bottom = CGRectGetMaxY(safeAreaFrame) - adSize.height;
234219
switch (_activePos) {
235220
case AD_POSITION_TOP_CENTER:
236221
case AD_POSITION_TOP_LEFT:
237222
case AD_POSITION_TOP_RIGHT:
238-
verticalPos = MIN(CGRectGetMinY(parentBounds) + _verticalOffset, bottom);
223+
verticalPos = MIN(CGRectGetMinY(safeAreaFrame) + _verticalOffset, bottom);
239224
break;
240225

241226
default:
@@ -244,11 +229,11 @@ - (void)positionView:(UIView *)view
244229
}
245230

246231
CGFloat horizontalPos;
247-
CGFloat right = CGRectGetMaxX(parentBounds) - adSize.width;
232+
CGFloat right = CGRectGetMaxX(safeAreaFrame) - adSize.width;
248233
switch (_activePos) {
249234
case AD_POSITION_TOP_LEFT:
250235
case AD_POSITION_BOTTOM_LEFT:
251-
horizontalPos = MIN(CGRectGetMinX(parentBounds) + _horizontalOffset, right);
236+
horizontalPos = MIN(CGRectGetMinX(safeAreaFrame) + _horizontalOffset, right);
252237
break;
253238

254239
case AD_POSITION_TOP_RIGHT:
@@ -257,11 +242,11 @@ - (void)positionView:(UIView *)view
257242
break;
258243

259244
default:
260-
horizontalPos = CGRectGetMidX(parentView.bounds) - adSize.width * 0.5;
245+
horizontalPos = CGRectGetMidX(window.bounds) - adSize.width * 0.5;
261246
break;
262247
}
263248

264-
view.frame = CGRectMake(horizontalPos, verticalPos, adSize.width, adSize.height);
249+
self.bannerView.frame = CGRectMake(horizontalPos, verticalPos, adSize.width, adSize.height);
265250

266251
extern bool _didResignActive;
267252

Runtime/CleverAdsSolutions.Common.dll

512 Bytes
Binary file not shown.

Runtime/Common/MobileAds.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public static class MobileAds
1010
/// <summary>
1111
/// CAS Unity wrapper version
1212
/// </summary>
13-
public const string wrapperVersion = "3.6.0";
13+
public const string wrapperVersion = "3.6.1";
1414

1515
/// <summary>
1616
/// Get singleton instance for configure all mediation managers.

Templates/CASAndroidMediation.list

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"version":"3.6.0","simple":[{"id":62,"name":"OptimalAds","version":"3.6.0","require":65,"filter":0,"dependency":"com.cleveradssolutions:cas:","contains":["GoogleAds","UnityAds","YandexAds","LiftoffMonetize","AppLovin","InMobi","Mintegral","Pangle","DTExchange","IronSource","Chartboost","AudienceNetwork","Bigo"],"labels":0},{"id":63,"name":"FamiliesAds","version":"3.6.0","require":65,"filter":2,"dependency":"com.cleveradssolutions:cas-families:","contains":["GoogleAds","UnityAds","IronSource","LiftoffMonetize","InMobi","Kidoz","SuperAwesome","Chartboost","DTExchange"],"labels":0}],"adapters":[{"id":13,"name":"CrossPromotion","version":"3.6.0","require":65,"filter":1,"dependency":"com.cleveradssolutions:cas-promo:","labels":7},{"id":14,"name":"IronSource","version":"7.9.0.0","require":65,"filter":1,"dependency":"com.cleveradssolutions:ironsource:","depsSDK":[{"name":"com.ironsource.sdk:mediationsdk:","version":"7.9.0","embed":false}],"source":"https://android-sdk.is.com/","labels":6},{"id":4,"name":"UnityAds","version":"4.10.0.0","require":14,"filter":1,"dependency":"com.cleveradssolutions:unity:","depsSDK":[{"name":"com.unity3d.ads:unity-ads:","version":"4.10.0","embed":false}],"labels":7},{"id":0,"name":"GoogleAds","altName":"AdMob","version":"23.0.0.0","require":14,"filter":1,"dependency":"com.cleveradssolutions:google:","depsSDK":[{"name":"com.google.android.gms:play-services-ads:","version":"23.0.0","embed":false}],"labels":7},{"id":1,"name":"LiftoffMonetize","version":"7.3.0.0","require":65,"filter":1,"dependency":"com.cleveradssolutions:vungle:","depsSDK":[{"name":"com.vungle:vungle-ads:","version":"7.3.0","embed":false}],"labels":7},{"id":10,"name":"InMobi","version":"10.6.7.0","require":65,"filter":1,"dependency":"com.cleveradssolutions:inmobi:","depsSDK":[{"name":"com.inmobi.monetization:inmobi-ads-kotlin:","version":"10.6.7","embed":false}],"labels":7},{"id":3,"name":"Chartboost","version":"9.7.0.0","require":65,"filter":1,"dependency":"com.cleveradssolutions:chartboost:","depsSDK":[{"name":"com.chartboost:chartboost-sdk:","version":"9.7.0","embed":false}],"source":"https://cboost.jfrog.io/artifactory/chartboost-ads/","labels":7},{"id":11,"name":"DTExchange","version":"8.2.6.0","require":65,"filter":1,"dependency":"com.cleveradssolutions:fyber:","depsSDK":[{"name":"com.fyber:marketplace-sdk:","version":"8.2.6","embed":false}],"labels":7},{"id":2,"name":"Kidoz","version":"9.1.1.0","require":65,"filter":1,"dependency":"com.cleveradssolutions:kidoz:","depsSDK":[{"name":"net.kidoz.sdk:kidoz-android-native:","version":"9.1.1","embed":false}],"labels":7},{"id":6,"name":"SuperAwesome","version":"9.3.2.0","require":65,"filter":1,"dependency":"com.cleveradssolutions:superawesome:","depsSDK":[{"name":"tv.superawesome.sdk.publisher:superawesome:","version":"9.3.2","embed":false}],"source":"https://aa-sdk.s3-eu-west-1.amazonaws.com/android_repo","labels":7},{"id":23,"name":"Mintegral","version":"16.6.61.0","require":65,"filter":0,"dependency":"com.cleveradssolutions:mintegral:","source":"https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea","labels":7},{"id":5,"name":"AppLovin","version":"12.3.1.0","require":65,"filter":0,"dependency":"com.cleveradssolutions:applovin:","depsSDK":[{"name":"com.applovin:applovin-sdk:","version":"12.3.1","embed":false}],"labels":7},{"id":24,"name":"Pangle","version":"5.8.1.0","require":65,"filter":0,"dependency":"com.cleveradssolutions:pangle:","depsSDK":[{"name":"com.pangle.global:ads-sdk:","version":"5.8.1.0","embed":false}],"source":"https://artifact.bytedance.com/repository/pangle","labels":7},{"id":19,"name":"Bigo","version":"4.6.1.0","require":65,"filter":0,"dependency":"com.cleveradssolutions:bigo:","depsSDK":[{"name":"com.bigossp:bigo-ads:","version":"4.6.1","embed":false}],"labels":7},{"id":15,"name":"YandexAds","version":"26.4.1.0","require":65,"filter":0,"dependency":"com.cleveradssolutions:yandex:","depsSDK":[{"name":"com.yandex.android:mobileads:","version":"6.4.1","embed":false}],"comment":"Yandex Metrica will also be added to the app","labels":7},{"id":9,"name":"AudienceNetwork","altName":"Meta","version":"6.17.0.0","require":65,"filter":0,"dependency":"com.cleveradssolutions:facebook:","depsSDK":[{"name":"com.facebook.android:audience-network-sdk:","version":"6.17.0","embed":false}],"comment":"Required implementation of `Data processing options for Users in California`","labels":7},{"id":12,"name":"MyTarget","version":"5.20.1.0","require":65,"filter":0,"dependency":"com.cleveradssolutions:mytarget:","depsSDK":[{"name":"com.my.target:mytarget-sdk:","version":"5.20.1","embed":false}],"comment":"Focused on CIS region only","labels":7},{"id":21,"name":"Madex","version":"1.2.2.0","require":65,"filter":0,"dependency":"com.cleveradssolutions:madex:","depsSDK":[{"name":"sspnet.tech:madex:","version":"1.2.2","embed":false}],"source":"https://sdkpkg.sspnet.tech","comment":"Focused on CIS region only","labels":23},{"id":16,"name":"HyprMX","version":"6.2.3.1","require":65,"filter":0,"dependency":"com.cleveradssolutions:hyprmx:","depsSDK":[{"name":"com.hyprmx.android:HyprMX-SDK:","version":"6.2.3","embed":false}],"comment":"Focused on USA region only","labels":23},{"id":18,"name":"Smaato","version":"22.0.2.1","require":65,"filter":0,"dependency":"com.cleveradssolutions:smaato:","depsSDK":[{"name":"com.smaato.android.sdk:","version":"22.0.2","embed":false}],"source":"https://s3.amazonaws.com/smaato-sdk-releases/","comment":"Support Banner only","labels":17}],"deprecated":["FacebookAN","StartApp","Fyber","FairBid","DigitalTurbine","Vungle","Tapjoy","AdColony","BidMachine"]}
1+
{"version":"3.6.1","simple":[{"id":62,"name":"OptimalAds","version":"3.6.1","require":65,"filter":0,"dependency":"com.cleveradssolutions:cas:","contains":["GoogleAds","UnityAds","YandexAds","LiftoffMonetize","AppLovin","InMobi","Mintegral","Pangle","DTExchange","IronSource","Chartboost","AudienceNetwork","Bigo"],"labels":0},{"id":63,"name":"FamiliesAds","version":"3.6.1","require":65,"filter":2,"dependency":"com.cleveradssolutions:cas-families:","contains":["GoogleAds","UnityAds","IronSource","LiftoffMonetize","InMobi","Kidoz","SuperAwesome","Chartboost","DTExchange"],"labels":0}],"adapters":[{"id":13,"name":"CrossPromotion","version":"3.6.1","require":65,"filter":1,"dependency":"com.cleveradssolutions:cas-promo:","labels":7},{"id":14,"name":"IronSource","version":"8.0.0.0","require":65,"filter":1,"dependency":"com.cleveradssolutions:ironsource:","depsSDK":[{"name":"com.ironsource.sdk:mediationsdk:","version":"8.0.0","embed":false}],"source":"https://android-sdk.is.com/","labels":6},{"id":4,"name":"UnityAds","version":"4.10.0.0","require":14,"filter":1,"dependency":"com.cleveradssolutions:unity:","depsSDK":[{"name":"com.unity3d.ads:unity-ads:","version":"4.10.0","embed":false}],"labels":7},{"id":0,"name":"GoogleAds","altName":"AdMob","version":"23.0.0.0","require":14,"filter":1,"dependency":"com.cleveradssolutions:google:","depsSDK":[{"name":"com.google.android.gms:play-services-ads:","version":"23.0.0","embed":false}],"labels":7},{"id":1,"name":"LiftoffMonetize","version":"7.3.1.0","require":65,"filter":1,"dependency":"com.cleveradssolutions:vungle:","depsSDK":[{"name":"com.vungle:vungle-ads:","version":"7.3.1","embed":false}],"labels":7},{"id":10,"name":"InMobi","version":"10.6.7.0","require":65,"filter":1,"dependency":"com.cleveradssolutions:inmobi:","depsSDK":[{"name":"com.inmobi.monetization:inmobi-ads-kotlin:","version":"10.6.7","embed":false}],"labels":7},{"id":3,"name":"Chartboost","version":"9.7.0.0","require":65,"filter":1,"dependency":"com.cleveradssolutions:chartboost:","depsSDK":[{"name":"com.chartboost:chartboost-sdk:","version":"9.7.0","embed":false}],"source":"https://cboost.jfrog.io/artifactory/chartboost-ads/","labels":7},{"id":11,"name":"DTExchange","version":"8.2.7.0","require":65,"filter":1,"dependency":"com.cleveradssolutions:fyber:","depsSDK":[{"name":"com.fyber:marketplace-sdk:","version":"8.2.7","embed":false}],"labels":7},{"id":2,"name":"Kidoz","version":"9.1.2.0","require":65,"filter":1,"dependency":"com.cleveradssolutions:kidoz:","depsSDK":[{"name":"net.kidoz.sdk:kidoz-android-native:","version":"9.1.2","embed":false}],"labels":7},{"id":6,"name":"SuperAwesome","version":"9.3.2.0","require":65,"filter":1,"dependency":"com.cleveradssolutions:superawesome:","depsSDK":[{"name":"tv.superawesome.sdk.publisher:superawesome:","version":"9.3.2","embed":false}],"source":"https://aa-sdk.s3-eu-west-1.amazonaws.com/android_repo","labels":7},{"id":23,"name":"Mintegral","version":"16.6.71.0","require":65,"filter":0,"dependency":"com.cleveradssolutions:mintegral:","source":"https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea","labels":7},{"id":5,"name":"AppLovin","version":"12.4.2.0","require":65,"filter":0,"dependency":"com.cleveradssolutions:applovin:","depsSDK":[{"name":"com.applovin:applovin-sdk:","version":"12.4.2","embed":false}],"labels":7},{"id":24,"name":"Pangle","version":"5.9.0.2","require":65,"filter":0,"dependency":"com.cleveradssolutions:pangle:","depsSDK":[{"name":"com.pangle.global:ads-sdk:","version":"5.9.0.2","embed":false}],"source":"https://artifact.bytedance.com/repository/pangle","labels":7},{"id":19,"name":"Bigo","version":"4.6.1.0","require":65,"filter":0,"dependency":"com.cleveradssolutions:bigo:","depsSDK":[{"name":"com.bigossp:bigo-ads:","version":"4.6.1","embed":false}],"labels":7},{"id":15,"name":"YandexAds","version":"27.0.0.0","require":65,"filter":0,"dependency":"com.cleveradssolutions:yandex:","depsSDK":[{"name":"com.yandex.android:mobileads:","version":"7.0.0","embed":false}],"comment":"Yandex Metrica will also be added to the app","labels":7},{"id":9,"name":"AudienceNetwork","altName":"Meta","version":"6.17.0.0","require":65,"filter":0,"dependency":"com.cleveradssolutions:facebook:","depsSDK":[{"name":"com.facebook.android:audience-network-sdk:","version":"6.17.0","embed":false}],"comment":"Required implementation of `Data processing options for Users in California`","labels":7},{"id":12,"name":"MyTarget","version":"5.20.1.0","require":65,"filter":0,"dependency":"com.cleveradssolutions:mytarget:","depsSDK":[{"name":"com.my.target:mytarget-sdk:","version":"5.20.1","embed":false}],"comment":"Focused on CIS region only","labels":7},{"id":7,"name":"StartIO","version":"4.11.5.0","require":65,"filter":0,"dependency":"com.cleveradssolutions:startio:","depsSDK":[{"name":"com.startapp:inapp-sdk:","version":"4.11.5","embed":false}],"labels":23},{"id":21,"name":"Madex","version":"1.3.3.0","require":65,"filter":0,"dependency":"com.cleveradssolutions:madex:","depsSDK":[{"name":"sspnet.tech:core:","version":"1.3.3","embed":false}],"source":"https://sdkpkg.sspnet.tech","comment":"Focused on CIS region only. Geolocation permission will also be included.","labels":23},{"id":16,"name":"HyprMX","version":"6.2.3.1","require":65,"filter":0,"dependency":"com.cleveradssolutions:hyprmx:","depsSDK":[{"name":"com.hyprmx.android:HyprMX-SDK:","version":"6.2.3","embed":false}],"comment":"Focused on USA region only","labels":23},{"id":18,"name":"Smaato","version":"22.0.2.1","require":65,"filter":0,"dependency":"com.cleveradssolutions:smaato:","depsSDK":[{"name":"com.smaato.android.sdk:","version":"22.0.2","embed":false}],"source":"https://s3.amazonaws.com/smaato-sdk-releases/","comment":"Support Banner only","labels":17}],"deprecated":["FacebookAN","StartApp","Fyber","FairBid","DigitalTurbine","Vungle","Tapjoy","AdColony","BidMachine"]}

0 commit comments

Comments
 (0)