123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- #import <UnityAds/UADSBanner.h>
- #import "UnityAdsUtilities.h"
-
- typedef void (*UnityAdsBannerShowCallback)(const char* placementId);
- typedef void (*UnityAdsBannerHideCallback)(const char* placementId);
- typedef void (*UnityAdsBannerClickCallback)(const char* placementId);
- typedef void (*UnityAdsBannerUnloadCallback)(const char* placementId);
- typedef void (*UnityAdsBannerLoadCallback)(const char* placementId);
- typedef void (*UnityAdsBannerErrorCallback)(const char* message);
-
- static UnityAdsBannerShowCallback bannerShowCallback = NULL;
- static UnityAdsBannerHideCallback bannerHideCallback = NULL;
- static UnityAdsBannerClickCallback bannerClickCallback = NULL;
- static UnityAdsBannerErrorCallback bannerErrorCallback = NULL;
- static UnityAdsBannerLoadCallback bannerLoadCallback = NULL;
- static UnityAdsBannerUnloadCallback bannerUnloadCallback = NULL;
-
- static UIView* s_banner;
- static bool s_showAfterLoad;
-
- @interface UnityBannersUnityWrapper : NSObject<UnityAdsBannerDelegate>
- @end
-
- @implementation UnityBannersUnityWrapper
- - (void)unityAdsBannerDidError:(NSString *)message {
- if (bannerErrorCallback != NULL) {
- const char * rawMessage = UnityAdsCopyString([message UTF8String]);
- bannerErrorCallback(rawMessage);
- free((void *)rawMessage);
- }
- }
-
- - (void)unityAdsBannerDidHide:(NSString *)placementId {
- if (bannerHideCallback != NULL) {
- const char * rawPlacementId = UnityAdsCopyString([placementId UTF8String]);
- bannerHideCallback(rawPlacementId);
- free((void *)rawPlacementId);
- }
- }
-
- -(void)unityAdsBannerDidClick:(NSString *)placementId {
- if (bannerClickCallback != NULL) {
- const char * rawPlacementId = UnityAdsCopyString([placementId UTF8String]);
- bannerClickCallback(rawPlacementId);
- free((void *)rawPlacementId);
- }
- }
-
- - (void)unityAdsBannerDidShow:(NSString *)placementId {
- if (bannerShowCallback != NULL) {
- const char * rawPlacementId = UnityAdsCopyString([placementId UTF8String]);
- bannerShowCallback(rawPlacementId);
- free((void *)rawPlacementId);
- }
- }
-
- - (void)unityAdsBannerDidLoad:(NSString *)placementId view:(UIView*)view {
- s_banner = view;
- const char * rawPlacementId = UnityAdsCopyString([placementId UTF8String]);
- if (bannerLoadCallback != NULL) {
- bannerLoadCallback(rawPlacementId);
- free((void *)rawPlacementId);
- }
- if (s_showAfterLoad) {
- s_showAfterLoad = false;
- UIView *container = UnityGetGLViewController().view;
- [container addSubview:s_banner];
- bannerShowCallback(rawPlacementId);
- }
- }
-
- - (void)unityAdsBannerDidUnload:(NSString *)placementId {
- }
- @end
-
- void UnityAdsBannerShow(const char * placementId, bool showAfterLoad) {
- if (s_banner == nil) {
- s_showAfterLoad = showAfterLoad;
- if(placementId != NULL) {
- [UnityAdsBanner loadBanner:[NSString stringWithUTF8String:placementId]];
- }
- } else {
- if (s_banner.superview == nil) {
- UIView *container = UnityGetGLViewController().view;
- [container addSubview:s_banner];
- bannerShowCallback(placementId);
- }
- }
- }
-
- void UnityAdsBannerHide(bool shouldDestroy) {
- if (shouldDestroy) {
- [UnityAdsBanner destroy];
- s_banner = nil;
- } else {
- if (s_banner != nil && s_banner.superview != nil) {
- [s_banner removeFromSuperview];
- }
- }
- }
-
- bool UnityAdsBannerIsLoaded() {
- return s_banner != nil;
- }
-
- void UnityAdsBannerSetPosition(int position) {
- [UnityAdsBanner setBannerPosition:(UnityAdsBannerPosition)position];
- }
-
- void UnityAdsSetBannerShowCallback(UnityAdsBannerShowCallback callback) {
- bannerShowCallback = callback;
- }
-
- void UnityAdsSetBannerHideCallback(UnityAdsBannerHideCallback callback) {
- bannerHideCallback = callback;
- }
-
- void UnityAdsSetBannerClickCallback(UnityAdsBannerClickCallback callback) {
- bannerClickCallback = callback;
- }
-
- void UnityAdsSetBannerErrorCallback(UnityAdsBannerErrorCallback callback) {
- bannerErrorCallback = callback;
- }
- void UnityAdsSetBannerUnloadCallback(UnityAdsBannerUnloadCallback callback) {
- bannerUnloadCallback = callback;
- }
- void UnityAdsSetBannerLoadCallback(UnityAdsBannerLoadCallback callback) {
- bannerLoadCallback = callback;
- }
-
- void UnityBannerInitialize() {
- static UnityBannersUnityWrapper* delegate = nil;
- if (delegate == nil) {
- delegate = [[UnityBannersUnityWrapper alloc] init];
- }
- [UnityAdsBanner setDelegate:delegate];
- }
|