Ingen beskrivning
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.

IosBanner.cs 5.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. #if UNITY_IOS
  2. using System.Runtime.InteropServices;
  3. using AOT;
  4. namespace UnityEngine.Advertisements.Platform.iOS
  5. {
  6. internal class IosBanner : INativeBanner
  7. {
  8. private static IBanner s_Banner;
  9. public bool IsLoaded
  10. {
  11. get => UnityAdsBannerIsLoaded();
  12. set {}
  13. }
  14. private static BannerLoadOptions s_BannerLoadOptions;
  15. private static BannerOptions s_BannerOptions;
  16. private static string s_PlacementId;
  17. private delegate void UnityAdsBannerShowDelegate(string placementId);
  18. private delegate void UnityAdsBannerHideDelegate(string placementId);
  19. private delegate void UnityAdsBannerClickDelegate(string placementId);
  20. private delegate void UnityAdsBannerUnloadDelegate(string placementId);
  21. private delegate void UnityAdsBannerLoadDelegate(string placementId);
  22. private delegate void UnityAdsBannerErrorDelegate(string message);
  23. [DllImport("__Internal")]
  24. private static extern void UnityAdsBannerShow(string placementId, bool showAfterLoad);
  25. [DllImport("__Internal")]
  26. private static extern void UnityAdsBannerHide(bool shouldDestroy);
  27. [DllImport("__Internal")]
  28. private static extern bool UnityAdsBannerIsLoaded();
  29. [DllImport("__Internal")]
  30. private static extern void UnityAdsBannerSetPosition(int position);
  31. [DllImport("__Internal")]
  32. private static extern void UnityAdsSetBannerShowCallback(UnityAdsBannerShowDelegate callback);
  33. [DllImport("__Internal")]
  34. private static extern void UnityAdsSetBannerHideCallback(UnityAdsBannerHideDelegate callback);
  35. [DllImport("__Internal")]
  36. private static extern void UnityAdsSetBannerClickCallback(UnityAdsBannerClickDelegate callback);
  37. [DllImport("__Internal")]
  38. private static extern void UnityAdsSetBannerErrorCallback(UnityAdsBannerErrorDelegate callback);
  39. [DllImport("__Internal")]
  40. private static extern void UnityAdsSetBannerUnloadCallback(UnityAdsBannerUnloadDelegate callback);
  41. [DllImport("__Internal")]
  42. private static extern void UnityAdsSetBannerLoadCallback(UnityAdsBannerLoadDelegate callback);
  43. [DllImport("__Internal")]
  44. private static extern void UnityBannerInitialize();
  45. [MonoPInvokeCallback(typeof(UnityAdsBannerShowDelegate))]
  46. private static void UnityAdsBannerDidShow(string placementId)
  47. {
  48. s_Banner.UnityAdsBannerDidShow(placementId, s_BannerOptions);
  49. }
  50. [MonoPInvokeCallback(typeof(UnityAdsBannerHideDelegate))]
  51. private static void UnityAdsBannerDidHide(string placementId)
  52. {
  53. s_Banner.UnityAdsBannerDidHide(placementId, s_BannerOptions);
  54. }
  55. [MonoPInvokeCallback(typeof(UnityAdsBannerClickDelegate))]
  56. private static void UnityAdsBannerClick(string placementId)
  57. {
  58. s_Banner.UnityAdsBannerClick(placementId, s_BannerOptions);
  59. }
  60. [MonoPInvokeCallback(typeof(UnityAdsBannerErrorDelegate))]
  61. private static void UnityAdsBannerDidError(string message)
  62. {
  63. s_Banner.UnityAdsBannerDidError(message, s_BannerLoadOptions);
  64. }
  65. [MonoPInvokeCallback(typeof(UnityAdsBannerUnloadDelegate))]
  66. private static void UnityAdsBannerDidUnload(string placementId)
  67. {
  68. }
  69. [MonoPInvokeCallback(typeof(UnityAdsBannerUnloadDelegate))]
  70. private static void UnityAdsBannerDidLoad(string placementId)
  71. {
  72. s_Banner.UnityAdsBannerDidLoad(placementId, s_BannerLoadOptions);
  73. s_PlacementId = placementId;
  74. }
  75. public void SetupBanner(IBanner banner)
  76. {
  77. s_Banner = banner;
  78. UnityAdsSetBannerShowCallback(UnityAdsBannerDidShow);
  79. UnityAdsSetBannerHideCallback(UnityAdsBannerDidHide);
  80. UnityAdsSetBannerClickCallback(UnityAdsBannerClick);
  81. UnityAdsSetBannerErrorCallback(UnityAdsBannerDidError);
  82. UnityAdsSetBannerUnloadCallback(UnityAdsBannerDidUnload);
  83. UnityAdsSetBannerLoadCallback(UnityAdsBannerDidLoad);
  84. UnityBannerInitialize();
  85. }
  86. public void Load(string placementId, BannerLoadOptions loadOptions)
  87. {
  88. s_BannerLoadOptions = loadOptions;
  89. if (!string.IsNullOrEmpty(s_PlacementId) && !s_PlacementId.Equals(placementId))
  90. {
  91. Hide(true);
  92. }
  93. UnityAdsBannerShow(placementId, false);
  94. }
  95. public void Show(string placementId, BannerOptions showOptions)
  96. {
  97. s_BannerOptions = showOptions;
  98. s_BannerLoadOptions = null;
  99. if (!string.IsNullOrEmpty(s_PlacementId) && !s_PlacementId.Equals(placementId))
  100. {
  101. Hide(true);
  102. }
  103. UnityAdsBannerShow(placementId, true);
  104. }
  105. public void Hide(bool destroy = false)
  106. {
  107. UnityAdsBannerHide(destroy);
  108. if (!destroy)
  109. {
  110. UnityAdsBannerDidHide(string.Empty);
  111. }
  112. }
  113. public void SetPosition(BannerPosition position)
  114. {
  115. UnityAdsBannerSetPosition((int)position);
  116. }
  117. }
  118. }
  119. #endif