ATNativeAdWrapper.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using System;
  5. using AOT;
  6. using AnyThinkAds.ThirdParty.LitJson;
  7. using AnyThinkAds.iOS;
  8. #pragma warning disable 0109
  9. public class ATNativeAdWrapper:ATAdWrapper {
  10. static private Dictionary<string, ATNativeAdClient> clients;
  11. static private string CMessageReceiverClass = "ATNativeAdWrapper";
  12. static public new void InvokeCallback(JsonData jsonData) {
  13. Debug.Log("Unity: ATNativeAdWrapper::InvokeCallback()");
  14. string extraJson = "";
  15. string callback = (string)jsonData["callback"];
  16. Dictionary<string, object> msgDict = JsonMapper.ToObject<Dictionary<string, object>>(jsonData["msg"].ToJson());
  17. JsonData msgJsonData = jsonData["msg"];
  18. IDictionary idic = (System.Collections.IDictionary)msgJsonData;
  19. if (idic.Contains("extra")) {
  20. JsonData extraJsonDate = msgJsonData["extra"];
  21. if (extraJsonDate != null) {
  22. extraJson = msgJsonData["extra"].ToJson();
  23. }
  24. }
  25. if (callback.Equals("OnNativeAdLoaded")) {
  26. OnNativeAdLoaded((string)msgDict["placement_id"]);
  27. } else if (callback.Equals("OnNativeAdLoadingFailure")) {
  28. Dictionary<string, object> errorDict = new Dictionary<string, object>();
  29. Dictionary<string, object> errorMsg = JsonMapper.ToObject<Dictionary<string, object>>(msgJsonData["error"].ToJson());
  30. if (errorMsg.ContainsKey("code")) { errorDict.Add("code", errorMsg["code"]); }
  31. if (errorMsg.ContainsKey("reason")) { errorDict.Add("message", errorMsg["reason"]); }
  32. OnNativeAdLoadingFailure((string)msgDict["placement_id"], errorDict);
  33. } else if (callback.Equals("OnNaitveAdShow")) {
  34. OnNaitveAdShow((string)msgDict["placement_id"], extraJson);
  35. } else if (callback.Equals("OnNativeAdClick")) {
  36. OnNativeAdClick((string)msgDict["placement_id"], extraJson);
  37. } else if (callback.Equals("OnNativeAdVideoStart")) {
  38. OnNativeAdVideoStart((string)msgDict["placement_id"]);
  39. } else if (callback.Equals("OnNativeAdVideoEnd")) {
  40. OnNativeAdVideoEnd((string)msgDict["placement_id"]);
  41. } else if (callback.Equals("OnNativeAdCloseButtonClick")) {
  42. OnNativeAdCloseButtonClick((string)msgDict["placement_id"], extraJson);
  43. }else if (callback.Equals("startLoadingADSource")) {
  44. StartLoadingADSource((string)msgDict["placement_id"], extraJson);
  45. }else if (callback.Equals("finishLoadingADSource")) {
  46. FinishLoadingADSource((string)msgDict["placement_id"], extraJson);
  47. }else if (callback.Equals("failToLoadADSource")) {
  48. Dictionary<string, object> errorDict = new Dictionary<string, object>();
  49. Dictionary<string, object> errorMsg = JsonMapper.ToObject<Dictionary<string, object>>(msgJsonData["error"].ToJson());
  50. if (errorMsg["code"] != null) { errorDict.Add("code", errorMsg["code"]); }
  51. if (errorMsg["reason"] != null) { errorDict.Add("message", errorMsg["reason"]); }
  52. FailToLoadADSource((string)msgDict["placement_id"],extraJson, errorDict);
  53. }else if (callback.Equals("startBiddingADSource")) {
  54. StartBiddingADSource((string)msgDict["placement_id"], extraJson);
  55. }else if (callback.Equals("finishBiddingADSource")) {
  56. FinishBiddingADSource((string)msgDict["placement_id"], extraJson);
  57. }else if (callback.Equals("failBiddingADSource")) {
  58. Dictionary<string, object> errorDict = new Dictionary<string, object>();
  59. Dictionary<string, object> errorMsg = JsonMapper.ToObject<Dictionary<string, object>>(msgJsonData["error"].ToJson());
  60. if (errorMsg["code"] != null) { errorDict.Add("code", errorMsg["code"]); }
  61. if (errorMsg["reason"] != null) { errorDict.Add("message", errorMsg["reason"]); }
  62. FailBiddingADSource((string)msgDict["placement_id"],extraJson, errorDict);
  63. }
  64. }
  65. //Public method(s)
  66. static public void setClientForPlacementID(string placementID, ATNativeAdClient client) {
  67. if (clients == null) clients = new Dictionary<string, ATNativeAdClient>();
  68. if (clients.ContainsKey(placementID)) clients.Remove(placementID);
  69. clients.Add(placementID, client);
  70. }
  71. static public void loadNativeAd(string placementID, string customData) {
  72. Debug.Log("Unity: ATNativeAdWrapper::loadNativeAd(" + placementID + ")");
  73. ATUnityCBridge.SendMessageToC(CMessageReceiverClass, "loadNativeAdWithPlacementID:customDataJSONString:callback:", new object[]{placementID, customData != null ? customData : ""}, true);
  74. }
  75. static public bool isNativeAdReady(string placementID) {
  76. Debug.Log("Unity: ATNativeAdWrapper::isNativeAdReady(" + placementID + ")");
  77. return ATUnityCBridge.SendMessageToC(CMessageReceiverClass, "isNativeAdReadyForPlacementID:", new object[]{placementID});
  78. }
  79. static public string checkAdStatus(string placementID) {
  80. Debug.Log("Unity: ATNativeAdWrapper::checkAdStatus(" + placementID + ")");
  81. return ATUnityCBridge.GetStringMessageFromC(CMessageReceiverClass, "checkAdStatus:", new object[]{placementID});
  82. }
  83. static public string getValidAdCaches(string placementID)
  84. {
  85. Debug.Log("Unity: ATNativeAdWrapper::getValidAdCaches(" + placementID + ")");
  86. return ATUnityCBridge.GetStringMessageFromC(CMessageReceiverClass, "getValidAdCaches:", new object[] { placementID });
  87. }
  88. static public void entryScenarioWithPlacementID(string placementID, string scenarioID)
  89. {
  90. Debug.Log("Unity: ATNativeAdWrapper::entryScenarioWithPlacementID(" + placementID + scenarioID + ")");
  91. ATUnityCBridge.SendMessageToC(CMessageReceiverClass, "entryScenarioWithPlacementID:scenarioID:", new object[]{placementID, scenarioID});
  92. }
  93. static public void showNativeAd(string placementID, string metrics) {
  94. Debug.Log("Unity: ATNativeAdWrapper::showNativeAd(" + placementID + ")");
  95. ATUnityCBridge.SendMessageToC(CMessageReceiverClass, "showNativeAdWithPlacementID:metricsJSONString:extraJsonString:", new object[]{placementID, metrics, null});
  96. }
  97. static public void showNativeAd(string placementID, string metrics, string mapJson) {
  98. Debug.Log("Unity: ATNativeAdWrapper::showNativeAd(" + placementID + ")");
  99. ATUnityCBridge.SendMessageToC(CMessageReceiverClass, "showNativeAdWithPlacementID:metricsJSONString:extraJsonString:", new object[]{placementID, metrics, mapJson});
  100. }
  101. static public void removeNativeAdView(string placementID) {
  102. Debug.Log("Unity: ATNativeAdWrapper::removeNativeAdView(" + placementID + ")");
  103. ATUnityCBridge.SendMessageToC(CMessageReceiverClass, "removeNativeAdViewWithPlacementID:", new object[]{placementID});
  104. }
  105. static public void clearCache() {
  106. Debug.Log("Unity: ATNativeAdWrapper::clearCache()");
  107. ATUnityCBridge.SendMessageToC(CMessageReceiverClass, "clearCache", null);
  108. }
  109. //Callbacks
  110. static private void OnNativeAdLoaded(string placementID) {
  111. Debug.Log("Unity: ATNativeAdWrapper::OnNativeAdLoaded(" + placementID + ")");
  112. if (clients[placementID] != null) clients[placementID].onNativeAdLoaded(placementID);
  113. }
  114. static private void OnNativeAdLoadingFailure(string placementID, Dictionary<string, object> errorDict) {
  115. Debug.Log("Unity: ATNativeAdWrapper::OnNativeAdLoadingFailure()");
  116. if (clients[placementID] != null) clients[placementID].onNativeAdLoadFail(placementID, (string)errorDict["code"], (string)errorDict["message"]);
  117. }
  118. static private void OnNaitveAdShow(string placementID, string callbackJson) {
  119. if (clients[placementID] != null) clients[placementID].onAdImpressed(placementID, callbackJson);
  120. Debug.Log("Unity: ATNativeAdWrapper::OnNaitveAdShow(" + placementID + ")");
  121. }
  122. static private void OnNativeAdClick(string placementID, string callbackJson) {
  123. if (clients[placementID] != null) clients[placementID].onAdClicked(placementID, callbackJson);
  124. Debug.Log("Unity: ATNativeAdWrapper::OnNativeAdClick(" + placementID + ")");
  125. }
  126. static private void OnNativeAdVideoStart(string placementID) {
  127. if (clients[placementID] != null) clients[placementID].onAdVideoStart(placementID);
  128. Debug.Log("Unity: ATNativeAdWrapper::OnNativeAdVideoStart(" + placementID + ")");
  129. }
  130. static private void OnNativeAdVideoEnd(string placementID) {
  131. if (clients[placementID] != null) clients[placementID].onAdVideoEnd(placementID);
  132. Debug.Log("Unity: ATNativeAdWrapper::OnNativeAdVideoEnd(" + placementID + ")");
  133. }
  134. static private void OnNativeAdCloseButtonClick(string placementID, string callbackJson)
  135. {
  136. if (clients[placementID] != null) clients[placementID].onAdCloseButtonClicked(placementID, callbackJson);
  137. Debug.Log("Unity: ATNativeAdWrapper::OnNativeAdCloseButtonClick(" + placementID + ")");
  138. }
  139. // ad source callback
  140. static public void StartLoadingADSource(string placementID, string callbackJson)
  141. {
  142. Debug.Log("Unity: ATNativeAdWrapper::StartLoadingADSource()");
  143. if (clients[placementID] != null) clients[placementID].startLoadingADSource(placementID, callbackJson);
  144. }
  145. static public void FinishLoadingADSource(string placementID, string callbackJson)
  146. {
  147. Debug.Log("Unity: ATNativeAdWrapper::FinishLoadingADSource()");
  148. if (clients[placementID] != null) clients[placementID].finishLoadingADSource(placementID, callbackJson);
  149. }
  150. static public void FailToLoadADSource(string placementID,string callbackJson, Dictionary<string, object> errorDict)
  151. {
  152. Debug.Log("Unity: ATNativeAdWrapper::FailToLoadADSource()");
  153. Debug.Log("placementID = " + placementID + "errorDict = " + JsonMapper.ToJson(errorDict));
  154. if (clients[placementID] != null) clients[placementID].failToLoadADSource(placementID,callbackJson, (string)errorDict["code"], (string)errorDict["message"]);
  155. }
  156. static public void StartBiddingADSource(string placementID, string callbackJson)
  157. {
  158. Debug.Log("Unity: ATNativeAdWrapper::StartBiddingADSource()");
  159. if (clients[placementID] != null) clients[placementID].startBiddingADSource(placementID, callbackJson);
  160. }
  161. static public void FinishBiddingADSource(string placementID, string callbackJson)
  162. {
  163. Debug.Log("Unity: ATNativeAdWrapper::FinishBiddingADSource()");
  164. if (clients[placementID] != null) clients[placementID].finishBiddingADSource(placementID, callbackJson);
  165. }
  166. static public void FailBiddingADSource(string placementID,string callbackJson, Dictionary<string, object> errorDict)
  167. {
  168. Debug.Log("Unity: ATNativeAdWrapper::FailBiddingADSource()");
  169. Debug.Log("placementID = " + placementID + "errorDict = " + JsonMapper.ToJson(errorDict));
  170. if (clients[placementID] != null) clients[placementID].failBiddingADSource(placementID, callbackJson,(string)errorDict["code"], (string)errorDict["message"]);
  171. }
  172. }