[M] sync with n3

This commit is contained in:
2024-11-28 14:00:57 +08:00
parent 5f81ddafed
commit 7401a30ebf
7 changed files with 177 additions and 54 deletions

View File

@@ -5,6 +5,7 @@ using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode; using UnityEditor.iOS.Xcode;
using UnityEditor; using UnityEditor;
using System.IO; using System.IO;
using System.Collections.Generic;
namespace tysdk.editor namespace tysdk.editor
{ {
@@ -46,7 +47,7 @@ namespace tysdk.editor
string mainContent = File.ReadAllText(mainAppPath); string mainContent = File.ReadAllText(mainAppPath);
string newContent = mainContent.Replace("#include <UnityFramework/UnityFramework.h>", @"#include ""../UnityFramework/UnityFramework.h"""); string newContent = mainContent.Replace("#include <UnityFramework/UnityFramework.h>", @"#include ""../UnityFramework/UnityFramework.h""");
File.WriteAllText(mainAppPath, newContent); File.WriteAllText(mainAppPath, newContent);
mainAppPath = Path.Combine(projPath, "Classes", "Preprocessor.h"); mainAppPath = Path.Combine(projPath, "Classes", "Preprocessor.h");
mainContent = File.ReadAllText(mainAppPath); mainContent = File.ReadAllText(mainAppPath);
newContent = mainContent.Replace("#define UNITY_USES_REMOTE_NOTIFICATIONS 0", "#define UNITY_USES_REMOTE_NOTIFICATIONS 1"); newContent = mainContent.Replace("#define UNITY_USES_REMOTE_NOTIFICATIONS 0", "#define UNITY_USES_REMOTE_NOTIFICATIONS 1");
@@ -74,20 +75,20 @@ namespace tysdk.editor
proj.AddBuildProperty(target, "OTHER_LDFLAGS", "-ObjC"); proj.AddBuildProperty(target, "OTHER_LDFLAGS", "-ObjC");
proj.AddFrameworkToProject(target, "AppTrackingTransparency.framework", false); proj.AddFrameworkToProject(target, "AppTrackingTransparency.framework", false);
proj.AddFrameworkToProject(target,"StoreKit.framework", false); proj.AddFrameworkToProject(target, "StoreKit.framework", false);
proj.AddFrameworkToProject(target,"CFNetwork.framework", false); proj.AddFrameworkToProject(target, "CFNetwork.framework", false);
proj.AddFrameworkToProject(target,"CoreTelephony.framework", false); proj.AddFrameworkToProject(target, "CoreTelephony.framework", false);
proj.AddFrameworkToProject(target,"Security.framework", false); proj.AddFrameworkToProject(target, "Security.framework", false);
proj.AddFrameworkToProject(target,"SystemConfiguration.framework", false); proj.AddFrameworkToProject(target, "SystemConfiguration.framework", false);
proj.AddFrameworkToProject(target,"libc++.tbd", false); proj.AddFrameworkToProject(target, "libc++.tbd", false);
proj.AddFrameworkToProject(target,"libsqlite3.tbd", false); proj.AddFrameworkToProject(target, "libsqlite3.tbd", false);
proj.AddFrameworkToProject(target,"libz.tbd", false); proj.AddFrameworkToProject(target, "libz.tbd", false);
proj.AddFrameworkToProject(target,"Accelerate.framework", false); proj.AddFrameworkToProject(target, "Accelerate.framework", false);
proj.AddFrameworkToProject(target,"AuthenticationServices.framework", false); proj.AddFrameworkToProject(target, "AuthenticationServices.framework", false);
proj.AddFrameworkToProject(target,"SafariServices.framework", false); proj.AddFrameworkToProject(target, "SafariServices.framework", false);
proj.AddFrameworkToProject(target,"LocalAuthentication.framework", false); proj.AddFrameworkToProject(target, "LocalAuthentication.framework", false);
proj.AddFrameworkToProject(target,"CoreGraphics.framework", false); proj.AddFrameworkToProject(target, "CoreGraphics.framework", false);
proj.AddFrameworkToProject(target,"WebKit.framework", false); proj.AddFrameworkToProject(target, "WebKit.framework", false);
} }
private static void ProcessPlist(string root) private static void ProcessPlist(string root)
@@ -98,16 +99,20 @@ namespace tysdk.editor
PlistElementDict infoDict = plist.root; PlistElementDict infoDict = plist.root;
PlistElementArray urlTypesArray = null; PlistElementArray urlTypesArray = null;
if (!infoDict.values.ContainsKey("CFBundleURLTypes")) { if (!infoDict.values.ContainsKey("CFBundleURLTypes"))
{
urlTypesArray = infoDict.CreateArray("CFBundleURLTypes"); urlTypesArray = infoDict.CreateArray("CFBundleURLTypes");
} else { }
else
{
urlTypesArray = infoDict.values["CFBundleURLTypes"].AsArray(); urlTypesArray = infoDict.values["CFBundleURLTypes"].AsArray();
} }
if (!infoDict.values.ContainsKey("NSUserActivityTypes")) { if (!infoDict.values.ContainsKey("NSUserActivityTypes"))
{
PlistElementArray userActivityTypes = infoDict.CreateArray("NSUserActivityTypes"); PlistElementArray userActivityTypes = infoDict.CreateArray("NSUserActivityTypes");
userActivityTypes.AddString("INSendMessageIntent"); userActivityTypes.AddString("INSendMessageIntent");
} }
else else
{ {
PlistElementArray userActivityTypes = infoDict.values["NSUserActivityTypes"].AsArray(); PlistElementArray userActivityTypes = infoDict.values["NSUserActivityTypes"].AsArray();
@@ -115,9 +120,12 @@ namespace tysdk.editor
} }
PlistElementArray queriesSchemesArray = null; PlistElementArray queriesSchemesArray = null;
if (!infoDict.values.ContainsKey("LSApplicationQueriesSchemes")) { if (!infoDict.values.ContainsKey("LSApplicationQueriesSchemes"))
{
queriesSchemesArray = infoDict.CreateArray("LSApplicationQueriesSchemes"); queriesSchemesArray = infoDict.CreateArray("LSApplicationQueriesSchemes");
} else { }
else
{
queriesSchemesArray = infoDict.values["LSApplicationQueriesSchemes"].AsArray(); queriesSchemesArray = infoDict.values["LSApplicationQueriesSchemes"].AsArray();
} }
@@ -134,8 +142,8 @@ namespace tysdk.editor
infoDict.SetBoolean("UIFileSharingEnabled", true); infoDict.SetBoolean("UIFileSharingEnabled", true);
// Google // Google
string googleClientID = "com.googleusercontent.apps.481260393117-88n0v3ht8ashhk0r5ri47hced7o5qj62"; string googleClientID = "com.googleusercontent.apps.481260393117-88n0v3ht8ashhk0r5ri47hced7o5qj62";
CreateURLTypes(urlTypesArray.AddDict(), "google", googleClientID); CreateURLTypes(urlTypesArray.AddDict(), "google", googleClientID);
//Facebook //Facebook
{ {
@@ -167,19 +175,59 @@ namespace tysdk.editor
queriesSchemesArray.AddString("fbapi20150629"); queriesSchemesArray.AddString("fbapi20150629");
queriesSchemesArray.AddString("fbapi20160328"); queriesSchemesArray.AddString("fbapi20160328");
} }
AddSKAdNetworkIdentifier(infoDict);
File.WriteAllText(plistPath, plist.WriteToString()); File.WriteAllText(plistPath, plist.WriteToString());
} }
private static void CreateURLTypes(PlistElementDict dict, string name, string scheme1) private static void AddSKAdNetworkIdentifier(PlistElementDict infoDict)
{ {
dict.SetString("CFBundleTypeRole", "Editor");
dict.SetString("CFBundleURLName", name); List<string> skadnetworks = new List<string>() {
dict.CreateArray("CFBundleURLSchemes"); "22mmun2rn5.skadnetwork", "238da6jt44.skadnetwork", "24t9a8vw3c.skadnetwork", "24zw6aqk47.skadnetwork", "252b5q8x7y.skadnetwork", "275upjj5gd.skadnetwork",
PlistElementArray schemes = dict.values["CFBundleURLSchemes"].AsArray(); "294l99pt4k.skadnetwork", "2fnua5tdw4.skadnetwork", "2u9pt9hc89.skadnetwork", "32z4fx6l9h.skadnetwork", "3l6bd9hu43.skadnetwork", "3qcr597p9d.skadnetwork",
"3qy4746246.skadnetwork", "3rd42ekr43.skadnetwork", "3sh42y64q3.skadnetwork", "424m5254lk.skadnetwork", "4468km3ulz.skadnetwork", "44jx6755aq.skadnetwork",
"44n7hlldy6.skadnetwork", "47vhws6wlr.skadnetwork", "488r3q3dtq.skadnetwork", "4dzt52r2t5.skadnetwork", "4fzdc2evr5.skadnetwork", "4mn522wn87.skadnetwork",
"4pfyvq9l8r.skadnetwork", "4w7y6s5ca2.skadnetwork", "523jb4fst2.skadnetwork", "52fl2v3hgk.skadnetwork", "54nzkqm89y.skadnetwork", "578prtvx9j.skadnetwork",
"5a6flpkh64.skadnetwork", "5f5u5tfb26.skadnetwork", "5l3tpt7t6e.skadnetwork", "5lm9lj6jb7.skadnetwork", "5tjdwbrq8w.skadnetwork", "6964rsfnh4.skadnetwork",
"6g9af3uyq4.skadnetwork", "6p4ks3rnbw.skadnetwork", "6v7lgmsu45.skadnetwork", "6xzpu9s2p8.skadnetwork", "6yxyv74ff7.skadnetwork", "737z793b9f.skadnetwork",
"74b6s63p6l.skadnetwork", "7953jerfzd.skadnetwork", "79pbpufp6p.skadnetwork", "7fmhfwg9en.skadnetwork", "7rz58n8ntl.skadnetwork", "7ug5zh24hu.skadnetwork",
"84993kbrcf.skadnetwork", "89z7zv988g.skadnetwork", "8c4e2ghe7u.skadnetwork", "8m87ys6875.skadnetwork", "8r8llnkz5a.skadnetwork", "8s468mfl3y.skadnetwork",
"97r2b46745.skadnetwork", "9b89h5y424.skadnetwork", "9g2aggbj52.skadnetwork", "9nlqeag3gk.skadnetwork", "9rd848q2bz.skadnetwork", "9t245vhmpl.skadnetwork",
"9vvzujtq5s.skadnetwork", "9yg77x724h.skadnetwork", "a2p9lx4jpn.skadnetwork", "a7xqa6mtl2.skadnetwork", "a8cz6cu7e5.skadnetwork", "av6w8kgt66.skadnetwork",
"b9bk5wbcq9.skadnetwork", "bxvub5ada5.skadnetwork", "c3frkrj4fj.skadnetwork", "c6k4g5qg8m.skadnetwork", "cg4yq2srnc.skadnetwork", "cj5566h2ga.skadnetwork",
"cp8zw746q7.skadnetwork", "cs644xg564.skadnetwork", "cstr6suwn9.skadnetwork", "cwn433xbcr.skadnetwork", "dbu4b84rxf.skadnetwork", "dkc879ngq3.skadnetwork",
"dzg6xy7pwj.skadnetwork", "e5fvkxwrpn.skadnetwork", "ecpz2srf59.skadnetwork", "eh6m2bh4zr.skadnetwork", "ejvt5qm6ak.skadnetwork", "f38h382jlk.skadnetwork",
"f73kdq92p3.skadnetwork", "f7s53z58qe.skadnetwork", "feyaarzu9v.skadnetwork", "g28c52eehv.skadnetwork", "g2y4y55b64.skadnetwork", "g6gcrrvk4p.skadnetwork",
"ggvn48r87g.skadnetwork", "glqzh8vgby.skadnetwork", "gta8lk7p23.skadnetwork", "gta9lk7p23.skadnetwork", "h65wbv5k3f.skadnetwork", "hb56zgv37p.skadnetwork",
"hdw39hrw9y.skadnetwork", "hs6bdukanm.skadnetwork", "k674qkevps.skadnetwork", "k6y4y55b64.skadnetwork", "kbd757ywx3.skadnetwork", "kbmxgpxpgc.skadnetwork",
"klf5c3l5u5.skadnetwork", "krvm3zuq6h.skadnetwork", "lr83yxwka7.skadnetwork", "ludvb6z3bs.skadnetwork", "m297p6643m.skadnetwork", "m5mvw97r93.skadnetwork",
"m8dbw4sv7c.skadnetwork", "mj797d8u6f.skadnetwork", "mlmmfzh3r3.skadnetwork", "mls7yz5dvl.skadnetwork", "mp6xlyr22a.skadnetwork", "mqn7fxpca7.skadnetwork",
"mtkv5xtk9e.skadnetwork", "n38lu8286q.skadnetwork", "n66cz3y3bx.skadnetwork", "n6fk4nfna4.skadnetwork", "n9x2a789qt.skadnetwork", "nzq8sh4pbs.skadnetwork",
"p78axxw29g.skadnetwork", "ppxm28t8ap.skadnetwork", "prcb7njmu6.skadnetwork", "pwa73g5rt2.skadnetwork", "pwdxu55a5a.skadnetwork", "qqp299437r.skadnetwork",
"qu637u8glc.skadnetwork", "r45fhb6rf7.skadnetwork", "rvh3l7un93.skadnetwork", "rx5hdcabgc.skadnetwork", "s39g8k73mm.skadnetwork", "s69wq72ugq.skadnetwork",
"su67r6k2v3.skadnetwork", "t38b2kh725.skadnetwork", "t6d3zquu66.skadnetwork", "tl55sbb4fm.skadnetwork", "tvvz7th9br.skadnetwork", "u679fj5vs4.skadnetwork",
"uw77j35x4d.skadnetwork", "v4nxqhlyqp.skadnetwork", "v72qych5uu.skadnetwork", "v79kvwwj4g.skadnetwork", "v9wttpbfk9.skadnetwork", "vcra2ehyfk.skadnetwork",
"vutu7akeur.skadnetwork", "w9q455wk68.skadnetwork", "wg4vff78zm.skadnetwork", "wzmmz9fp6w.skadnetwork", "x44k69ngh6.skadnetwork", "x5l83yy675.skadnetwork",
"x8jxxk4ff5.skadnetwork", "x8uqf25wch.skadnetwork", "xga6mpmplv.skadnetwork", "xy9t38ct57.skadnetwork", "y45688jllp.skadnetwork", "y5ghdn5j9k.skadnetwork",
"yclnxrl5pm.skadnetwork", "ydx93a7ass.skadnetwork", "z24wtl6j62.skadnetwork", "zmvfpc5aq8.skadnetwork", "zq492l623r.skadnetwork"
};
var items = infoDict.CreateArray("SKAdNetworkItems");
var key = "SKAdNetworkIdentifier";
foreach (var identifier in skadnetworks)
{
items.AddDict().SetString(key, identifier);
}
}
private static void CreateURLTypes(PlistElementDict dict, string name, string scheme1)
{
dict.SetString("CFBundleTypeRole", "Editor"); dict.SetString("CFBundleURLName", name);
dict.CreateArray("CFBundleURLSchemes");
PlistElementArray schemes = dict.values["CFBundleURLSchemes"].AsArray();
schemes.AddString(scheme1); schemes.AddString(scheme1);
} }
} }
} }
#endif #endif

