IosNativePromoAdapter.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #if UNITY_IOS
  2. using System;
  3. using System.Runtime.InteropServices;
  4. namespace UnityEngine.Monetization
  5. {
  6. public class IosNativePromoAdapter : INativePromoAdapter
  7. {
  8. [DllImport("__Internal")]
  9. static extern IntPtr UnityMonetizationCreateNativePromoAdapter(IntPtr pPlacementContent);
  10. [DllImport("__Internal")]
  11. static extern void UnityMonetizationReleaseNativePromoAdapter(IntPtr pNativePromoAdapter);
  12. [DllImport("__Internal")]
  13. static extern void UnityMonetizationNativePromoAdapterOnShown(IntPtr pNativePromoAdapter, int showType);
  14. [DllImport("__Internal")]
  15. static extern void UnityMonetizationNativePromoAdapterOnClicked(IntPtr pNativePromoAdapter);
  16. [DllImport("__Internal")]
  17. static extern void UnityMonetizationNativePromoAdapterOnClosed(IntPtr pNativePromoAdapter);
  18. private PromoAdPlacementContent placementContent { get; }
  19. private IntPtr nativePromoAdapter { get; }
  20. public IosNativePromoAdapter(PromoAdPlacementContent placementContent)
  21. {
  22. metadata = placementContent.metadata;
  23. var operations = placementContent.placementContentOperations as IosPlacementContentOperations;
  24. if (operations != null)
  25. {
  26. var ptr = operations.placementContentPtr;
  27. this.placementContent = placementContent;
  28. nativePromoAdapter = UnityMonetizationCreateNativePromoAdapter(ptr);
  29. }
  30. }
  31. ~IosNativePromoAdapter()
  32. {
  33. UnityMonetizationReleaseNativePromoAdapter(nativePromoAdapter);
  34. }
  35. public PromoMetadata metadata { get; }
  36. public void OnShown()
  37. {
  38. OnShown(PromoShowType.Full);
  39. }
  40. public void OnShown(PromoShowType type)
  41. {
  42. UnityMonetizationNativePromoAdapterOnShown(nativePromoAdapter, (int)type);
  43. }
  44. public void OnClosed()
  45. {
  46. UnityMonetizationNativePromoAdapterOnClosed(nativePromoAdapter);
  47. }
  48. public void OnClicked()
  49. {
  50. UnityMonetizationNativePromoAdapterOnClicked(nativePromoAdapter);
  51. }
  52. }
  53. }
  54. #endif