123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- #import "UnityAppController.h"
- #import "Unity/UnityInterface.h"
- #import "UnityAds/UnityAds.h"
- #import <UnityAds/UADSBanner.h>
- #import "UnityAds/UADSMetaData.h"
- #import "UnityAdsUtilities.h"
- #import "UnityAdsPurchasingWrapper.h"
- #import "UnityAdsInitializationListener.h"
- #import "UnityAdsLoadListener.h"
- #import "UnityAdsShowListener.h"
- #import <UnityAds/UnityAdsFinishState.h>
- typedef void (*UnityAdsReadyCallback)(const char * placementId);
- typedef void (*UnityAdsDidErrorCallback)(long rawError, const char * message);
- typedef void (*UnityAdsDidStartCallback)(const char * placementId);
- typedef void (*UnityAdsDidFinishCallback)(const char * placementId, long rawFinishState);
- static UnityAdsReadyCallback readyCallback = NULL;
- static UnityAdsDidErrorCallback errorCallback = NULL;
- static UnityAdsDidStartCallback startCallback = NULL;
- static UnityAdsDidFinishCallback finishCallback = NULL;
- @interface UnityAdsUnityWrapperDelegate : NSObject <UnityAdsDelegate>
- @end
- @implementation UnityAdsUnityWrapperDelegate
- - (void)unityAdsReady:(NSString *)placementId {
- if(readyCallback != NULL) {
- const char * rawPlacementId = UnityAdsCopyString([placementId UTF8String]);
- readyCallback(rawPlacementId);
- free((void *)rawPlacementId);
- }
- }
- - (void)unityAdsDidError:(UnityAdsError)error withMessage:(NSString *)message {
- if(errorCallback != NULL) {
- const char * rawMessage = UnityAdsCopyString([message UTF8String]);
- errorCallback(error, rawMessage);
- free((void *)rawMessage);
- }
- }
- - (void)unityAdsDidStart:(NSString *)placementId {
- UnityPause(1);
- if(startCallback != NULL) {
- const char * rawPlacementId = UnityAdsCopyString([placementId UTF8String]);
- startCallback(rawPlacementId);
- free((void *)rawPlacementId);
- }
- }
- - (void)unityAdsDidFinish:(NSString *)placementId withFinishState:(UnityAdsFinishState)state {
- UnityPause(0);
- if(finishCallback != NULL) {
- const char * rawPlacementId = UnityAdsCopyString([placementId UTF8String]);
- finishCallback(rawPlacementId, state);
- free((void *)rawPlacementId);
- }
- }
- @end
- void UnityAdsInitialize(const char * gameId, bool testMode, bool enablePerPlacementLoad, void *listenerPtr) {
- UnityAdsInitializationListener *listener = listenerPtr ? (__bridge UnityAdsInitializationListener *)listenerPtr : nil;
- [UnityAds initialize:[NSString stringWithUTF8String:gameId] testMode:testMode enablePerPlacementLoad:enablePerPlacementLoad initializationDelegate:listener];
- InitializeUnityAdsPurchasingWrapper();
- }
- void UnityAdsLoad(const char * placementId, void *listenerPtr) {
- UnityAdsLoadListener *listener = listenerPtr ? (__bridge UnityAdsLoadListener *)listenerPtr : nil;
- [UnityAds load:[NSString stringWithUTF8String:placementId] loadDelegate:listener];
- }
- void UnityAdsShow(const char * placementId, void *listenerPtr) {
- UnityAdsShowListener *listener = listenerPtr ? (__bridge UnityAdsShowListener *)listenerPtr : nil;
- [UnityAds show:UnityGetGLViewController() placementId:NSSTRING_OR_EMPTY(placementId) showDelegate:listener];
- }
- const char *UnityAdsGetDefaultPlacementID() {
- NSString *returnedPlacementID = @"";
- id placement = NSClassFromString(@"UADSPlacement");
- if (placement) {
- SEL getPlacementSelector = NSSelectorFromString(@"getDefaultPlacement");
- if ([placement respondsToSelector:getPlacementSelector]) {
- IMP getPlacementIMP = [placement methodForSelector:getPlacementSelector];
- id (*getPlacementFunc)(void) = (void *) getPlacementIMP;
- NSString *placementString = getPlacementFunc();
- if (placementString != NULL) {
- returnedPlacementID = placementString;
- }
- }
- }
- return CStringFromNSString(returnedPlacementID);
- }
- bool UnityAdsGetDebugMode() {
- return [UnityAds getDebugMode];
- }
- void UnityAdsSetDebugMode(bool debugMode) {
- [UnityAds setDebugMode:debugMode];
- }
- bool UnityAdsIsSupported() {
- return [UnityAds isSupported];
- }
- bool UnityAdsIsReady(const char * placementId) {
- if(placementId == NULL) {
- return [UnityAds isReady];
- } else {
- return [UnityAds isReady:[NSString stringWithUTF8String:placementId]];
- }
- }
- long UnityAdsGetPlacementState(const char * placementId) {
- if(placementId == NULL) {
- return [UnityAds getPlacementState];
- } else {
- return [UnityAds getPlacementState:[NSString stringWithUTF8String:placementId]];
- }
- }
- const char * UnityAdsGetVersion() {
- return UnityAdsCopyString([[UnityAds getVersion] UTF8String]);
- }
- bool UnityAdsIsInitialized() {
- return [UnityAds isInitialized];
- }
- void UnityAdsSetMetaData(const char * category, const char * data) {
- if(category != NULL && data != NULL) {
- UADSMetaData* metaData = [[UADSMetaData alloc] initWithCategory:[NSString stringWithUTF8String:category]];
- NSDictionary* json = [NSJSONSerialization JSONObjectWithData:[[NSString stringWithUTF8String:data] dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];
- for(id key in json) {
- [metaData set:key value:[json objectForKey:key]];
- }
- [metaData commit];
- }
- }
- void UnityAdsSetReadyCallback(UnityAdsReadyCallback callback) {
- readyCallback = callback;
- }
- void UnityAdsSetDidErrorCallback(UnityAdsDidErrorCallback callback) {
- errorCallback = callback;
- }
- void UnityAdsSetDidStartCallback(UnityAdsDidStartCallback callback) {
- startCallback = callback;
- }
- void UnityAdsSetDidFinishCallback(UnityAdsDidFinishCallback callback) {
- finishCallback = callback;
- }
|