Нема описа
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

UnityBannerUnityWrapper.m 4.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. #import <UnityAds/UADSBanner.h>
  2. #import "UnityAdsUtilities.h"
  3. typedef void (*UnityAdsBannerShowCallback)(const char* placementId);
  4. typedef void (*UnityAdsBannerHideCallback)(const char* placementId);
  5. typedef void (*UnityAdsBannerClickCallback)(const char* placementId);
  6. typedef void (*UnityAdsBannerUnloadCallback)(const char* placementId);
  7. typedef void (*UnityAdsBannerLoadCallback)(const char* placementId);
  8. typedef void (*UnityAdsBannerErrorCallback)(const char* message);
  9. static UnityAdsBannerShowCallback bannerShowCallback = NULL;
  10. static UnityAdsBannerHideCallback bannerHideCallback = NULL;
  11. static UnityAdsBannerClickCallback bannerClickCallback = NULL;
  12. static UnityAdsBannerErrorCallback bannerErrorCallback = NULL;
  13. static UnityAdsBannerLoadCallback bannerLoadCallback = NULL;
  14. static UnityAdsBannerUnloadCallback bannerUnloadCallback = NULL;
  15. static UIView* s_banner;
  16. static bool s_showAfterLoad;
  17. @interface UnityBannersUnityWrapper : NSObject<UnityAdsBannerDelegate>
  18. @end
  19. @implementation UnityBannersUnityWrapper
  20. - (void)unityAdsBannerDidError:(NSString *)message {
  21. if (bannerErrorCallback != NULL) {
  22. const char * rawMessage = UnityAdsCopyString([message UTF8String]);
  23. bannerErrorCallback(rawMessage);
  24. free((void *)rawMessage);
  25. }
  26. }
  27. - (void)unityAdsBannerDidHide:(NSString *)placementId {
  28. if (bannerHideCallback != NULL) {
  29. const char * rawPlacementId = UnityAdsCopyString([placementId UTF8String]);
  30. bannerHideCallback(rawPlacementId);
  31. free((void *)rawPlacementId);
  32. }
  33. }
  34. -(void)unityAdsBannerDidClick:(NSString *)placementId {
  35. if (bannerClickCallback != NULL) {
  36. const char * rawPlacementId = UnityAdsCopyString([placementId UTF8String]);
  37. bannerClickCallback(rawPlacementId);
  38. free((void *)rawPlacementId);
  39. }
  40. }
  41. - (void)unityAdsBannerDidShow:(NSString *)placementId {
  42. if (bannerShowCallback != NULL) {
  43. const char * rawPlacementId = UnityAdsCopyString([placementId UTF8String]);
  44. bannerShowCallback(rawPlacementId);
  45. free((void *)rawPlacementId);
  46. }
  47. }
  48. - (void)unityAdsBannerDidLoad:(NSString *)placementId view:(UIView*)view {
  49. s_banner = view;
  50. const char * rawPlacementId = UnityAdsCopyString([placementId UTF8String]);
  51. if (bannerLoadCallback != NULL) {
  52. bannerLoadCallback(rawPlacementId);
  53. free((void *)rawPlacementId);
  54. }
  55. if (s_showAfterLoad) {
  56. s_showAfterLoad = false;
  57. UIView *container = UnityGetGLViewController().view;
  58. [container addSubview:s_banner];
  59. bannerShowCallback(rawPlacementId);
  60. }
  61. }
  62. - (void)unityAdsBannerDidUnload:(NSString *)placementId {
  63. }
  64. @end
  65. void UnityAdsBannerShow(const char * placementId, bool showAfterLoad) {
  66. if (s_banner == nil) {
  67. s_showAfterLoad = showAfterLoad;
  68. if(placementId != NULL) {
  69. [UnityAdsBanner loadBanner:[NSString stringWithUTF8String:placementId]];
  70. }
  71. } else {
  72. if (s_banner.superview == nil) {
  73. UIView *container = UnityGetGLViewController().view;
  74. [container addSubview:s_banner];
  75. bannerShowCallback(placementId);
  76. }
  77. }
  78. }
  79. void UnityAdsBannerHide(bool shouldDestroy) {
  80. if (shouldDestroy) {
  81. [UnityAdsBanner destroy];
  82. s_banner = nil;
  83. } else {
  84. if (s_banner != nil && s_banner.superview != nil) {
  85. [s_banner removeFromSuperview];
  86. }
  87. }
  88. }
  89. bool UnityAdsBannerIsLoaded() {
  90. return s_banner != nil;
  91. }
  92. void UnityAdsBannerSetPosition(int position) {
  93. [UnityAdsBanner setBannerPosition:(UnityAdsBannerPosition)position];
  94. }
  95. void UnityAdsSetBannerShowCallback(UnityAdsBannerShowCallback callback) {
  96. bannerShowCallback = callback;
  97. }
  98. void UnityAdsSetBannerHideCallback(UnityAdsBannerHideCallback callback) {
  99. bannerHideCallback = callback;
  100. }
  101. void UnityAdsSetBannerClickCallback(UnityAdsBannerClickCallback callback) {
  102. bannerClickCallback = callback;
  103. }
  104. void UnityAdsSetBannerErrorCallback(UnityAdsBannerErrorCallback callback) {
  105. bannerErrorCallback = callback;
  106. }
  107. void UnityAdsSetBannerUnloadCallback(UnityAdsBannerUnloadCallback callback) {
  108. bannerUnloadCallback = callback;
  109. }
  110. void UnityAdsSetBannerLoadCallback(UnityAdsBannerLoadCallback callback) {
  111. bannerLoadCallback = callback;
  112. }
  113. void UnityBannerInitialize() {
  114. static UnityBannersUnityWrapper* delegate = nil;
  115. if (delegate == nil) {
  116. delegate = [[UnityBannersUnityWrapper alloc] init];
  117. }
  118. [UnityAdsBanner setDelegate:delegate];
  119. }