View File

@@ -13,6 +13,12 @@ import com.barton.log.builder.ParamsBuilder;
import com.barton.log.ebarton.BaseUrl; import com.barton.log.ebarton.BaseUrl;
import com.barton.log.ebarton.EventType; import com.barton.log.ebarton.EventType;
import com.barton.log.logapi.IGASDK; import com.barton.log.logapi.IGASDK;
import com.google.android.gms.tasks.Task;
import com.google.android.play.core.review.ReviewException;
import com.google.android.play.core.review.ReviewInfo;
import com.google.android.play.core.review.ReviewManager;
import com.google.android.play.core.review.ReviewManagerFactory;
import com.google.android.play.core.review.model.ReviewErrorCode;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import com.tuyoo.gamesdk.api.SDKAPI; import com.tuyoo.gamesdk.api.SDKAPI;
@@ -32,7 +38,6 @@ import org.json.JSONObject;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
public class SDKManager { public class SDKManager {
private final static Handler handler = new Handler(Looper.getMainLooper()); private final static Handler handler = new Handler(Looper.getMainLooper());
@@ -41,10 +46,6 @@ public class SDKManager {
private static String curType = TuYooClientID.tyGuest; private static String curType = TuYooClientID.tyGuest;
public static void InitSDK(Activity activity) public static void InitSDK(Activity activity)
{ {
Log.e(TAG,"SDKManager:::InitSDK");
Log.e(TAG,"SDK_APPID:::" + ConfigManager.SDK_APPID);
Log.e(TAG,"SDK_CLIENTID:::" + ConfigManager.SDK_CLIENTID);
Log.e(TAG,"SDK_LOGIN_SERVER_URL:::" + ConfigManager.SDK_LOGIN_SERVER_URL);
activity.runOnUiThread(() -> { activity.runOnUiThread(() -> {
SDKAPI.getIns().lightModeEnable(); SDKAPI.getIns().lightModeEnable();
try { try {
@@ -80,7 +81,6 @@ public class SDKManager {
userInfoResult.put("result", userInfoReorganization); userInfoResult.put("result", userInfoReorganization);
result.put("respObj", userInfoResult); result.put("respObj", userInfoResult);
} else { } else {
Log.e(TAG,"errStr:::::" +s);
result.put("errStr", s); result.put("errStr", s);
} }
@@ -105,7 +105,6 @@ public class SDKManager {
@Override @Override
public void callback(int i, String s) { public void callback(int i, String s) {
Log.e(TAG,"SDKCallBack.Pay callback: " + i + " \n" + s);
SDKLog.i("SDKCallBack.Pay callback: " + i + " \n" + s); SDKLog.i("SDKCallBack.Pay callback: " + i + " \n" + s);
try { try {
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
@@ -137,7 +136,6 @@ public class SDKManager {
} }
public static void UnityGetIdentityFun(String type) { public static void UnityGetIdentityFun(String type) {
Log.e(TAG,"UnityGetIdentityFun : " + type);
SDKLog.i("UnityGetIdentityFun : " + type); SDKLog.i("UnityGetIdentityFun : " + type);
handler.post(new Runnable() { handler.post(new Runnable() {
@Override @Override
@@ -148,7 +146,6 @@ public class SDKManager {
} }
public static void UnityLogin(String type) { public static void UnityLogin(String type) {
Log.e(TAG,"UnityLogin : " + type);
SDKLog.i("UnityLogin : " + type); SDKLog.i("UnityLogin : " + type);
handler.post(new Runnable() { handler.post(new Runnable() {
@Override @Override
@@ -159,7 +156,6 @@ public class SDKManager {
} }
public static void UnityLogOutByChannel(String type) { public static void UnityLogOutByChannel(String type) {
// Log.e(TAG,"UnityLoginOut!!!");
SDKLog.i("UnityLoginOut : "); SDKLog.i("UnityLoginOut : ");
handler.post(() -> SDKAPI.getIns().logout(type)); handler.post(() -> SDKAPI.getIns().logout(type));
} }
@@ -340,7 +336,63 @@ public class SDKManager {
paramsBuilder.append(key, map.get(key).toString()); paramsBuilder.append(key, map.get(key).toString());
} }
} }
GetGameGa().track(EventType.TRACK, eventstr, paramsBuilder); // GA_TRACK = 1, //默认类型
// GA_CION = 2, //金流相关事件
// GA_PAY = 3, //支付相关事件
// GA_GAME = 4, //游戏行为
// GA_LOGIN = 5, //登录注册相关事件
// GA_PUSH = 6, //推送相关事件
// GA_ADBOX = 7, //adbox相关事件
// GA_PREFORMANCE = 8, //性能上报相关事件
// GA_SDK = 9, //SDK相关事件
// GA_ABTest = 10, //abtest相关事件
switch (type)
{
case 2:
GetGameGa().track(EventType.COIN , eventstr, paramsBuilder);
break;
case 3:
GetGameGa().track(EventType.PAY , eventstr, paramsBuilder);
break;
case 4:
GetGameGa().track(EventType.GAME , eventstr, paramsBuilder);
break;
case 5:
GetGameGa().track(EventType.LOGIN , eventstr, paramsBuilder);
break;
case 6:
GetGameGa().track(EventType.PUSH , eventstr, paramsBuilder);
break;
case 7:
GetGameGa().track(EventType.ADBOX , eventstr, paramsBuilder);
break;
case 8:
GetGameGa().track(EventType.PREFORMANCE , eventstr, paramsBuilder);
break;
case 9:
GetGameGa().track(EventType.SDK , eventstr, paramsBuilder);
break;
default:
GetGameGa().track(EventType.TRACK , eventstr, paramsBuilder);
break;
}
}
public static void Review()
{
ReviewManager manager = ReviewManagerFactory.create(SDKWrapper.getInstance().getContext());
Task<ReviewInfo> request = manager.requestReviewFlow();
request.addOnCompleteListener(reqTask -> {
if (reqTask.isSuccessful()) {
ReviewInfo reviewInfo = reqTask.getResult();
Activity activity = UnityPlayer.currentActivity;
manager.launchReviewFlow(activity, reviewInfo);
} else {
@ReviewErrorCode int reviewErrorCode = ((ReviewException) request.getException()).getErrorCode();
Log.e(TAG,"Review Error code: " + reviewErrorCode);
}
});
} }
} }

View File

@@ -2,7 +2,7 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <XYSDK/XYSDK.h> #import <XYSDK/XYSDK.h>
#import <GASDK/GAConstants.h> #import <GASDK/GAConstants.h>
#import <GASDK/GASDK.h> #import <GASDK/GASDK.h>
#import "TYConfig.h" #import "TYConfig.h"
#define TOKEN_ERROR @"-8" #define TOKEN_ERROR @"-8"
@@ -228,9 +228,10 @@ extern "C" {
NSError* err; NSError* err;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err]; NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err];
if(!err){ if(!err){
[[GASDK getGAlog:SDK_PROJECTID] initWithGameId:SDK_GAMEID clientId:SDK_CLIENTID withCommonParams:dic serverUrl:GA_INTERNATIONAL]; NSString* nsEvent = [NSString stringWithFormat: @"%s", eventstr];
GASDK *gaSDK = [GASDK getGAlog:SDK_PROJECTID];
[gaSDK track:dic type:GAEventType(type) event:nsEvent];
} }
} }
void LinkGoogle(const int userId) void LinkGoogle(const int userId)

View File

@@ -8,7 +8,7 @@ namespace tysdk
#if UNITY_EDITOR || UNITY_ANDROID #if UNITY_EDITOR || UNITY_ANDROID
public static void RequestReview(string customReviewURL) public static void RequestReview(string customReviewURL)
{ {
Debug.Log("RequestReview is not supported on this platform"); tysdk.UnityBridgeFunc.Review();
} }
#elif UNITY_IOS #elif UNITY_IOS
[DllImport("__Internal")] [DllImport("__Internal")]

View File

@@ -3,6 +3,8 @@ using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using UnityEngine; using UnityEngine;
using System;
using System.Text;
namespace tysdk namespace tysdk
{ {
@@ -19,25 +21,22 @@ namespace tysdk
=================================================*/ =================================================*/
//public async Task<PaymentInfo> Pay(string prodId, string prodPrice, string prodName, int count, string pType, string price_amount_micros =null) //public async Task<PaymentInfo> Pay(string prodId, string prodPrice, string prodName, int count, string pType, string price_amount_micros =null)
public async Task<PaymentInfo> Pay(SKUDetail prod, int count, float usdprice) public async Task<PaymentInfo> Pay(SKUDetail prod, int count, float usdprice, JObject purchaseInfo)
{ {
if (!IsLoggedIn) return new PaymentInfo() { code = "-1", msg = "未登录" }; if (!IsLoggedIn) return new PaymentInfo() { code = "-1", msg = "未登录" };
var orderId = System.Guid.NewGuid().ToString(); var orderId = System.Guid.NewGuid().ToString();
Dictionary<string, object> extraDic = new Dictionary<string, object>() { if(purchaseInfo == null)
{"paytime" , System.DateTime.UtcNow.Ticks}, purchaseInfo = new JObject();
{"sum" , prod.ProdPrice * count},
};
string extraInfo = purchaseInfo.ToString(Newtonsoft.Json.Formatting.None);
string extraInfo = Newtonsoft.Json.JsonConvert.SerializeObject(extraDic);
//to base64 //to base64
extraInfo = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(extraInfo)); extraInfo = Convert.ToBase64String(Encoding.UTF8.GetBytes(extraInfo));
Debug.Log("[TYSdk] extraInfo: " + extraInfo);
var prodId = prod.ProdID; var prodId = prod.ProdID;
var prodPrice = usdprice.ToString(); var prodPrice = usdprice.ToString();
var prodName = prod.title; var prodName = prod.title;
var pType = "googleiab.global.app";
#if UNITY_EDITOR #if UNITY_EDITOR
@@ -55,6 +54,8 @@ namespace tysdk
return result; return result;
#elif UNITY_ANDROID #elif UNITY_ANDROID
var pType = "googleiab.global.app";
var taskSource = new TaskCompletionSource<PaymentInfo>(); var taskSource = new TaskCompletionSource<PaymentInfo>();
callbacks.Add("PayResult", (ITYSdkCallback callback) => callbacks.Add("PayResult", (ITYSdkCallback callback) =>

View File

@@ -36,7 +36,9 @@ namespace tysdk
public class PaymentInfo : ITYSdkCallback public class PaymentInfo : ITYSdkCallback
{ {
public bool isSuccess => code == "0"; public bool isSuccessFromSdk => code == "0";
public bool isSuccess => isSuccessFromSdk && confirmed;
private bool confirmed {get; set;} = false;
public int count; public int count;
public string orderId; public string orderId;
public string productId; public string productId;
@@ -45,6 +47,15 @@ namespace tysdk
public string code; public string code;
public string msg; public string msg;
public bool Check(string orderId, string productId)
{
confirmed = orderId == this.orderId && productId == this.productId;
if(!confirmed)
UnityEngine.Debug.LogWarning("[TYSdk Pay] order not confirmed");
return confirmed;
}
public override string ToString() public override string ToString()
{ {
return Newtonsoft.Json.JsonConvert.SerializeObject(this); return Newtonsoft.Json.JsonConvert.SerializeObject(this);

View File

@@ -50,6 +50,8 @@ namespace tysdk
public static int GetATT() {return 1;} public static int GetATT() {return 1;}
public static void Review() { }
#elif UNITY_ANDROID #elif UNITY_ANDROID
private static string SDK_CLASS = "com.unity3d.player.SDKManager"; private static string SDK_CLASS = "com.unity3d.player.SDKManager";
@@ -195,6 +197,14 @@ namespace tysdk
public static int GetATT() {return 1;} public static int GetATT() {return 1;}
public static void Review()
{
using(var sdkManager = new AndroidJavaClass(SDK_CLASS))
{
sdkManager.CallStatic("Review");
}
}
#elif UNITY_IOS #elif UNITY_IOS