AntiAddictionUIKit.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. using System;
  2. using UnityEngine;
  3. using CheckPayResult = Plugins.AntiAddictionUIKit.CheckPayResult;
  4. using TapTap.AntiAddiction.Model;
  5. namespace TapTap.AntiAddiction
  6. {
  7. public enum Region
  8. {
  9. // NOTE:不要随便改枚举的int值,已经被序列化保存到本地过.
  10. China = 1,
  11. Vietnam = 2,
  12. }
  13. public static class AntiAddictionUIKit
  14. {
  15. private static IAntiAddictionJob _job;
  16. private static IAntiAddictionJob Job
  17. {
  18. get
  19. {
  20. if (_job == null)
  21. {
  22. InitJob();
  23. }
  24. return _job;
  25. }
  26. }
  27. private static Region _region = Region.China;
  28. internal static Action<int, string> ExternalCallback
  29. {
  30. get => Job?.ExternalCallback;
  31. }
  32. private static void InitJob()
  33. {
  34. // 国内-移动端防沉迷用桥接的方式
  35. if (Region.China == _region && (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer))
  36. {
  37. _job = new AntiAddictionMobileOldJob();
  38. }
  39. // 其他均使用 Unity Native 的方式
  40. else
  41. {
  42. _job = new AntiAddictionNewJob();
  43. }
  44. Debug.LogFormat("Anti Addiction Job Type: {0} ! Region: {1} Platform: {2}", _job.GetType(), _region.ToString(), Application.platform.ToString());
  45. }
  46. public static void SetRegion(Region region)
  47. {
  48. if (region != _region || _job == null)
  49. {
  50. _region = region;
  51. InitJob();
  52. }
  53. var newJob = Job as AntiAddictionNewJob;
  54. if (newJob != null)
  55. {
  56. newJob.SetRegion(region);
  57. }
  58. }
  59. public static void Init(AntiAddictionConfig config, Action<int, string> callback)
  60. {
  61. Job.Init(config, callback);
  62. }
  63. public static void Startup(string userId)
  64. {
  65. Job.Startup(userId);
  66. }
  67. public static void Exit()
  68. {
  69. Job.Exit();
  70. }
  71. public static void EnterGame()
  72. {
  73. Job.EnterGame();
  74. }
  75. public static void LeaveGame()
  76. {
  77. Job.LeaveGame();
  78. }
  79. public static int AgeRange
  80. {
  81. get
  82. {
  83. if (Job != null)
  84. return Job.AgeRange;
  85. return 0;
  86. }
  87. }
  88. public static int RemainingTimeInMinutes
  89. {
  90. get
  91. {
  92. if (Job != null)
  93. return Job.RemainingTimeInMinutes;
  94. return 0;
  95. }
  96. }
  97. /// <summary>
  98. /// 剩余时间(单位:秒)
  99. /// </summary>
  100. public static int RemainingTime
  101. {
  102. get
  103. {
  104. if (Job != null)
  105. return Job.RemainingTime;
  106. return 0;
  107. }
  108. }
  109. public static string CurrentToken
  110. {
  111. get
  112. {
  113. if (Job != null)
  114. return Job.CurrentToken;
  115. return "";
  116. }
  117. }
  118. /// <summary>
  119. /// 在支付前,检查支付结果
  120. /// </summary>
  121. /// <param name="amount">支付金额,单位:分</param>
  122. /// <param name="handleCheckPayLimit">检查支付结果的回调</param>
  123. /// <param name="handleCheckPayLimitException">检查支付碰到问题时的回调</param>
  124. public static void CheckPayLimit(long amount
  125. , Action<CheckPayResult> handleCheckPayLimit
  126. , Action<string> handleCheckPayLimitException)
  127. {
  128. Job.CheckPayLimit(amount, handleCheckPayLimit, handleCheckPayLimitException);
  129. }
  130. /// <summary>
  131. /// 提交支付结果
  132. /// </summary>
  133. /// <param name="amount">支付金额,单位:分</param>
  134. /// <param name="handleSubmitPayResult">提交成功后的回调</param>
  135. /// <param name="handleSubmitPayResultException">提交失败后的回调</param>
  136. public static void SubmitPayResult(long amount
  137. , Action handleSubmitPayResult
  138. , Action<string> handleSubmitPayResultException
  139. )
  140. {
  141. Job.SubmitPayResult(amount, handleSubmitPayResult, handleSubmitPayResultException);
  142. }
  143. public static bool isStandalone()
  144. {
  145. if (Job != null)
  146. return Job.isStandalone();
  147. return false;
  148. }
  149. }
  150. }