141 lines
5.2 KiB
Objective-C
141 lines
5.2 KiB
Objective-C
#if defined(__has_include) && __has_include("UnityAppController.h")
|
|
#import "UnityAppController.h"
|
|
#else
|
|
#import "EmptyUnityAppController.h"
|
|
#endif
|
|
|
|
#import <Foundation/Foundation.h>
|
|
#import "AppodealUnityMrecView.h"
|
|
|
|
#define BANNER_X_POSITION_SMART -1
|
|
#define BANNER_X_POSITION_CENTER -2
|
|
#define BANNER_X_POSITION_RIGHT -3
|
|
#define BANNER_X_POSITION_LEFT -4
|
|
#define BANNER_Y_POSITION_BOTTOM 8
|
|
#define BANNER_Y_POSITION_TOP 16
|
|
|
|
@implementation AppodealUnityMrecView
|
|
|
|
+ (instancetype)sharedInstance {
|
|
static AppodealUnityMrecView *sharedInstance;
|
|
static dispatch_once_t onceToken;
|
|
dispatch_once(&onceToken, ^{
|
|
sharedInstance = [[self alloc] init];
|
|
});
|
|
return sharedInstance;
|
|
}
|
|
|
|
UIViewController* RootViewControllerUnityMrec() {
|
|
return ((UnityAppController *)[UIApplication sharedApplication].delegate).rootViewController;
|
|
}
|
|
|
|
- (id)init {
|
|
self = [super init];
|
|
if(self) {
|
|
self.mrecView = [[APDMRECView alloc] init];
|
|
self.mrecView.frame = CGRectMake(0, 0, 300, 250);
|
|
self.mrecView.usesSmartSizing = NO;
|
|
self.onScreen = NO;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (void)setSharedMrecFrame:(CGFloat)XAxis YAxis:(CGFloat)YAxis {
|
|
UIViewAutoresizing mask = UIViewAutoresizingNone;
|
|
|
|
UIView *superView = RootViewControllerUnityMrec().view;
|
|
CGSize superviewSize = RootViewControllerUnityMrec().view.bounds.size;
|
|
CGFloat screenScale = [[UIScreen mainScreen] scale];
|
|
|
|
CGFloat mrecHeight = self.mrecView.frame.size.height;
|
|
CGFloat mrecWidth = self.mrecView.frame.size.width;
|
|
|
|
CGFloat xOffset = .0f;
|
|
CGFloat yOffset = .0f;
|
|
// Calculate X offset
|
|
if (XAxis == BANNER_X_POSITION_LEFT) { // Left
|
|
mask |= UIViewAutoresizingFlexibleRightMargin;
|
|
} else if (XAxis == BANNER_X_POSITION_RIGHT) { // Right
|
|
mask |= UIViewAutoresizingFlexibleLeftMargin;
|
|
xOffset = superviewSize.width - mrecWidth;
|
|
} else if (XAxis == BANNER_X_POSITION_CENTER) { // Center
|
|
xOffset = (superviewSize.width - mrecWidth) / 2;
|
|
mask |= UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin;
|
|
} else if (XAxis / screenScale > superviewSize.width - mrecWidth) { // User defined offset more than screen width
|
|
NSLog(@"[Appodeal Banner view][error] Banner view x offset cannot be more than Screen width - actual banner width");
|
|
xOffset = superviewSize.width - mrecWidth;
|
|
mask |= UIViewAutoresizingFlexibleLeftMargin;
|
|
} else if (XAxis < -4) {
|
|
NSLog(@"[Appodeal Banner view][error] Banner view x offset cannot be less than 0");
|
|
xOffset = 0;
|
|
} else {
|
|
mask |= UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin;
|
|
xOffset = XAxis / screenScale;
|
|
}
|
|
|
|
//Calculate Y offset
|
|
if (YAxis == BANNER_Y_POSITION_TOP) {
|
|
mask |= UIViewAutoresizingFlexibleBottomMargin;
|
|
if (@available(iOS 11.0, *)) {
|
|
yOffset = superView.safeAreaInsets.top;
|
|
}
|
|
} else if (YAxis == BANNER_Y_POSITION_BOTTOM) {
|
|
mask |= UIViewAutoresizingFlexibleTopMargin;
|
|
if (@available(iOS 11.0, *)) {
|
|
yOffset = superviewSize.height - mrecHeight - superView.safeAreaInsets.bottom;
|
|
}
|
|
else {
|
|
yOffset = superviewSize.height - mrecHeight;
|
|
}
|
|
} else if (YAxis / screenScale > superviewSize.height - mrecHeight) { // User defined offset more than banner width
|
|
NSLog(@"[Appodeal Banner view][error] Banner view y offset cannot be more than Screen height - actual banner height");
|
|
yOffset = superviewSize.height - mrecHeight;
|
|
mask |= UIViewAutoresizingFlexibleTopMargin;
|
|
} else if (YAxis < -2) {
|
|
NSLog(@"[Appodeal Banner view][error] Banner view y offset cannot be less than 0");
|
|
yOffset = 0;
|
|
} else if (YAxis == .0f) { // All good
|
|
mask |= UIViewAutoresizingFlexibleBottomMargin;
|
|
} else {
|
|
yOffset = YAxis / screenScale;
|
|
mask |= UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
|
|
}
|
|
|
|
NSLog(@"Creating banner frame with parameters: xOffset = %f, yOffset = %f", xOffset, yOffset);
|
|
CGRect mrecRect = CGRectMake(xOffset, yOffset, mrecWidth, mrecHeight);
|
|
[self.mrecView setAutoresizingMask:mask];
|
|
[self.mrecView setFrame:mrecRect];
|
|
[self.mrecView layoutSubviews];
|
|
}
|
|
|
|
- (void)showMrecView:(UIViewController*)rootViewController
|
|
XAxis:(CGFloat)XAxis
|
|
YAxis:(CGFloat)YAxis
|
|
placement:(NSString*)placement {
|
|
[self.mrecView removeFromSuperview];
|
|
self.mrecView.rootViewController = rootViewController;
|
|
self.mrecView.placement = placement;
|
|
[rootViewController.view addSubview:self.mrecView];
|
|
[rootViewController.view bringSubviewToFront:self.mrecView];
|
|
[self setSharedMrecFrame:XAxis YAxis:YAxis];
|
|
[self setupTouchProcessing];
|
|
self.onScreen = YES;
|
|
[self.mrecView loadAd];
|
|
}
|
|
|
|
- (void)hideMrecView {
|
|
if (self.mrecView) {
|
|
[self.mrecView removeFromSuperview];
|
|
self.onScreen = NO;
|
|
}
|
|
}
|
|
|
|
- (void)setupTouchProcessing {
|
|
if (self.mrecView) {
|
|
UnityDropViewTouchProcessing(self.mrecView);
|
|
UnitySetViewTouchProcessing(self.mrecView, touchesTransformedToUnityViewCoords);
|
|
}
|
|
}
|
|
|
|
@end
|