123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- //
- // UnityAdsUnityWrapper.m
- // Copyright(c) 2015 Unity Technologies. All rights reserved.
- //
- #import "UnityAdsConfig.h"
- extern "C" {
- 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);
- }
- #define DONTSTRIP __attribute__((used))
- #define EXPORT __attribute__((visibility("default")))
- #if USE_UNITYADS
- #import "UnityAppController.h"
- #import "Unity/UnityInterface.h"
- #import "UnityAds/UnityAds.h"
- #import "UnityAds/UADSMetaData.h"
- extern "C" {
- const char * UnityAdsCopyString(const char * string)
- {
- char * copy = (char*)malloc(strlen(string) + 1);
- strcpy(copy, string);
- return copy;
- }
- 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
- extern "C" {
- EXPORT DONTSTRIP void UnityAdsEngineInitialize(const char * gameId, bool testMode)
- {
- static UnityAdsUnityWrapperDelegate * unityAdsUnityWrapperDelegate = NULL;
- if (unityAdsUnityWrapperDelegate == NULL)
- {
- unityAdsUnityWrapperDelegate = [[UnityAdsUnityWrapperDelegate alloc] init];
- }
- [UnityAds initialize: [NSString stringWithUTF8String: gameId] delegate: unityAdsUnityWrapperDelegate testMode: testMode];
- }
- EXPORT DONTSTRIP void UnityAdsEngineShow(const char * placementId)
- {
- if (placementId == NULL)
- {
- [UnityAds show: UnityGetGLViewController()];
- }
- else
- {
- [UnityAds show: UnityGetGLViewController() placementId: [NSString stringWithUTF8String: placementId]];
- }
- }
- EXPORT DONTSTRIP bool UnityAdsEngineGetDebugMode()
- {
- return [UnityAds getDebugMode];
- }
- EXPORT DONTSTRIP void UnityAdsEngineSetDebugMode(bool debugMode)
- {
- [UnityAds setDebugMode: debugMode];
- }
- EXPORT DONTSTRIP bool UnityAdsEngineIsSupported()
- {
- return [UnityAds isSupported];
- }
- EXPORT DONTSTRIP bool UnityAdsEngineIsReady(const char * placementId)
- {
- if (placementId == NULL)
- {
- return [UnityAds isReady];
- }
- else
- {
- return [UnityAds isReady: [NSString stringWithUTF8String: placementId]];
- }
- }
- EXPORT DONTSTRIP long UnityAdsEngineGetPlacementState(const char * placementId)
- {
- if (placementId == NULL)
- {
- return [UnityAds getPlacementState];
- }
- else
- {
- return [UnityAds getPlacementState: [NSString stringWithUTF8String: placementId]];
- }
- }
- EXPORT DONTSTRIP const char * UnityAdsEngineGetVersion()
- {
- static const char * unityAdsVersion = NULL;
- if (unityAdsVersion == NULL)
- {
- unityAdsVersion = UnityAdsCopyString([[UnityAds getVersion] UTF8String]);
- }
- return unityAdsVersion;
- }
- EXPORT DONTSTRIP bool UnityAdsEngineIsInitialized()
- {
- return [UnityAds isInitialized];
- }
- EXPORT DONTSTRIP void UnityAdsEngineSetMetaData(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];
- }
- }
- EXPORT DONTSTRIP void UnityAdsEngineSetReadyCallback(UnityAdsReadyCallback callback)
- {
- readyCallback = callback;
- }
- EXPORT DONTSTRIP void UnityAdsEngineSetDidErrorCallback(UnityAdsDidErrorCallback callback)
- {
- errorCallback = callback;
- }
- EXPORT DONTSTRIP void UnityAdsEngineSetDidStartCallback(UnityAdsDidStartCallback callback)
- {
- startCallback = callback;
- }
- EXPORT DONTSTRIP void UnityAdsEngineSetDidFinishCallback(UnityAdsDidFinishCallback callback)
- {
- finishCallback = callback;
- }
- }
- #else
- extern "C" {
- EXPORT DONTSTRIP void UnityAdsEngineInitialize(const char * gameId, bool testMode) {}
- EXPORT DONTSTRIP void UnityAdsEngineShow(const char * placementId) {}
- EXPORT DONTSTRIP bool UnityAdsEngineGetDebugMode() { return false; }
- EXPORT DONTSTRIP void UnityAdsEngineSetDebugMode(bool debugMode) {}
- EXPORT DONTSTRIP bool UnityAdsEngineIsSupported() { return false; }
- EXPORT DONTSTRIP bool UnityAdsEngineIsReady(const char * placementId) { return false; }
- EXPORT DONTSTRIP long UnityAdsEngineGetPlacementState(const char * placementId) { return -1; }
- EXPORT DONTSTRIP const char * UnityAdsEngineGetVersion() { return NULL; }
- EXPORT DONTSTRIP bool UnityAdsEngineIsInitialized() { return false; }
- EXPORT DONTSTRIP void UnityAdsEngineSetMetaData(const char * category, const char * data) {}
- EXPORT DONTSTRIP void UnityAdsEngineSetReadyCallback(UnityAdsReadyCallback callback) {}
- EXPORT DONTSTRIP void UnityAdsEngineSetDidErrorCallback(UnityAdsDidErrorCallback callback) {}
- EXPORT DONTSTRIP void UnityAdsEngineSetDidStartCallback(UnityAdsDidStartCallback callback) {}
- EXPORT DONTSTRIP void UnityAdsEngineSetDidFinishCallback(UnityAdsDidFinishCallback callback) {}
- }
- #endif
|