GA.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  1. 
  2. // Created by ZhuCong on 1/1/14.
  3. // Copyright 2014 Umeng.com . All rights reserved.
  4. using System;
  5. using UnityEngine;
  6. using System.Runtime.InteropServices;
  7. namespace Umeng
  8. {
  9. /// <summary>
  10. /// 友盟游戏统计
  11. /// </summary>
  12. public class GA : Analytics
  13. {
  14. public enum Gender
  15. {
  16. Unknown = 0,
  17. Male = 1,
  18. Female = 2
  19. }
  20. /// <summary>
  21. /// 设置玩家等级
  22. /// </summary>
  23. /// <param name="level">玩家等级</param>
  24. public static void SetUserLevel(int level)
  25. {
  26. #if UNITY_EDITOR
  27. //Debug.Log("SetUserLevel");
  28. #elif UNITY_IPHONE
  29. _SetUserLevel(level);
  30. #elif UNITY_ANDROID
  31. Agent.CallStatic("setPlayerLevel", level);
  32. #endif
  33. }
  34. /// <summary>
  35. /// 设置玩家等级
  36. /// </summary>
  37. /// <param name="level">玩家等级</param>
  38. [Obsolete("SetUserLevel(string level) 已弃用, 请使用 SetUserLevel(int level)")]
  39. public static void SetUserLevel(string level)
  40. {
  41. Debug.LogWarning("SetUserLevel(string level) 已弃用, 请使用 SetUserLevel(int level)");
  42. }
  43. /// <summary>
  44. /// 设置玩家属性
  45. /// </summary>
  46. /// <param name="userId">玩家Id</param>
  47. /// <param name="gender">性别</param>
  48. /// <param name="age">年龄</param>
  49. /// <param name="platform">来源</param>
  50. [System.Obsolete("SetUserInfo已弃用, 请使用ProfileSignIn")]
  51. public static void SetUserInfo(string userId, Gender gender, int age, string platform)
  52. {
  53. #if UNITY_EDITOR
  54. //Debug.Log("SetUserInfo");
  55. #elif UNITY_IPHONE
  56. _SetUserInfo(userId, (int)gender, age, platform);
  57. #elif UNITY_ANDROID
  58. Agent.CallStatic("setPlayerInfo",userId, age, (int)gender, platform);
  59. #endif
  60. }
  61. /// <summary>
  62. /// 玩家进入关卡
  63. /// </summary>
  64. /// <param name="level">关卡</param>
  65. public static void StartLevel(string level)
  66. {
  67. #if UNITY_EDITOR
  68. //Debug.Log("StartLevel");
  69. #elif UNITY_IPHONE
  70. _StartLevel(level);
  71. #elif UNITY_ANDROID
  72. Agent.CallStatic("startLevel",level);
  73. #endif
  74. }
  75. /// <summary>
  76. /// 玩家通过关卡
  77. /// </summary>
  78. /// <param name="level">如果level设置为null 则为当前关卡</param>
  79. public static void FinishLevel(string level)
  80. {
  81. #if UNITY_EDITOR
  82. //Debug.Log("FinishLevel");
  83. #elif UNITY_IPHONE
  84. _FinishLevel(level);
  85. #elif UNITY_ANDROID
  86. Agent.CallStatic("finishLevel",level);
  87. #endif
  88. }
  89. /// <summary>
  90. /// 玩家未通过关卡
  91. /// </summary>
  92. /// <param name="level">如果level设置为null 则为当前关卡</param>
  93. public static void FailLevel(string level)
  94. {
  95. #if UNITY_EDITOR
  96. //Debug.Log("FailLevel");
  97. #elif UNITY_IPHONE
  98. _FailLevel(level);
  99. #elif UNITY_ANDROID
  100. Agent.CallStatic("failLevel",level);
  101. #endif
  102. }
  103. /// <summary>
  104. /// Source9 到Source 20 请在友盟后台网站设置 对应的定义
  105. /// </summary>
  106. public enum PaySource
  107. {
  108. AppStore = 1,
  109. 支付宝 = 2,
  110. 网银 = 3,
  111. 财付通 = 4,
  112. 移动 = 5,
  113. 联通 = 6,
  114. 电信 = 7,
  115. Paypal = 8,
  116. Source9,
  117. Source10,
  118. Source11,
  119. Source12,
  120. Source13,
  121. Source14,
  122. Source15,
  123. Source16,
  124. Source17,
  125. Source18,
  126. Source19,
  127. Source20,
  128. }
  129. /// <summary>
  130. /// 游戏中真实消费(充值)的时候调用此方法
  131. /// </summary>
  132. /// <param name="cash">本次消费金额</param>
  133. /// <param name="source">来源</param>
  134. /// <param name="coin">本次消费等值的虚拟币</param>
  135. public static void Pay(double cash, PaySource source, double coin)
  136. {
  137. #if UNITY_EDITOR
  138. //Debug.Log("Pay");
  139. #elif UNITY_IPHONE
  140. _PayCashForCoin(cash,(int)source,coin);
  141. #elif UNITY_ANDROID
  142. Agent.CallStatic("pay",cash , coin, (int)source);
  143. #endif
  144. }
  145. /// <summary>
  146. /// 游戏中真实消费(充值)的时候调用此方法
  147. /// </summary>
  148. /// <param name="cash">本次消费金额</param>
  149. /// <param name="source">来源:AppStore = 1,支付宝 = 2,网银 = 3,财付通 = 4,移动 = 5,联通 = 6,电信 = 7,Paypal = 8,
  150. /// 9~100对应渠道请到友盟后台设置本次消费的途径,网银,支付宝 等</param>
  151. /// <param name="coin">本次消费等值的虚拟币</param>
  152. public static void Pay(double cash, int source, double coin)
  153. {
  154. if (source < 1 || source > 100) {
  155. throw new System.ArgumentException ();
  156. }
  157. #if UNITY_EDITOR
  158. //Debug.Log("Pay");
  159. #elif UNITY_IPHONE
  160. _PayCashForCoin(cash,source,coin);
  161. #elif UNITY_ANDROID
  162. Agent.CallStatic("pay",cash , coin, source);
  163. #endif
  164. }
  165. /// <summary>
  166. /// 玩家支付货币购买道具
  167. /// </summary>
  168. /// <param name="cash">真实货币数量</param>
  169. /// <param name="source">支付渠道</param>
  170. /// <param name="item">道具名称</param>
  171. /// <param name="amount">道具数量</param>
  172. /// <param name="price">道具单价</param>
  173. public static void Pay(double cash, PaySource source, string item, int amount, double price)
  174. {
  175. #if UNITY_EDITOR
  176. //Debug.Log("Pay");
  177. #elif UNITY_IPHONE
  178. _PayCashForItem(cash,(int)source,item,amount,price);
  179. #elif UNITY_ANDROID
  180. Agent.CallStatic("pay",cash, item, amount, price, (int)source);
  181. #endif
  182. }
  183. /// <summary>
  184. /// 玩家使用虚拟币购买道具
  185. /// </summary>
  186. /// <param name="item">道具名称</param>
  187. /// <param name="amount">道具数量</param>
  188. /// <param name="price">道具单价</param>
  189. public static void Buy(string item, int amount, double price)
  190. {
  191. #if UNITY_EDITOR
  192. //Debug.Log("Buy");
  193. #elif UNITY_IPHONE
  194. _Buy(item,amount,price);
  195. #elif UNITY_ANDROID
  196. Agent.CallStatic("buy", item, amount, price);
  197. #endif
  198. }
  199. /// <summary>
  200. /// 玩家使用虚拟币购买道具
  201. /// </summary>
  202. /// <param name="item">道具名称</param>
  203. /// <param name="amount">道具数量</param>
  204. /// <param name="price">道具单价</param>
  205. public static void Use(string item, int amount, double price)
  206. {
  207. #if UNITY_EDITOR
  208. //Debug.Log("Use");
  209. #elif UNITY_IPHONE
  210. _Use(item, amount, price);
  211. #elif UNITY_ANDROID
  212. Agent.CallStatic("use", item, amount, price);
  213. #endif
  214. }
  215. /// <summary>
  216. /// Source4 到Source 10 请在友盟后台网站设置 对应的定义
  217. /// </summary>
  218. public enum BonusSource
  219. {
  220. 玩家赠送 = 1,
  221. Source2 =2,
  222. Source3 =3,
  223. Source4,
  224. Source5,
  225. Source6,
  226. Source7,
  227. Source8,
  228. Source9,
  229. Source10,
  230. }
  231. /// <summary>
  232. /// 玩家获虚拟币奖励
  233. /// </summary>
  234. /// <param name="coin">虚拟币数量</param>
  235. /// <param name="source">奖励方式</param>
  236. public static void Bonus(double coin, BonusSource source)
  237. {
  238. #if UNITY_EDITOR
  239. //Debug.Log("Bonus");
  240. #elif UNITY_IPHONE
  241. _BonusCoin(coin, (int)source);
  242. #elif UNITY_ANDROID
  243. Agent.CallStatic("bonus", coin, (int)source);
  244. #endif
  245. }
  246. /// <summary>
  247. /// 玩家获道具奖励
  248. /// </summary>
  249. /// <param name="item">道具名称</param>
  250. /// <param name="amount">道具数量</param>
  251. /// <param name="price">道具单价</param>
  252. /// <param name="source">奖励方式</param>
  253. ///
  254. public static void Bonus(string item, int amount, double price, BonusSource source)
  255. {
  256. #if UNITY_EDITOR
  257. //Debug.Log("Bonus");
  258. #elif UNITY_IPHONE
  259. _BonusItem(item, amount, price, (int)source);
  260. #elif UNITY_ANDROID
  261. Agent.CallStatic("bonus", item, amount, price, (int)source);
  262. #endif
  263. }
  264. //使用sign-In函数后,如果结束该userId的统计,需要调用ProfileSignOff函数
  265. public static void ProfileSignIn(string userId)
  266. {
  267. #if UNITY_EDITOR
  268. //Debug.Log("ProfileSignIn");
  269. #elif UNITY_IPHONE
  270. _ProfileSignInWithPUID(userId);
  271. #elif UNITY_ANDROID
  272. Agent.CallStatic("onProfileSignIn", userId);
  273. #endif
  274. }
  275. //使用sign-In函数后,如果结束该userId的统计,需要调用ProfileSignOfff函数
  276. //provider : 不能以下划线"_"开头,使用大写字母和数字标识; 如果是上市公司,建议使用股票代码。
  277. public static void ProfileSignIn(string userId,string provider)
  278. {
  279. #if UNITY_EDITOR
  280. //Debug.Log("ProfileSignIn");
  281. #elif UNITY_IPHONE
  282. _ProfileSignInWithPUIDAndProvider(userId,provider);
  283. #elif UNITY_ANDROID
  284. Agent.CallStatic("onProfileSignIn", provider,userId);
  285. #endif
  286. }
  287. //该结束该userId的统计
  288. public static void ProfileSignOff()
  289. {
  290. #if UNITY_EDITOR
  291. //Debug.Log("ProfileSignOff");
  292. #elif UNITY_IPHONE
  293. _ProfileSignOff();
  294. #elif UNITY_ANDROID
  295. Agent.CallStatic("onProfileSignOff");
  296. #endif
  297. }
  298. #if UNITY_IPHONE
  299. [DllImport("__Internal")]
  300. private static extern void _SetUserLevel(int level);
  301. [DllImport("__Internal")]
  302. private static extern void _SetUserInfo(string userId, int gender, int age, string platform);
  303. [DllImport("__Internal")]
  304. private static extern void _StartLevel(string level);
  305. [DllImport("__Internal")]
  306. private static extern void _FinishLevel(string level);
  307. [DllImport("__Internal")]
  308. private static extern void _FailLevel(string level);
  309. [DllImport("__Internal")]
  310. private static extern void _PayCashForCoin(double cash, int source, double coin);
  311. [DllImport("__Internal")]
  312. private static extern void _PayCashForItem(double cash, int source, string item, int amount, double price);
  313. [DllImport("__Internal")]
  314. private static extern void _Buy(string item, int amount, double price);
  315. [DllImport("__Internal")]
  316. private static extern void _Use(string item, int amount, double price);
  317. [DllImport("__Internal")]
  318. private static extern void _BonusCoin(double coin, int source);
  319. [DllImport("__Internal")]
  320. private static extern void _BonusItem(string item, int amount, double price, int source);
  321. [DllImport("__Internal")]
  322. private static extern void _ProfileSignInWithPUID (string puid);
  323. [DllImport("__Internal")]
  324. private static extern void _ProfileSignInWithPUIDAndProvider(string puid,string provider);
  325. [DllImport("__Internal")]
  326. private static extern void _ProfileSignOff();
  327. #endif
  328. }
  329. }