UnityAdsUnityWrapper.mm 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. #import "UnityAppController.h"
  2. #import "Unity/UnityInterface.h"
  3. #import "UnityAds/UnityAds.h"
  4. #import "UnityAds/UADSMetaData.h"
  5. extern "C" {
  6. const char * UnityAdsCopyString(const char * string) {
  7. char * copy = (char *)malloc(strlen(string) + 1);
  8. strcpy(copy, string);
  9. return copy;
  10. }
  11. typedef void (*UnityAdsReadyCallback)(const char * placementId);
  12. typedef void (*UnityAdsDidErrorCallback)(long rawError, const char * message);
  13. typedef void (*UnityAdsDidStartCallback)(const char * placementId);
  14. typedef void (*UnityAdsDidFinishCallback)(const char * placementId, long rawFinishState);
  15. static UnityAdsReadyCallback readyCallback = NULL;
  16. static UnityAdsDidErrorCallback errorCallback = NULL;
  17. static UnityAdsDidStartCallback startCallback = NULL;
  18. static UnityAdsDidFinishCallback finishCallback = NULL;
  19. }
  20. @interface UnityAdsUnityWrapperDelegate : NSObject <UnityAdsDelegate>
  21. @end
  22. @implementation UnityAdsUnityWrapperDelegate
  23. - (void)unityAdsReady:(NSString *)placementId {
  24. if(readyCallback != NULL) {
  25. const char * rawPlacementId = UnityAdsCopyString([placementId UTF8String]);
  26. readyCallback(rawPlacementId);
  27. free((void *)rawPlacementId);
  28. }
  29. }
  30. - (void)unityAdsDidError:(UnityAdsError)error withMessage:(NSString *)message {
  31. if(errorCallback != NULL) {
  32. const char * rawMessage = UnityAdsCopyString([message UTF8String]);
  33. errorCallback(error, rawMessage);
  34. free((void *)rawMessage);
  35. }
  36. }
  37. - (void)unityAdsDidStart:(NSString *)placementId {
  38. UnityPause(1);
  39. if(startCallback != NULL) {
  40. const char * rawPlacementId = UnityAdsCopyString([placementId UTF8String]);
  41. startCallback(rawPlacementId);
  42. free((void *)rawPlacementId);
  43. }
  44. }
  45. - (void)unityAdsDidFinish:(NSString *)placementId withFinishState:(UnityAdsFinishState)state {
  46. UnityPause(0);
  47. if(finishCallback != NULL) {
  48. const char * rawPlacementId = UnityAdsCopyString([placementId UTF8String]);
  49. finishCallback(rawPlacementId, state);
  50. free((void *)rawPlacementId);
  51. }
  52. }
  53. @end
  54. extern "C" {
  55. void UnityAdsInitialize(const char * gameId, bool testMode) {
  56. static UnityAdsUnityWrapperDelegate * unityAdsUnityWrapperDelegate = NULL;
  57. if(unityAdsUnityWrapperDelegate == NULL) {
  58. unityAdsUnityWrapperDelegate = [[UnityAdsUnityWrapperDelegate alloc] init];
  59. }
  60. [UnityAds initialize:[NSString stringWithUTF8String:gameId] delegate:unityAdsUnityWrapperDelegate testMode:testMode];
  61. }
  62. void UnityAdsShow(const char * placementId) {
  63. if(placementId == NULL) {
  64. [UnityAds show:UnityGetGLViewController()];
  65. } else {
  66. [UnityAds show:UnityGetGLViewController() placementId:[NSString stringWithUTF8String:placementId]];
  67. }
  68. }
  69. bool UnityAdsGetDebugMode() {
  70. return [UnityAds getDebugMode];
  71. }
  72. void UnityAdsSetDebugMode(bool debugMode) {
  73. [UnityAds setDebugMode:debugMode];
  74. }
  75. bool UnityAdsIsSupported() {
  76. return [UnityAds isSupported];
  77. }
  78. bool UnityAdsIsReady(const char * placementId) {
  79. if(placementId == NULL) {
  80. return [UnityAds isReady];
  81. } else {
  82. return [UnityAds isReady:[NSString stringWithUTF8String:placementId]];
  83. }
  84. }
  85. long UnityAdsGetPlacementState(const char * placementId) {
  86. if(placementId == NULL) {
  87. return [UnityAds getPlacementState];
  88. } else {
  89. return [UnityAds getPlacementState:[NSString stringWithUTF8String:placementId]];
  90. }
  91. }
  92. const char * UnityAdsGetVersion() {
  93. return UnityAdsCopyString([[UnityAds getVersion] UTF8String]);
  94. }
  95. bool UnityAdsIsInitialized() {
  96. return [UnityAds isInitialized];
  97. }
  98. void UnityAdsSetMetaData(const char * category, const char * data) {
  99. if(category != NULL && data != NULL) {
  100. UADSMetaData* metaData = [[UADSMetaData alloc] initWithCategory:[NSString stringWithUTF8String:category]];
  101. NSDictionary* json = [NSJSONSerialization JSONObjectWithData:[[NSString stringWithUTF8String:data] dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];
  102. for(id key in json) {
  103. [metaData set:key value:[json objectForKey:key]];
  104. }
  105. [metaData commit];
  106. }
  107. }
  108. void UnityAdsSetReadyCallback(UnityAdsReadyCallback callback) {
  109. readyCallback = callback;
  110. }
  111. void UnityAdsSetDidErrorCallback(UnityAdsDidErrorCallback callback) {
  112. errorCallback = callback;
  113. }
  114. void UnityAdsSetDidStartCallback(UnityAdsDidStartCallback callback) {
  115. startCallback = callback;
  116. }
  117. void UnityAdsSetDidFinishCallback(UnityAdsDidFinishCallback callback) {
  118. finishCallback = callback;
  119. }
  120. }