AdManagerSettings.cs 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System;
  5. using UnityEngine;
  6. using UnityEditor;
  7. using System.Xml;
  8. using UnityEngine.Serialization;
  9. [HelpURL("https://www.yuque.com/books/share/83586259-ff00-4802-867f-bbefc3fe07c4/epesmt")]
  10. [Serializable /*, CreateAssetMenuAttribute(fileName = "AdManagerSettings", menuName = "AdManagerSettings", order = 0)*/]
  11. public class AdManagerSettings : ScriptableObject
  12. {
  13. #region Singleton
  14. private static AdManagerSettings instance;
  15. public static AdManagerSettings Instance
  16. {
  17. get
  18. {
  19. if (instance == null)
  20. {
  21. instance = Resources.Load<AdManagerSettings>("AdManagerSettings");
  22. if (instance == null)
  23. {
  24. return null;
  25. }
  26. else
  27. {
  28. Debug.Log("AdManagerSettings Loaded");
  29. }
  30. }
  31. return instance;
  32. }
  33. }
  34. #endregion
  35. #region Inspector Variables
  36. [SerializeField] public string[] iOSBannerID;
  37. [SerializeField] public string[] iOSInterstitialID;
  38. [SerializeField] public string[] iOSVideoID;
  39. [SerializeField] public string[] iOSOpenID;
  40. [SerializeField] public string[] iOSRewardedInterstitialID;
  41. [Space] [SerializeField] public string[] AndroidBannerID;
  42. [SerializeField] public string[] AndroidInterstitialID;
  43. [SerializeField] public string[] AndroidVideoID;
  44. [SerializeField] public string[] AndroidOpenID;
  45. [SerializeField] public string[] AndroidRewardedInterstitialID;
  46. [Tooltip("输入自动请求间隔时间,单位秒")] [SerializeField]
  47. public int RepeatTime = 120;
  48. [FormerlySerializedAs("YouIosAdmobId")] [Tooltip("输入你iOS应用的AdmobId")] [SerializeField]
  49. public string iOSAdmobId;
  50. [Tooltip("仅iOS需要,输入你应用的苹果appid")] [SerializeField]
  51. public string AppleID;
  52. [Tooltip("输入你应用的友盟 iOS appid")] [SerializeField]
  53. public string iOSUmengAppid;
  54. [Tooltip("输入你应用的iOS 穿山甲AppID")] [SerializeField]
  55. public string iOSPangleAppID;
  56. [Tooltip("输入你应用的iOS FacebookID")] [SerializeField]
  57. public string iOSFacebookID;
  58. [Tooltip("输入你应用的iOS Facebook名字")] [SerializeField]
  59. public string iOSFacebookDisplayname = "ios";
  60. [Tooltip("输入你应用的iOS Facebook客户端口令(FacebookClientToken)")] [SerializeField]
  61. public string iOSFacebookClientToken;
  62. [Tooltip("输入你应用的iOS gameId")] [SerializeField]
  63. public string iOSGameId;
  64. [Tooltip("输入你应用的iOS Secret")] [SerializeField]
  65. public string iOSGameSecret;
  66. [FormerlySerializedAs("YouAndroidAdmobId")] [Tooltip("输入你Android应用的AdmobId")] [SerializeField]
  67. public string AndroidAdmobId;
  68. [Tooltip("输入你应用的友盟 Android appid")] [SerializeField]
  69. public string AndroidUmengAppid;
  70. [Tooltip("输入你应用的Android 穿山甲AppID")] [SerializeField]
  71. public string AndroidPangleAppID;
  72. [Tooltip("输入你应用的Android FacebookID")] [SerializeField]
  73. public string AndroidFacebookID;
  74. [Tooltip("输入你应用的Android Facebook客户端口令(FacebookClientToken)")] [SerializeField]
  75. public string AndroidFacebookClientToken;
  76. [Tooltip("输入你应用的Android Facebook名字")] [SerializeField]
  77. public string AndroidFacebookDisplayname = "Android";
  78. [Tooltip("输入你应用的Android gameId")] [SerializeField]
  79. public string AndroidGameId;
  80. [Tooltip("输入你应用的Android gameSecret")] [SerializeField]
  81. public string AndroidGameSecret;
  82. [Space] [Tooltip("输入你应用的谷歌服务ID")] [SerializeField]
  83. public string GoogleGamesAppID;
  84. [Space] [Tooltip("输入你应用的Umeng渠道名字")] [SerializeField]
  85. public string umengChannel = "GooglePlay";
  86. [Tooltip("防篡改")] [SerializeField]
  87. public bool isChcek = false;
  88. #endregion
  89. #if UNITY_EDITOR
  90. #region Editors.
  91. [MenuItem("PottingMob/Settings")]
  92. public static void SelectSettings()
  93. {
  94. var path = @"Assets/PottingMobileSDK/Resources/AdManagerSettings.asset";
  95. AdManagerSettings obj = AssetDatabase.LoadAssetAtPath<AdManagerSettings>(path);
  96. Selection.instanceIDs = new int[] {obj.GetInstanceID()};
  97. }
  98. [MenuItem("PottingMob/Regenerate Android Manifest")]
  99. public static void Regenerate()
  100. {
  101. string xmlPath = Application.dataPath + "/Plugins/Android/AndroidManifest.xml";
  102. XmlDocument xmlDoc = new XmlDocument();
  103. xmlDoc.Load(xmlPath);
  104. XmlNode node = xmlDoc.SelectSingleNode("/manifest");
  105. node = FindNode(xmlDoc, "/manifest/application/meta-data", "android:name", "com.facebook.sdk.ApplicationId");
  106. node.Attributes["android:value"].Value = "fb" + AdManagerSettings.Instance.AndroidFacebookID;
  107. node = FindNode(xmlDoc, "/manifest/application/meta-data", "android:name", "com.facebook.sdk.ClientToken");
  108. node.Attributes["android:value"].Value = AdManagerSettings.Instance.AndroidFacebookClientToken;
  109. node = FindNode(xmlDoc, "/manifest/application/meta-data", "android:name", "applovin.sdk.key");
  110. node = FindNode(xmlDoc, "/manifest/application/meta-data", "android:name",
  111. "com.google.android.gms.ads.APPLICATION_ID");
  112. node.Attributes["android:value"].Value = AdManagerSettings.Instance.AndroidAdmobId;
  113. Debug.Log(PottingMobileContent.Admob_appid);
  114. //node = FindNode(xmlDoc, "/manifest/application/meta-data", "android:name", "com.google.android.gms.games.APP_ID");
  115. //node.Attributes["android:value"].Value = AdManagerSettings.Instance.GoogleGamesAppID;
  116. node = FindNode(xmlDoc, "/manifest/application/meta-data", "android:name", "com.google.android.gms.games.APP_ID");
  117. node.Attributes["android:value"].Value = "\\u003"+AdManagerSettings.Instance.GoogleGamesAppID;
  118. // scheme
  119. XmlNodeList nodes = xmlDoc.SelectNodes("/manifest/application/activity/intent-filter/data");
  120. node = nodes.Item(0);
  121. node.Attributes["android:scheme"].Value = "fb" + AdManagerSettings.Instance.AndroidFacebookID;
  122. //com.facebook.app.FacebookContentProvider{APP_ID}
  123. node = FindNode(xmlDoc, "/manifest/application/provider", "android:name",
  124. "com.facebook.FacebookContentProvider");
  125. node.Attributes["android:authorities"].Value =
  126. "com.facebook.app.FacebookContentProvider" + AdManagerSettings.Instance.AndroidFacebookID;
  127. xmlDoc.Save(xmlPath);
  128. // syncResString();
  129. AssetDatabase.Refresh();
  130. }
  131. private static void syncResString()
  132. {
  133. string xmlPath = Application.dataPath + "/Plugins/Android/res/values/strings.xml";
  134. XmlDocument xmlDoc = new XmlDocument();
  135. xmlDoc.Load(xmlPath);
  136. XmlNode node = xmlDoc.SelectSingleNode("/resources");
  137. node = FindStringNode(xmlDoc, "/resources/string", "android:name", "google_game_app_id");
  138. node.InnerXml = AdManagerSettings.Instance.GoogleGamesAppID;
  139. xmlDoc.Save(xmlPath);
  140. }
  141. static XmlNode FindNode(XmlDocument xmlDoc, string xpath, string attributeName, string attributeValue)
  142. {
  143. XmlNodeList nodes = xmlDoc.SelectNodes(xpath);
  144. for (int i = 0; i < nodes.Count; i++)
  145. {
  146. XmlNode node = nodes.Item(i);
  147. string _attributeValue = node.Attributes[attributeName].Value;
  148. if (_attributeValue == attributeValue)
  149. {
  150. return node;
  151. }
  152. }
  153. return null;
  154. }
  155. static XmlNode FindStringNode(XmlDocument xmlDoc, string xpath, string attributeName, string attributeValue)
  156. {
  157. XmlNodeList nodes = xmlDoc.SelectNodes(xpath);
  158. for (int i = 0; i < nodes.Count; i++)
  159. {
  160. XmlNode node = nodes.Item(i);
  161. string _attributeValue = node.Attributes[0].Value;
  162. if (_attributeValue == attributeValue)
  163. {
  164. return node;
  165. }
  166. }
  167. return null;
  168. }
  169. #endregion
  170. #endif
  171. }