PottingMobileAndroid.cs 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.Globalization;
  4. using PottingMobileSDK;
  5. using PottingMobileSDK.MiniJSON;
  6. using Sdk.Phone;
  7. using UnityEngine;
  8. public class PottingMobileAndroid : PottingMobileBase
  9. {
  10. private static readonly AndroidJavaClass PluginClass = new AndroidJavaClass("com.youloft.advert.YouLoftAdManager");
  11. private static readonly AndroidJavaClass YouLoftClass = new AndroidJavaClass("com.youloft.core.YouLoftSdk");
  12. private static readonly AndroidJavaClass StatisticsClass =
  13. new AndroidJavaClass("com.youloft.statistics.StatisticsManager");
  14. private static readonly AndroidJavaClass NotificationClass =
  15. new AndroidJavaClass("com.youloft.notification.local.NotificationUtil");
  16. private static readonly AndroidJavaClass YouLoftAdManagerClass =
  17. new AndroidJavaClass("com.youloft.advert.YouLoftAdManager");
  18. private static AndroidJavaObject AdClass = PluginClass.CallStatic<AndroidJavaObject>("getInstance");
  19. private static AndroidJavaObject GoogleGameManagerClass;
  20. static PottingMobileAndroid()
  21. {
  22. InitManager();
  23. }
  24. /// <summary>
  25. /// 初始化SDK
  26. /// </summary>
  27. /// <param name="jsonAds">广告id</param>
  28. /// <param name="facebookid"></param>
  29. /// <param name="app_flyers_id"></param>
  30. /// <param name="umengId"></param>
  31. public static void InitializeSdk(string jsonAds, string facebookid, string app_flyers_id, string umengId,
  32. string umengChannel, string pk, string pangleAppID)
  33. {
  34. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  35. PluginClass.CallStatic("setRepeatTime", AdManagerSettings.Instance.RepeatTime);
  36. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  37. YouLoftClass.CallStatic("initApi", PottingMobileContent.GameId, PottingMobileContent.GameSecret, jo);
  38. YouLoftClass.CallStatic(
  39. "initUnityAdSdk", jo,
  40. jsonAds,
  41. facebookid,
  42. PottingMobileContent.APPSFLYER_DEV_KEY,
  43. umengId, umengChannel, pk, pangleAppID);
  44. if (AdManagerSettings.Instance.isChcek)
  45. {
  46. NetTimeCheck.Init();
  47. }
  48. }
  49. /// <summary>
  50. /// 初始化sdk
  51. /// </summary>
  52. public static void InitializeSdk()
  53. {
  54. InitializeSdk(PottingMobileContent.AdJsonString, AdManagerSettings.Instance.AndroidFacebookID,
  55. PottingMobileContent.AppsFlyerAppid, PottingMobileContent.UmengAppid, PottingMobileContent.umengChannel,
  56. "", PottingMobileContent.PangleAppID);
  57. }
  58. /// <summary>
  59. /// 设置debug日志开关
  60. /// </summary>
  61. /// <param name="isDebug"></param>
  62. public static void withLogDebug(bool isDebug)
  63. {
  64. YouLoftClass.CallStatic("setDebug", isDebug);
  65. PottingMobileBase.isDebug = isDebug;
  66. }
  67. /// <summary>
  68. /// 开启定时自动加载广告
  69. /// </summary>
  70. public static void autoLoadAd()
  71. {
  72. AdClass.Call(
  73. "autoLoad");
  74. PottingLog("andorid_autoLoadAd");
  75. }
  76. public static void _ValidateAndTrackInAppPurchase(string signature, string purchaseData,
  77. string price, string currency)
  78. {
  79. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  80. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  81. StatisticsClass.CallStatic("validateAndTrackInAppPurchase", jo, "", signature, purchaseData, price, currency);
  82. }
  83. /// <summary>
  84. /// 提交反馈接口
  85. /// </summary>
  86. /// <param name="msg">反馈信息</param>
  87. /// <param name="connect">联系方式</param>
  88. /// <param name="docInfo">存档</param>
  89. public static void _FeedBackSubmit(string msg, string connect, string docInfo)
  90. {
  91. YouLoftClass.CallStatic(
  92. "feedback",
  93. msg, connect, docInfo
  94. );
  95. }
  96. /// <summary>
  97. /// 显示webview
  98. /// </summary>
  99. /// <param name="url"></param>
  100. public static void _ShowWebView(string url)
  101. {
  102. AndroidJavaObject webViewClass = new AndroidJavaObject("com.youloft.webview.WebViewUtil");
  103. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  104. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  105. webViewClass.CallStatic("openHtml", jo, url);
  106. }
  107. public static void _showFeedBackHtml(Dictionary<string, string> lable = null)
  108. {
  109. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  110. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  111. var jsonString = Json.Serialize(lable);
  112. YouLoftClass.CallStatic(
  113. "showFeedBackHtml", jo, jsonString);
  114. }
  115. /// <summary>
  116. /// 打开bbs
  117. /// </summary>
  118. /// <param name="bbsId">论坛id</param>
  119. /// <param name="userId">用户唯一标识</param>
  120. public static void _Showbbs(string bbsId, string userId)
  121. {
  122. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  123. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  124. YouLoftClass.CallStatic(
  125. "showbbs", jo, bbsId, userId);
  126. }
  127. /// <summary>
  128. /// 打开bbs
  129. /// </summary>
  130. /// <param name="bbsId">论坛id</param>
  131. /// <param name="emial">用户邮箱</param>
  132. public static void _ShowBBSWithEmail(string bbsId, string emial)
  133. {
  134. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  135. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  136. YouLoftClass.CallStatic(
  137. "showbbsEmail", jo, bbsId, emial);
  138. }
  139. /// <summary>
  140. /// 显示推荐界面
  141. /// </summary>
  142. public static void _ShowGameRecommendView()
  143. {
  144. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  145. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  146. YouLoftClass.CallStatic(
  147. "showGameRecommend", jo);
  148. }
  149. /// <summary>
  150. /// 谷歌登录
  151. /// </summary>
  152. public static void _LoginUseGoogle()
  153. {
  154. AndroidJavaObject LoginClass = new AndroidJavaObject("com.youloft.login.LoginActivity");
  155. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  156. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  157. LoginClass.CallStatic("jump", jo, 1);
  158. }
  159. public static void _LoginUseGoogleInClient(string clientId)
  160. {
  161. AndroidJavaObject LoginClass = new AndroidJavaObject("com.youloft.login.LoginActivity");
  162. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  163. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  164. LoginClass.CallStatic("jumpGoogle", jo, clientId);
  165. }
  166. /// <summary>
  167. /// /谷歌退出登录
  168. /// </summary>
  169. public static void _LogOutGoogle()
  170. {
  171. AndroidJavaObject LoginClass = new AndroidJavaObject("com.youloft.login.LoginUtils");
  172. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  173. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  174. LoginClass.CallStatic("loginOutToGoogle", jo);
  175. }
  176. /// <summary>
  177. /// Facebook登录
  178. /// </summary>
  179. public static void _LoginUseFacebook()
  180. {
  181. AndroidJavaObject LoginClass = new AndroidJavaObject("com.youloft.login.LoginActivity");
  182. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  183. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  184. LoginClass.CallStatic("jump", jo, 0);
  185. }
  186. /// <summary>
  187. /// Facebook退出登录
  188. /// </summary>
  189. public static void _LogOutFacebook()
  190. {
  191. AndroidJavaObject LoginClass = new AndroidJavaObject("com.youloft.login.LoginUtils");
  192. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  193. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  194. LoginClass.CallStatic("loginOutToFacebook");
  195. }
  196. public static void _GetADID()
  197. {
  198. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  199. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  200. AdClass.Call(
  201. "getADID", jo);
  202. PottingLog("andorid_GetADID");
  203. }
  204. /// <summary>
  205. /// 重置同意的链接
  206. /// </summary>
  207. public static void _consentInformationReset()
  208. {
  209. AdClass.Call(
  210. "consentInformationReset");
  211. PottingLog("_consentInformationReset");
  212. }
  213. /// <summary>
  214. /// 播放插屏广告
  215. /// </summary>
  216. public static void _ShowInterstitialAd()
  217. {
  218. AdClass.Call(
  219. "showInterstitialAd");
  220. PottingLog("_ShowInterstitialAd");
  221. }
  222. /// <summary>
  223. /// 手动加载插屏广告
  224. /// </summary>
  225. public static void _LoadInterstitialAd()
  226. {
  227. AdClass.Call(
  228. "loadInterstitialAd");
  229. PottingLog("PottingMobileAndroid:_LoadInterstitialAd");
  230. }
  231. public static void _LoadRewardedInterstitialAd()
  232. {
  233. AdClass.Call(
  234. "loadRewardedInterstitialAd");
  235. PottingLog("andorid_LoadRewardedInterstitialAd");
  236. }
  237. public static void _ShowRewardedInterstitialAd()
  238. {
  239. AdClass.Call(
  240. "showRewardedInterstitialAd");
  241. PottingLog("andorid_ShowRewardedInterstitialAd");
  242. }
  243. public static void _LoadAppOpenAd()
  244. {
  245. AdClass.Call(
  246. "fetchAd");
  247. PottingLog("andorid_LoadAppOpenAd");
  248. }
  249. public static void _ShowAppOpenAd()
  250. {
  251. AdClass.Call(
  252. "showAdIfAvailable");
  253. PottingLog("andorid_ShowAppOpenAd");
  254. }
  255. /// <summary>
  256. /// 手动加载视频广告
  257. /// </summary>
  258. public static void _LoadRewardedVideoAd()
  259. {
  260. AdClass.Call(
  261. "loadRewardedVideoAd");
  262. PottingLog("PottingMobileAndroid:_LoadRewardedVideoAd");
  263. }
  264. /// <summary>
  265. /// 播放视频广告
  266. /// </summary>
  267. public static void _ShowRewardedVideoAd()
  268. {
  269. AdClass.Call(
  270. "showRewardedVideoAd");
  271. PottingLog("PottingMobileAndroid:_ShowRewardedVideoAd");
  272. }
  273. /// <summary>
  274. /// 播放指定的视频广告
  275. /// </summary>
  276. /// <param name="adid">视频广告id</param>
  277. public static void _ShowRewardedVideoAd(string adid)
  278. {
  279. AdClass.Call(
  280. "showRewardedVideoAd", adid);
  281. PottingLog("PottingMobileAndroid:_ShowRewardedVideoAd");
  282. }
  283. /// <summary>
  284. /// 判断是否有缓存广告
  285. /// </summary>
  286. /// <returns>返回是否有广告</returns>
  287. public static bool _HasRewardedVideo()
  288. {
  289. return AdClass.Call<bool>(
  290. "hasRewardedVideo");
  291. }
  292. /// <summary>
  293. /// 判断指定id是否有缓存广告
  294. /// </summary>
  295. /// <param name="adId"></param>
  296. /// <returns>返回是否有广告</returns>
  297. public static bool _HasRewardedVideo(string adId)
  298. {
  299. return AdClass.Call<bool>(
  300. "hasRewardedVideo", adId);
  301. }
  302. /// <summary>
  303. /// 加载并显示Banner广告
  304. /// </summary>
  305. /// <param name="adPostion">Banner位置</param>
  306. /// <param name="adSize">Banner大小</param>
  307. public static void _LoadAndShowBannerAd(AdPosition adPostion, AdSize adSize)
  308. {
  309. PottingLog("_LoadAndShowBannerAd--" + adPostion);
  310. AdClass.Call(
  311. "loadAndShowBannerAd", (int)adPostion, (int)adSize);
  312. }
  313. /// <summary>
  314. /// 加载并显示Banner广告
  315. /// </summary>
  316. /// <param name="adPostion">Banner位置</param>
  317. public static void _LoadAndShowBannerAd(AdPosition adPostion)
  318. {
  319. PottingLog("_LoadAndShowBannerAd--" + adPostion);
  320. _LoadAndShowBannerAd(adPostion, AdSize.H_50);
  321. }
  322. /// <summary>
  323. /// 隐藏Banner广告
  324. /// </summary>
  325. public static void _HideBannerAd()
  326. {
  327. AdClass.Call(
  328. "hideBannerAd");
  329. }
  330. //充值购买虚拟货币(金币、宝石、金票等), cash-现金数额,source-购买渠道,coin-虚拟货币数额
  331. public static void _Pay(double cash, int source, double coin)
  332. {
  333. StatisticsClass.CallStatic("pay", cash, coin, source);
  334. PottingLog("payEvent");
  335. }
  336. /// <summary>
  337. /// 内购支付成功埋点
  338. /// </summary>
  339. /// <param name="price">价格,固定为美元</param>
  340. public static void _buyProductEvent(double price, string productId)
  341. {
  342. StatisticsClass.CallStatic("buyProduct", price, productId);
  343. PottingLog("_buyProductEvent");
  344. }
  345. //充值购买虚拟道具, cash-现金数额,source-购买渠道,coin-虚拟货币数额
  346. public static void _PayItem(double cash, int source, string itemName, int amount, double price)
  347. {
  348. StatisticsClass.CallStatic("pay", cash, itemName, amount, price, source);
  349. PottingLog("_PayItem");
  350. }
  351. //游戏内部货币购买道具操作,itemName-道具名称,amount-数量,price-价格
  352. public static void _Buy(string itemName, int amount, double price)
  353. {
  354. StatisticsClass.CallStatic("buy", itemName, amount, price);
  355. PottingLog("_Buy");
  356. }
  357. //游戏内消耗道具操作,itemName-道具名称,amount-数量,price-价格
  358. public static void _Use(string itemName, int amount, double price)
  359. {
  360. StatisticsClass.CallStatic("use", itemName, amount, price);
  361. PottingLog("_Use");
  362. }
  363. //开始关卡,levelName-关卡名称
  364. /// <summary>
  365. /// 开始关卡,levelName-关卡名称
  366. /// </summary>
  367. /// <param name="levelName"></param>
  368. public static void _StartLevel(string levelName)
  369. {
  370. StatisticsClass.CallStatic("startLevel", levelName);
  371. PottingLog("_StartLevel");
  372. }
  373. public static void onPause()
  374. {
  375. YouLoftAdManagerClass.CallStatic("onMopubPause");
  376. }
  377. public static void onResume()
  378. {
  379. YouLoftAdManagerClass.CallStatic("onMopubResume");
  380. }
  381. //关卡完成,levelName-关卡名称
  382. /// <summary>
  383. /// 关卡完成,levelName-关卡名称
  384. /// </summary>
  385. /// <param name="levelName">关卡名称</param>
  386. public static void _FinishLevel(string levelName)
  387. {
  388. StatisticsClass.CallStatic("finishLevel", levelName);
  389. PottingLog("_FinishLevel");
  390. }
  391. //关卡失败,levelName-关卡名称
  392. /// <summary>
  393. /// 关卡失败,levelName-关卡名称
  394. /// </summary>
  395. /// <param name="levelName">关卡名称</param>
  396. public static void _FailLevel(string levelName)
  397. {
  398. StatisticsClass.CallStatic("failLevel", levelName);
  399. PottingLog("_FailLevel");
  400. }
  401. //得到虚拟货币奖励,coin-虚拟货币数额,source-获取渠道(例:游戏奖励、玩家赠送、节日赠送、打怪掉落等)
  402. public static void _Bonus(double coin, int source)
  403. {
  404. StatisticsClass.CallStatic("bonus", coin, source);
  405. PottingLog("_Bonus");
  406. }
  407. //得到道具奖励,itemName-道具名称,amount-数量,price-价格,source-奖励方法
  408. public static void _BonusItem(string itemName, int amount, double price, int source)
  409. {
  410. StatisticsClass.CallStatic("bonus", itemName, amount, price, source);
  411. PottingLog("_BonusItem");
  412. }
  413. /// <summary>
  414. /// 自定义埋点
  415. /// </summary>
  416. /// <param name="key">事件名字</param>
  417. /// <param name="lable">事件参数</param>
  418. public static void _CustomEvent(string key, Dictionary<string, string> lable)
  419. {
  420. var jsonString = Json.Serialize(lable);
  421. StatisticsClass.CallStatic("customEvent", key, jsonString);
  422. PottingLog("_CustomEvent--key");
  423. }
  424. /// <summary>
  425. /// facebook自定义埋点
  426. /// </summary>
  427. /// <param name="key">事件名字</param>
  428. /// <param name="lable">事件参数</param>
  429. public static void _CustomEventFacebook(string key, Dictionary<string, string> lable)
  430. {
  431. var jsonString = Json.Serialize(lable);
  432. StatisticsClass.CallStatic("customEventFacebook", key, jsonString);
  433. PottingLog("_CustomEvent--key");
  434. }
  435. public static void _CustomLogEventFacebook(string key, double valueToSum, Dictionary<string, string> lable)
  436. {
  437. var jsonString = Json.Serialize(lable);
  438. StatisticsClass.CallStatic("faceBookLogEvent", key, valueToSum, jsonString);
  439. PottingLog("_CustomLogEventFacebook");
  440. }
  441. /// <summary>
  442. /// firebase自定义埋点
  443. /// </summary>
  444. /// <param name="key">事件名字</param>
  445. /// <param name="lable">事件参数</param>
  446. public static void _CustomEventFirebase(string key, Dictionary<string, string> lable)
  447. {
  448. var jsonString = Json.Serialize(lable);
  449. StatisticsClass.CallStatic("customEventFirebase", key, jsonString);
  450. PottingLog("_CustomEvent--key");
  451. }
  452. /// <summary>
  453. /// appsflyer自定义埋点
  454. /// </summary>
  455. /// <param name="key">事件名字</param>
  456. /// <param name="lable">事件参数</param>
  457. public static void _CustomEventAppsflyer(string key, Dictionary<string, string> lable)
  458. {
  459. var jsonString = Json.Serialize(lable);
  460. StatisticsClass.CallStatic("customEventAf", key, jsonString);
  461. PottingLog("_CustomEvent--key");
  462. }
  463. /// <summary>
  464. /// umeng自定义埋点
  465. /// </summary>
  466. /// <param name="key">事件名字</param>
  467. /// <param name="lable">事件参数</param>
  468. public static void _CustomEventUmeng(string key, Dictionary<string, string> lable)
  469. {
  470. var jsonString = Json.Serialize(lable);
  471. StatisticsClass.CallStatic("customEventUm", key, jsonString);
  472. PottingLog("_CustomEvent--key");
  473. }
  474. //内购相关函数
  475. /// <summary>
  476. /// 调起内购,productId-内购产品ID
  477. /// </summary>
  478. /// <param name="productId">内购产品ID</param>
  479. public static void _InternalPay(string productId, string actId = "", string accountId = "youloft",
  480. string profileId = "youloft")
  481. {
  482. AndroidJavaObject PayClass = new AndroidJavaObject("com.youloft.googlepay.PayUtil");
  483. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  484. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  485. PayClass.Call("InternalPay", jo, productId, "inapp", actId, accountId, profileId);
  486. }
  487. /// <summary>
  488. /// 订阅
  489. /// </summary>
  490. /// <param name="productId">订阅的商品id</param>
  491. public static void Subscription(string productId, string actId = "")
  492. {
  493. AndroidJavaObject PayClass = new AndroidJavaObject("com.youloft.googlepay.PayUtil");
  494. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  495. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  496. PayClass.Call("InternalPay", jo, productId, "subs", actId);
  497. }
  498. /// <summary>
  499. /// 处理已支付没有消耗的订单
  500. /// </summary>
  501. /// <param name="skuType">inapp(应用内购买);subs(订阅)</param>
  502. public static void CheckPurchases(string skuType)
  503. {
  504. AndroidJavaObject PayClass = new AndroidJavaObject("com.youloft.googlepay.PayUtil");
  505. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  506. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  507. PayClass.Call("checkPurchases", jo, skuType);
  508. }
  509. //恢复购买相关函数
  510. /// <summary>
  511. /// 恢复购买相关函数 仅ios
  512. /// </summary>
  513. public static void _Restore()
  514. {
  515. }
  516. /// <summary>
  517. /// 查询商品价格
  518. /// </summary>
  519. /// <param name="skus">商品id</param>
  520. public static void _querySkuDetail(string[] skus)
  521. {
  522. var jsonString = Json.Serialize(skus);
  523. AndroidJavaObject PayClass = new AndroidJavaObject("com.youloft.googlepay.PayUtil");
  524. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  525. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  526. PayClass.Call("querySkuDetail", jo, jsonString);
  527. }
  528. /// <summary>
  529. /// 查询缓存的购买交易
  530. /// </summary>
  531. /// <param name="skuType">inapp(应用内购买);subs(订阅)</param>
  532. public static void QueryPurchases(string skuType)
  533. {
  534. AndroidJavaObject PayClass = new AndroidJavaObject("com.youloft.googlepay.PayUtil");
  535. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  536. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  537. PayClass.Call("queryPurchases", jo, skuType);
  538. }
  539. /// <summary>_LoadAppOpenAd
  540. /// 查询历史购买交易
  541. /// </summary>
  542. /// <param name="skuType">类型 inapp(应用内购买);subs(订阅)</param>
  543. public static void QueryHistoryPurchases(string skuType)
  544. {
  545. AndroidJavaObject PayClass = new AndroidJavaObject("com.youloft.googlepay.PayUtil");
  546. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  547. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  548. PayClass.Call("queryHistoryPurchases", jo, skuType);
  549. }
  550. //发送本地通知
  551. /// <summary>
  552. /// 发送本地通知
  553. /// </summary>
  554. /// <param name="id"></param>
  555. /// <param name="title">标题</param>
  556. /// <param name="content">内容</param>
  557. /// <param name="delayTime">延迟时间</param>
  558. public static void _SetLocalNotification(int id, string title, string content, int delayTime)
  559. {
  560. NotificationClass.CallStatic("SetLocalNotification", id, title, content, delayTime);
  561. }
  562. //取消单个本地通知
  563. /// <summary>
  564. /// 取消单个本地通知
  565. /// </summary>
  566. /// <param name="id">通知id</param>
  567. public static void _CancelLocalNotification(int id)
  568. {
  569. NotificationClass.CallStatic("CancelLocalNotification", id);
  570. }
  571. //取消全部本地通知
  572. /// <summary>
  573. /// 取消全部本地通知
  574. /// </summary>
  575. public static void _CancelAllLocalNotification()
  576. {
  577. NotificationClass.CallStatic("CancelAllLocalNotification");
  578. }
  579. /// <summary>
  580. /// 分享文本
  581. /// </summary>
  582. /// <param name="extraText">需要分享的文本</param>
  583. public static void _ShareText(string extraText)
  584. {
  585. AndroidJavaClass ShareUtilClass = new AndroidJavaClass("com.youloft.core.utils.ShareUtil");
  586. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  587. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  588. ShareUtilClass.CallStatic("shareText", jo, extraText);
  589. }
  590. public static void _InitApplePaySharedSecretKey(string sharedSecret)
  591. {
  592. }
  593. /// <summary>
  594. /// 游戏登录
  595. /// </summary>
  596. public static void _GameLogin()
  597. {
  598. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  599. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  600. if (GoogleGameManagerClass == null)
  601. {
  602. AndroidJavaClass jcgg = new AndroidJavaClass("com.youloft.google.GoogleGameManager");
  603. GoogleGameManagerClass = jcgg.CallStatic<AndroidJavaObject>("getInstance");
  604. }
  605. GoogleGameManagerClass.Call("loginGame", jo);
  606. }
  607. /// <summary>
  608. /// 加载存档
  609. /// </summary>
  610. public static void _LoadGame()
  611. {
  612. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  613. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  614. if (GoogleGameManagerClass == null)
  615. {
  616. AndroidJavaClass jcgg = new AndroidJavaClass("com.youloft.google.GoogleGameManager");
  617. GoogleGameManagerClass = jcgg.CallStatic<AndroidJavaObject>("getInstance");
  618. }
  619. GoogleGameManagerClass.Call("loadGame", jo, "gamesave");
  620. }
  621. /// <summary>
  622. /// 上传存档
  623. /// </summary>
  624. /// <param name="data">存档数据</param>
  625. public static void _SavedGame(string data)
  626. {
  627. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  628. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  629. if (GoogleGameManagerClass == null)
  630. {
  631. AndroidJavaClass jcgg = new AndroidJavaClass("com.youloft.google.GoogleGameManager");
  632. GoogleGameManagerClass = jcgg.CallStatic<AndroidJavaObject>("getInstance");
  633. }
  634. GoogleGameManagerClass.Call("saveGame", jo, "gamesave", data);
  635. }
  636. /// <summary>
  637. /// 加载存档
  638. /// </summary>
  639. /// <param name="name">存档名字</param>
  640. public static void _LoadGame(string name)
  641. {
  642. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  643. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  644. if (GoogleGameManagerClass == null)
  645. {
  646. AndroidJavaClass jcgg = new AndroidJavaClass("com.youloft.google.GoogleGameManager");
  647. GoogleGameManagerClass = jcgg.CallStatic<AndroidJavaObject>("getInstance");
  648. }
  649. GoogleGameManagerClass.Call("loadGame", jo, name);
  650. }
  651. /// <summary>
  652. /// 上传存档
  653. /// </summary>
  654. /// <param name="data">存档数据</param>
  655. /// <param name="name">存档名字</param>
  656. public static void _SavedGame(string name, string data)
  657. {
  658. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  659. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  660. if (GoogleGameManagerClass == null)
  661. {
  662. AndroidJavaClass jcgg = new AndroidJavaClass("com.youloft.google.GoogleGameManager");
  663. GoogleGameManagerClass = jcgg.CallStatic<AndroidJavaObject>("getInstance");
  664. }
  665. GoogleGameManagerClass.Call("saveGame", jo, name, data);
  666. }
  667. public static void _DeleteGame(string name)
  668. {
  669. }
  670. public static void _LoadAllGame()
  671. {
  672. }
  673. public static void _ResolveConflictGame(string name, string data)
  674. {
  675. }
  676. /// <summary>
  677. /// 显示排行榜
  678. /// </summary>
  679. ///
  680. public static void _ShowLeaderBoard()
  681. {
  682. if (GoogleGameManagerClass == null)
  683. {
  684. AndroidJavaClass jcgg = new AndroidJavaClass("com.youloft.google.GoogleGameManager");
  685. GoogleGameManagerClass = jcgg.CallStatic<AndroidJavaObject>("getInstance");
  686. }
  687. GoogleGameManagerClass.Call("showLeaderBoard");
  688. }
  689. /// <summary>
  690. /// 显示指定排行榜
  691. /// </summary>
  692. /// <param name="id">排行榜id</param>
  693. public static void _ShowLeaderBoard(string id, TimeSpan timeSpan)
  694. {
  695. if (GoogleGameManagerClass == null)
  696. {
  697. AndroidJavaClass jcgg = new AndroidJavaClass("com.youloft.google.GoogleGameManager");
  698. GoogleGameManagerClass = jcgg.CallStatic<AndroidJavaObject>("getInstance");
  699. }
  700. GoogleGameManagerClass.Call("showLeaderBoard", id, (int)timeSpan);
  701. }
  702. /// <summary>
  703. /// 拉取排行榜个人信息
  704. /// </summary>
  705. /// <param name="id">排行榜id</param>
  706. public static void _LoadLeaderBoard(string id, TimeSpan timeSpan)
  707. {
  708. if (GoogleGameManagerClass == null)
  709. {
  710. AndroidJavaClass jcgg = new AndroidJavaClass("com.youloft.google.GoogleGameManager");
  711. GoogleGameManagerClass = jcgg.CallStatic<AndroidJavaObject>("getInstance");
  712. }
  713. GoogleGameManagerClass.Call("loadLeaderBoard", id, (int)timeSpan);
  714. }
  715. /// <summary>
  716. /// 提交排行榜分数
  717. /// </summary>
  718. /// <param name="id">排行榜id</param>
  719. /// <param name="score">分数</param>
  720. public static void _SubmitLeaderBoardScore(string id, long score)
  721. {
  722. if (GoogleGameManagerClass == null)
  723. {
  724. AndroidJavaClass jcgg = new AndroidJavaClass("com.youloft.google.GoogleGameManager");
  725. GoogleGameManagerClass = jcgg.CallStatic<AndroidJavaObject>("getInstance");
  726. }
  727. GoogleGameManagerClass.Call("submitLeaderBoardScore", id, score);
  728. }
  729. /// <summary>
  730. /// 检查谷歌服务是否可用
  731. /// </summary>
  732. /// <returns>0-可用;</returns>
  733. public static int _isGooglePlayServicesAvailable()
  734. {
  735. AndroidJavaClass jcgg = new AndroidJavaClass("com.youloft.google.GoogleGameManager");
  736. return jcgg.CallStatic<int>("isGooglePlayServicesAvailable");
  737. }
  738. /// <summary>
  739. /// 打开谷歌应用内评论
  740. /// </summary>
  741. public static void launchReview()
  742. {
  743. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  744. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  745. AndroidJavaClass jcrm = new AndroidJavaClass("com.youloft.google.GoogleReviewManager");
  746. jcrm.CallStatic("launchReview", jo);
  747. }
  748. public static void _YouLoftGameInfo(Dictionary<string, string> lable)
  749. {
  750. _CustomEvent("youloftgameinfo", lable);
  751. }
  752. public static void _ShareImgByFacebook(string path)
  753. {
  754. AndroidJavaObject LoginClass = new AndroidJavaObject("com.youloft.login.LoginActivity");
  755. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  756. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  757. LoginClass.CallStatic("jumpShare", jo, path);
  758. }
  759. public static void _openFriendFinderDeepLink()
  760. {
  761. AndroidJavaObject LoginClass = new AndroidJavaObject("com.youloft.login.LoginUtils");
  762. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  763. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  764. LoginClass.CallStatic("openFriendFinderDeepLink", jo);
  765. }
  766. public static void _uploadPhoto(string path)
  767. {
  768. AndroidJavaObject LoginClass = new AndroidJavaObject("com.youloft.login.LoginUtils");
  769. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  770. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  771. LoginClass.CallStatic("uploadPhoto", jo, path);
  772. }
  773. public static void _uploadVideo(string path)
  774. {
  775. AndroidJavaObject LoginClass = new AndroidJavaObject("com.youloft.login.LoginUtils");
  776. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  777. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  778. LoginClass.CallStatic("uploadVideo", jo, path);
  779. }
  780. public static void _hideLoading()
  781. {
  782. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  783. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  784. jo.Call("hideLoading");
  785. }
  786. public static void _checkLicense()
  787. {
  788. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  789. AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  790. jo.Call("doCheck");
  791. }
  792. }