Compare commits

...

18 Commits

57 changed files with 1548 additions and 101 deletions

5
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,5 @@
{
"recommendations": [
"visualstudiotoolsforunity.vstuc"
]
}

10
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,10 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to Unity",
"type": "vstuc",
"request": "attach"
}
]
}

56
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,56 @@
{
"files.exclude": {
"**/.DS_Store": true,
"**/.git": true,
"**/.gitmodules": true,
"**/*.booproj": true,
"**/*.pidb": true,
"**/*.suo": true,
"**/*.user": true,
"**/*.userprefs": true,
"**/*.unityproj": true,
"**/*.dll": true,
"**/*.exe": true,
"**/*.pdf": true,
"**/*.mid": true,
"**/*.midi": true,
"**/*.wav": true,
"**/*.gif": true,
"**/*.ico": true,
"**/*.jpg": true,
"**/*.jpeg": true,
"**/*.png": true,
"**/*.psd": true,
"**/*.tga": true,
"**/*.tif": true,
"**/*.tiff": true,
"**/*.3ds": true,
"**/*.3DS": true,
"**/*.fbx": true,
"**/*.FBX": true,
"**/*.lxo": true,
"**/*.LXO": true,
"**/*.ma": true,
"**/*.MA": true,
"**/*.obj": true,
"**/*.OBJ": true,
"**/*.asset": true,
"**/*.cubemap": true,
"**/*.flare": true,
"**/*.mat": true,
"**/*.meta": true,
"**/*.prefab": true,
"**/*.unity": true,
"build/": true,
"Build/": true,
"Library/": true,
"library/": true,
"obj/": true,
"Obj/": true,
"ProjectSettings/": true,
"temp/": true,
"Temp/": true
},
"dotnet.defaultSolution": "SDK_UnityMoney.sln",
"git.ignoreLimitWarning": true
}

View File

Before

Width:  |  Height:  |  Size: 280 KiB

After

Width:  |  Height:  |  Size: 280 KiB

View File

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -0,0 +1,127 @@
fileFormatVersion: 2
guid: a8d31fbeeee87204e88e6c444284262e
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -0,0 +1,127 @@
fileFormatVersion: 2
guid: 4886e0d9173712146b255852a9672dfe
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@ -0,0 +1,127 @@
fileFormatVersion: 2
guid: 213035b3454d9394598755a9d193e711
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,127 @@
fileFormatVersion: 2
guid: aacf2638ee9d7ef4d86faa3688b8ff67
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -32,8 +32,8 @@ namespace EFSDK
public EFSdk()
{
Debug.Log($"GetNewSDKClass():{GetNewSDKClass()}");
Debug.Log($"initSDK():{ GenerateAndroidName("initSDK")}");
Debug.Log($"initSDK():{GenerateAndroidName("initSDK")}");
// java interface class
using (AndroidJavaClass jc = new AndroidJavaClass(GetNewSDKClass()))
{
@ -46,7 +46,7 @@ namespace EFSDK
private static string GetNewSDKClass()
{
return GetSDKPackage() + GenerateAndroidName(oriSDK);
return GetSDKPackage() + GenerateAndroidName(oriSDK);
}
private static string GetSDKPackage()
@ -61,8 +61,9 @@ namespace EFSDK
string newPName = "";
for (int i = 0; i < parts2.Length; i++)
{
newPName+=parts2[i]+".";
newPName += parts2[i] + ".";
}
return newPName;
}
@ -97,6 +98,7 @@ namespace EFSDK
{
sub = "a" + sub;
}
return sub;
}
@ -180,7 +182,7 @@ namespace EFSDK
SDKCall("initSDK", mappingInfo);
ActionCallback?.Invoke(ActionType.SDK_INIT_Succ, string.Empty);
}
/// <summary>
/// 当游戏进程启动之后,可以接收响应的时候(一般在游戏内事件上报相关内容初始化完毕调用即可,参数传true),调用这个方法通知SDK,
/// SDK收到通知后会开始将SDK侧的事件回传给游戏,作事件上报
@ -447,5 +449,66 @@ namespace EFSDK
}
#endregion
#region
public enum WidgetType
{
Widget3X2 = 1,
Widget5X1 = 2,
}
/// <summary>
/// 获取指定类型的小组件是否已添加到桌面
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public bool IsWidgetAdded(WidgetType type)
{
return SDKCall<bool>("isWidgetAdded", (int)type);
}
public Action<bool> actionRequestAddWidgetResult = null;
/// <summary>
/// 将指定类型的小组件添加到桌面(小组件采用默认样式)
/// </summary>
/// <param name="type"></param>
/// <param name="action">小组件添加结果回调</param>
/// <returns></returns>
public void RequestAddWidget(WidgetType type, Action<bool> action)
{
actionRequestAddWidgetResult = action;
SDKCall("requestAddWidget", (int)type);
}
/// <summary>
/// 请求将Widget3X2添加到桌面,并自定义文案
/// </summary>
/// <param name="title1">标题1文案</param>
/// <param name="title2">标题2文案</param>
/// <param name="progressStr">进度条上的文案</param>
/// <param name="buttonStr">按钮的文案</param>
/// <param name="action">小组件添加结果回调</param>
public void RequestAddWidget3x2(string title1, string title2, string progressStr, string buttonStr,
Action<bool> action)
{
actionRequestAddWidgetResult = action;
SDKCall("requestAddWidget3x2", title1, title2, progressStr, buttonStr);
}
/// <summary>
/// 请求将 Widget5X1 添加到桌面,并自定义文案
/// </summary>
/// <param name="content">内容文案</param>
/// <param name="action">小组件添加结果回调</param>
/// <param name="contentTextColor">文案文字十六进制颜色值,如: #FFFFFF</param>
public void RequestAddWidget5x1(string content, Action<bool> action, string contentTextColor = "#FFFFFF")
{
actionRequestAddWidgetResult = action;
SDKCall("requestAddWidget5x1", content, contentTextColor);
}
#endregion
}
}
}

View File

@ -9,6 +9,8 @@ namespace EFSDK
private string H5_Load_Succ = "H5_Load_Succ";
private string On_Resume = "onResume";
private string Can_Goback = "canGoback";
private string reqNotifyPermission = "reqNotifyPermission";
private string REQUEST_ADD_WIDGET_RESULT = "requestAddWidgetResult";
public void OnReceiverAnd(string message)
{
@ -31,11 +33,17 @@ namespace EFSDK
EFSdk.get().ActionCallback?.Invoke(EFSdk.ActionType.H5_Load_Succ, parts[1]);
}
if (message.StartsWith("reqNotifyPermission#"))
if (message.StartsWith(reqNotifyPermission))
{
string[] flag = message.Split('#');
EFSdk.get().mReqNotifyPermissionAction?.Invoke(flag[1].Equals("1"));
}
if (message.StartsWith(REQUEST_ADD_WIDGET_RESULT))
{
string[] flag = message.Split('#');
EFSdk.get().actionRequestAddWidgetResult?.Invoke(flag[2].Equals("true"));
}
if (message.StartsWith("Event#"))
{

View File

@ -52,7 +52,7 @@ namespace EFSDK
if (File.Exists(aarPath)) File.Delete(aarPath);
IOCompression.ZipFile.CreateFromDirectory(TempDir, aarPath, IOCompression.CompressionLevel.Optimal, false);
Debug.Log($"✅ AAR built: {aarPath}");
Debug.Log($"✅ AAR built:"+aarPath);
// 生成压缩 JSON (key 只保留文件名)
Dictionary<string, string> simpleMapping = new Dictionary<string, string>();
@ -68,6 +68,7 @@ namespace EFSDK
// 映射文件
string mappingPath = Path.Combine(TempDir, "res_mapping.json");
File.WriteAllText(mappingPath, mappingJson);
Debug.Log($"✅ AAR 资源文件构建成功! mappingJson:"+mappingJson);
// 清理临时目录
Directory.Delete(TempDir, true);
@ -95,8 +96,8 @@ namespace EFSDK
string key = Path.GetFileNameWithoutExtension(relativePath); // 可以保留目录信息
string value = string.IsNullOrEmpty(relativeDir) ? newName : $"{relativeDir}/{newName}";
string fileNameWithoutExt = Path.GetFileNameWithoutExtension(value);
mapping[key] = fileNameWithoutExt;
// mapping[key] = fileNameWithoutExt;
mapping.Add(key, fileNameWithoutExt);
// 目标路径
string dstPath = Path.Combine(dstDir, value.Replace("/", Path.DirectorySeparatorChar.ToString()));
@ -140,7 +141,14 @@ namespace EFSDK
{
string ext = Path.GetExtension(filePath);
string oriFileName = Path.GetFileNameWithoutExtension(filePath);
if (filePath.EndsWith(".9.png"))
{
ext = ".9.png";
oriFileName = Path.GetFileName(filePath).Replace(".9.png","");
}
string md5Str = GetFirstEightWithUnderscore(GetMD5Hash(Application.identifier + oriFileName + oriFileName));
Debug.Log($"原名:{oriFileName} 后缀:{ext} 生成文件名:{md5Str + ext}");
return md5Str + ext;
}

View File

@ -4,6 +4,7 @@ using BigoAds.Scripts.Platforms.Android;
using KwaiAds.Scripts.Api;
using KwaiAds.Scripts.Common;
using UnityEngine;
using WZ;
namespace KwaiAds.Scripts.Platforms.Android
{
@ -126,7 +127,10 @@ namespace KwaiAds.Scripts.Platforms.Android
{
AndroidJavaObject contextObject = currentActivity.Call<AndroidJavaObject>("getApplicationContext");
Debug.Log("Android Context: " + contextObject.Call<string>("toString"));
kwaiAdSdkClass.CallStatic("init", contextObject, sdkConfigBuilder.Call<AndroidJavaObject>("build"));
if (!KwaiAdsManager.UseToponInitKwai())
{
kwaiAdSdkClass.CallStatic("init", contextObject, sdkConfigBuilder.Call<AndroidJavaObject>("build"));
}
}
else
{

View File

@ -147,6 +147,7 @@ namespace KwaiAds.Scripts.Platforms.Android
public void onAdLoadSuccess(string trackId, AndroidJavaObject kwaiInterstitialAd)
{
if (string.IsNullOrEmpty(trackId) || kwaiInterstitialAd == null || _InterstitialAdLoadListener == null) return;
_KwaiInterstitialAdController._KwaiInterstitialAd = kwaiInterstitialAd;
string price = kwaiInterstitialAd.Call<string>("getPrice");
Debug.Log($"{TAG}: onAdLoaded: {kwaiInterstitialAd.Call<string>("getPrice")}");

View File

@ -134,6 +134,7 @@ namespace KwaiAds.Scripts.Platforms.Android
{
this._RewardAdLoadListener = rewardAdListener;
this._KwaiRewardAdController = kwaiRewardAdController;
Debug.Log("yangwu AdLoadListener:"+rewardAdListener+" kwaiRewardAdController:"+kwaiRewardAdController);
}
public void onAdLoadStart(string trackId)
@ -147,6 +148,7 @@ namespace KwaiAds.Scripts.Platforms.Android
public void onAdLoadSuccess(string trackId, AndroidJavaObject kwaiRewardAd)
{
if (string.IsNullOrEmpty(trackId) || kwaiRewardAd == null || _KwaiRewardAdController == null) return;
_KwaiRewardAdController._KwaiRewardAd = kwaiRewardAd;
string price = kwaiRewardAd.Call<string>("getPrice");
Debug.Log($"{TAG}: onAdLoaded: {kwaiRewardAd.Call<string>("getPrice")}");

Binary file not shown.

View File

@ -812,6 +812,85 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 339569235}
m_CullTransparentMesh: 1
--- !u!1 &354948052
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 354948053}
- component: {fileID: 354948055}
- component: {fileID: 354948054}
m_Layer: 5
m_Name: Text (Legacy)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &354948053
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 354948052}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1284311697}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &354948054
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 354948052}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 30
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: InitSDK
--- !u!222 &354948055
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 354948052}
m_CullTransparentMesh: 1
--- !u!1 &519420028
GameObject:
m_ObjectHideFlags: 0
@ -904,6 +983,139 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &522373770
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 522373771}
- component: {fileID: 522373774}
- component: {fileID: 522373773}
- component: {fileID: 522373772}
m_Layer: 5
m_Name: Button-topon-IsInit
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &522373771
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 522373770}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1467558789}
m_Father: {fileID: 1332931146}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 160, y: 81.78003}
m_Pivot: {x: 0, y: 1}
--- !u!114 &522373772
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 522373770}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 522373773}
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 1332931147}
m_TargetAssemblyTypeName: Test, Assembly-CSharp
m_MethodName: ToponKwaiIsInit
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!114 &522373773
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 522373770}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!222 &522373774
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 522373770}
m_CullTransparentMesh: 1
--- !u!1 &522908628
GameObject:
m_ObjectHideFlags: 0
@ -2165,6 +2377,139 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1263400539}
m_CullTransparentMesh: 1
--- !u!1 &1284311696
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1284311697}
- component: {fileID: 1284311700}
- component: {fileID: 1284311699}
- component: {fileID: 1284311698}
m_Layer: 5
m_Name: Button-topon-Init
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1284311697
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1284311696}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 354948053}
m_Father: {fileID: 1332931146}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 245, y: 0}
m_SizeDelta: {x: 160, y: 81.78003}
m_Pivot: {x: 0, y: 1}
--- !u!114 &1284311698
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1284311696}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 1284311699}
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 1332931147}
m_TargetAssemblyTypeName: Test, Assembly-CSharp
m_MethodName: ToponKwaiInitSDK
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!114 &1284311699
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1284311696}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!222 &1284311700
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1284311696}
m_CullTransparentMesh: 1
--- !u!1 &1332931142
GameObject:
m_ObjectHideFlags: 0
@ -2273,6 +2618,8 @@ RectTransform:
- {fileID: 339569236}
- {fileID: 5579540}
- {fileID: 1601333711}
- {fileID: 522373771}
- {fileID: 1284311697}
- {fileID: 1979832641}
- {fileID: 1439137377}
m_Father: {fileID: 0}
@ -2448,6 +2795,85 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1439137376}
m_CullTransparentMesh: 1
--- !u!1 &1467558788
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1467558789}
- component: {fileID: 1467558791}
- component: {fileID: 1467558790}
m_Layer: 5
m_Name: Text (Legacy)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1467558789
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1467558788}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 522373771}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1467558790
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1467558788}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 30
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Topon Is Init
--- !u!222 &1467558791
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1467558788}
m_CullTransparentMesh: 1
--- !u!1 &1560301798
GameObject:
m_ObjectHideFlags: 0

View File

@ -186,6 +186,7 @@ namespace WZ
public bool IsInterstitialAvailable()
{
if (!_initialized || _interstitialAdUnits.Count == 0) return false;
return _admobInterstitialAdManager.GetAvailableAdUnits().Count > 0;
}
@ -321,7 +322,7 @@ namespace WZ
public bool IsNativeAvailable(string adUnitId)
{
return _admobNativeAdManager.IsAdAvailable(adUnitId);
return _admobNativeAdManager?.IsAdAvailable(adUnitId) ?? false;
}
public void DisplayNative(string _adPos, string adUnitId, NativeAdPosition position)

View File

@ -27,6 +27,7 @@ namespace WZ
private Dictionary<string, int> _retryCounters = new Dictionary<string, int>();
private Dictionary<string, float> _adStartLoadTimes = new Dictionary<string, float>();
private Dictionary<string, ShowNativePosition> showingNativeAds = new();
private Dictionary<string, bool> TimingRefreshDict = new();
public void InitializeAdUnits(List<string> adUnitIds)
{
@ -128,7 +129,7 @@ namespace WZ
adUnitId,
AdsType.Native,
AdmobUtils.GetNativeEcpm(ad));
_retryCounters[adUnitId] = 0;
@ -143,8 +144,8 @@ namespace WZ
ad.OnAdPaid += (AdValue adValue) =>
{
LoggerUtils.Debug($"[Admob] Native ad paid {adValue.Value} {adValue.CurrencyCode}.");
AdmobAdsManager.Instance.TrackAdImpression(ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo().AdSourceName??"",
ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo().AdSourceInstanceId??"",
AdmobAdsManager.Instance.TrackAdImpression(ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo().AdSourceName ?? "",
ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo().AdSourceInstanceId ?? "",
adValue,
AdsType.Native,
adUnitId);
@ -275,6 +276,16 @@ namespace WZ
private void TimingRefresh(string adUnitId)
{
// 同一个id只允许触发一次定时刷新。 避免多次调用show ,多次来触发刷新
if (TimingRefreshDict.TryGetValue(adUnitId, out var timingRefresh))
{
if (timingRefresh)
{
LoggerUtils.Debug($"[Admob] Native ad ({adUnitId}) timing refresh finished. 正在刷新中.不用重复刷新.");
return;
}
}
var nativeReflashGap = int.Parse(FireBaseRemoteConfigManager.Instance.GetRemoteConfigString("Native_Reflash_Gap", "0"));
if (nativeReflashGap <= 0)
@ -295,10 +306,15 @@ namespace WZ
return;
}
LoggerUtils.Debug($"[Admob] Native ad ({adUnitId}) timing refresh start. nativeReflashGap = {nativeReflashGap}");
TimingRefreshDict.AddIfNotExists(adUnitId, true);
WLoom.QueueOnMainThread(o =>
{
var refreshAdUnitId = (string)o;
LoggerUtils.Debug($"[Admob] Native ad ({adUnitId}) timing refresh load start refreshAdUnitId : {refreshAdUnitId}.");
var remove = TimingRefreshDict.Remove(refreshAdUnitId);
LoggerUtils.Debug($"[Admob] Native ad ({adUnitId}) timing refresh load start refreshAdUnitId : {refreshAdUnitId}. TimingRefreshDict.Remove = {remove}");
if (showingNativeAds.ContainsKey(refreshAdUnitId))
{
LoadAd(refreshAdUnitId, true);
@ -332,10 +348,10 @@ namespace WZ
public string GetHighestPayingAdUnit()
{
return _adRevenueCache
.Where(kvp => IsAdAvailable(kvp.Key))
.OrderByDescending(kvp => kvp.Value)
.Select(kvp => kvp.Key)
.FirstOrDefault();
.Where(kvp => IsAdAvailable(kvp.Key))
.OrderByDescending(kvp => kvp.Value)
.Select(kvp => kvp.Key)
.FirstOrDefault();
}
// 获取价格最高的广告收益信息

View File

@ -27,9 +27,9 @@ namespace WZ
private void InitializeAdNetworks()
{
_adNetworks.Add(TpnAdsManager.Instance);
_adNetworks.Add(AdmobAdsManager.Instance);
_adNetworks.Add(BigoAdsManager.Instance);
_adNetworks.Add(TpnAdsManager.Instance);
_adNetworks.Add(MaxAdsManager.Instance);
_adNetworks.Add(KwaiAdsManager.Instance);
foreach (var network in _adNetworks)

View File

@ -16,6 +16,7 @@ namespace WZ
if (string.IsNullOrEmpty(json))
{
LoggerUtils.Error("KwaiBiddingConfig JSON string is null or empty");
return;
}
if (isRv)
@ -37,56 +38,32 @@ namespace WZ
public static bool GetKwaiRvFloorOpen()
{
if (_rvConfig == null)
{
return false;
}
return _rvConfig.kwai_floor_open == 1;
return _rvConfig?.kwai_floor_open == 1;
}
public static int GetRvParallelRequests()
{
if (_rvConfig == null)
{
return 0;
}
return _rvConfig.parallel_requests;
return _rvConfig?.parallel_requests ?? 0;
}
public static List<FloorConfig> GetRvFloorConfigs()
{
if (_rvConfig == null)
{
return null;
}
return _rvConfig.floors;
return _rvConfig?.floors ?? null;
}
public static bool GetKwaiIvFloorOpen()
{
if (_ivConfig == null)
{
return false;
}
return _ivConfig.kwai_floor_open == 1;
return _ivConfig?.kwai_floor_open == 1;
}
public static int GetIvParallelRequests()
{
if (_ivConfig == null)
{
return 0;
}
return _ivConfig.parallel_requests;
return _ivConfig?.parallel_requests ?? 0;
}
public static List<FloorConfig> GetIvFloorConfigs()
{
if (_ivConfig == null)
{
return null;
}
return _ivConfig.floors;
return _ivConfig?.floors ?? null;
}
public static string GetKwaiAppId()

View File

@ -38,9 +38,6 @@ namespace WZ
public void Initialize()
{
LoggerUtils.Debug("KwaiAdsManager Initialize start" + _appId + " token:" + _token + " rewardAdUnitId:" + _rewardAdUnitId + " interstitialAdUnitId:" + _interstitialAdUnitId);
if (string.IsNullOrEmpty(_appId) || string.IsNullOrEmpty(_token) || _initialized) return;
if (KwaiAdsConfigParser.GetKwaiRvFloorOpen())
{
KwaiFloorRvManager.Instance.InitializeWithFloors();
@ -50,46 +47,82 @@ namespace WZ
{
KwaiFloorIvManager.Instance.InitializeWithFloors();
}
var kwaiAdConfig = new KwaiAds.Scripts.Api.KwaiAdConfig.Builder()
.SetAppId(_appId)
.SetToken(_token)
.SetDebugLog(false)
.Build();
KwaiAds.Scripts.Api.KwaiAdsSdk.Initialize(kwaiAdConfig, new InitResultCallbackImpl());
LoggerUtils.Debug("KwaiAdsManager Initialize start" + _appId + " token:" + _token + " rewardAdUnitId:" + _rewardAdUnitId + " interstitialAdUnitId:" + _interstitialAdUnitId + " useToponKwai:" + UseToponInitKwai());
_initialized = true;
if (UseToponInitKwai())
{
if (!string.IsNullOrEmpty(_appId) && !string.IsNullOrEmpty(_token))
{
ToponKwaiUtils.InitSDK(_appId, _token, (res, msg) =>
{
LoggerUtils.Debug("KwaiAdsManager is init topon" + ToponKwaiUtils.IsInit() + " res:" + res.ToString() + " msg:" + msg);
if (res)
{
var kwaiAdConfig = new KwaiAds.Scripts.Api.KwaiAdConfig.Builder()
.SetAppId(_appId)
.SetToken(_token)
.SetDebugLog(false)
.Build();
KwaiAds.Scripts.Api.KwaiAdsSdk.Initialize(kwaiAdConfig, new InitResultCallbackImpl());
_initialized = true;
LoadInterstitial();
LoadRewarded();
}
});
}
}
else
{
LoggerUtils.Debug("KwaiAdsManager RefreshAdsData" + _appId + " token:" + _token + " rewardAdUnitId:" + _rewardAdUnitId + " interstitialAdUnitId:" + _interstitialAdUnitId + " init:" + _initialized);
if (string.IsNullOrEmpty(_appId) || string.IsNullOrEmpty(_token) || _initialized) return;
var kwaiAdConfig = new KwaiAds.Scripts.Api.KwaiAdConfig.Builder()
.SetAppId(_appId)
.SetToken(_token)
.SetDebugLog(false)
.Build();
KwaiAds.Scripts.Api.KwaiAdsSdk.Initialize(kwaiAdConfig, new InitResultCallbackImpl());
_initialized = true;
}
}
public static bool UseToponInitKwai()
{
return RushSDKManager.Instance.GetRemoteConfigStr("use_topon_kwai", "1").Equals("1");
}
public void RefreshAdsData()
{
_appId = AdConfigParser.GetKwaiAppId();
_token = AdConfigParser.GetKwaiAppToken();
_rewardAdUnitId = AdConfigParser.GetKwaiAdUnits(AdsType.Rewarded).FirstOrDefault();
_interstitialAdUnitId = AdConfigParser.GetKwaiAdUnits(AdsType.Interstitial).FirstOrDefault();
KwaiFloorRvManager.Instance.LoadKwaiBiddingConfig();
KwaiFloorIvManager.Instance.LoadKwaiBiddingConfig();
if (KwaiAdsConfigParser.GetKwaiRvFloorOpen()) KwaiFloorRvManager.Instance.LoadKwaiBiddingConfig();
if (KwaiAdsConfigParser.GetKwaiIvFloorOpen()) KwaiFloorIvManager.Instance.LoadKwaiBiddingConfig();
LoggerUtils.Debug("KwaiAdsManager RefreshAdsData" + _appId + " token:" + _token + " rewardAdUnitId:" + _rewardAdUnitId + " interstitialAdUnitId:" + _interstitialAdUnitId);
}
#region 广
public void LoadRewarded()
{
AdsActionEvents.TrackAdStartLoad(Platfrom, AdsType.Rewarded);
if (!KwaiAdsConfigParser.GetKwaiRvFloorOpen())
{
LoadRewardedStandard();
return;
}
AdsActionEvents.TrackAdStartLoad(Platfrom, AdsType.Rewarded);
KwaiFloorRvManager.Instance.LoadRewardedWithFloors();
}
public void LoadRewardedStandard()
{
LoggerUtils.Debug("kwai load rewarded standard"+_rewardAdUnitId);
if (string.IsNullOrEmpty(_rewardAdUnitId)) return;
AdsActionEvents.TrackAdStartLoad(Platfrom, AdsType.Rewarded);
if (_rewardAdController != null)
{
_rewardAdController.Destroy();
@ -151,23 +184,26 @@ namespace WZ
#region
public void LoadInterstitial()
{
AdsActionEvents.TrackAdStartLoad(Platfrom, AdsType.Interstitial);
if (!KwaiAdsConfigParser.GetKwaiIvFloorOpen())
{
LoadInterstitialStandard();
return;
}
AdsActionEvents.TrackAdStartLoad(Platfrom, AdsType.Interstitial);
KwaiFloorIvManager.Instance.LoadInterstitialWithFloors();
}
private void LoadInterstitialStandard()
{
LoggerUtils.Debug("kwai load interstitial standard:"+_interstitialAdUnitId);
if (string.IsNullOrEmpty(_interstitialAdUnitId)) return;
AdsActionEvents.TrackAdStartLoad(Platfrom, AdsType.Interstitial);
if (_interstitialAdController != null)
{
_interstitialAdController.Destroy();
_interstitialAdController = null;
}
_interstitiaAdRevenue = -1;
_interstitialAdController = KwaiAds.Scripts.Api.KwaiAdsSdk.SDK.getInterstitialAdController();

View File

@ -40,8 +40,16 @@ namespace WZ
{
EFSdk.get().SetSDKEventCallback((eventName, dict) =>
{
FireBaseAnalyticsManager.Instance.LogEvent(eventName, dict);
ShuShuEvent.Instance.Track(eventName, dict);
if (dict == null)
{
FireBaseAnalyticsManager.Instance.LogEvent(eventName);
ShuShuEvent.Instance.Track(eventName);
}
else
{
FireBaseAnalyticsManager.Instance.LogEvent(eventName, dict);
ShuShuEvent.Instance.Track(eventName, dict);
}
});
}

View File

@ -38,12 +38,13 @@ namespace WZ
// 获取kwai广告位信息
KwaiAdsConfigParser.Parse(GetRemoteConfigString("kwai_rv_floor"),true);
KwaiAdsConfigParser.Parse(GetRemoteConfigString("kwai_iv_floor"),false);
// 刷新广告位信息
AdsSDKManager.Instance.RefreshAdsData();
//AB测试分组参数
GroupSet();
//推送事件
EFSdk.get().SetGameActive(true);
// 刷新广告位信息
AdsSDKManager.Instance.RefreshAdsData();
// adjust卸载监控

View File

@ -21,7 +21,7 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
public static string GetSDKVersion()
{
return "1.0.4.4";
return "1.0.5.0";
}
protected override void Initialized()
{
@ -966,6 +966,67 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
EFSdk.get().SetPersistentStyleV2Text(text1, text2, text3, text4);
}
/// <summary>
/// 获取指定类型的小组件是否已添加到桌面
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public bool IsWidgetAdded(EFSdk.WidgetType type)
{
if (Application.isEditor)
{
return true;
}
return EFSdk.get().IsWidgetAdded(type);
}
/// <summary>
/// 将指定类型的小组件添加到桌面
/// </summary>
/// <param name="type"></param>
/// <param name="action">添加结果</param>
/// <returns></returns>
public void RequestAddWidget(EFSdk.WidgetType type, Action<bool> action)
{
if (Application.isEditor)
{
return;
}
EFSdk.get().RequestAddWidget(type, action);
}
/// <summary>
/// 请求将Widget3X2添加到桌面,并自定义文案
/// </summary>
/// <param name="title1">标题1文案</param>
/// <param name="title2">标题2文案</param>
/// <param name="progressStr">进度条上的文案</param>
/// <param name="buttonStr">按钮的文案</param>
/// <param name="action">小组件添加结果回调</param>
public void RequestAddWidget3x2(string title1, string title2, string progressStr, string buttonStr, Action<bool> action)
{
if (Application.isEditor)
{
return;
}
EFSdk.get().RequestAddWidget3x2(title1, title2, progressStr, buttonStr, action);
}
/// <summary>
/// 请求将 Widget5X1 添加到桌面,并自定义文案
/// </summary>
/// <param name="content">内容文案</param>
/// <param name="action">小组件添加结果回调</param>
/// <param name="contentTextColor">文案文字十六进制颜色值,如: #FFFFFF</param>
public void RequestAddWidget5x1(string content, Action<bool> action, string contentTextColor = "#FFFFFF")
{
if (Application.isEditor)
{
return;
}
EFSdk.get().RequestAddWidget5x1(content, action, contentTextColor);
}
#endregion
/// <summary>
@ -1081,4 +1142,6 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
{
Application.OpenURL(StaticValue.PrivacyUrl);
}
}

View File

@ -16,18 +16,17 @@ public class Test : MonoBehaviour
private void Start()
{
RushSDKManager.Instance.InitializeSdk(() => { }, true);
}
public void OnShowAd()
{
RushSDKManager.Instance.ShowRewardAd("test", (s, st) => { LoggerUtils.Debug("onreward show callback revenue:" + st); });
}
public void OnShowInterstitial()
{
RushSDKManager.Instance.ShowBanner(BannerType.Collapsible,BannerAlignType.CenterBottom);
RushSDKManager.Instance.ShowBanner(BannerType.Collapsible, BannerAlignType.CenterBottom);
// KwaiAdsManager.Instance.OnInterstitialCallback();
// var small = gameObject.transform.Find("NativeAd-small").GetComponent<RectTransform>();
// var medium = gameObject.transform.Find("NativeAd-medium").GetComponent<RectTransform>();
@ -63,17 +62,12 @@ public class Test : MonoBehaviour
public void OnInterShow()
{
AdsSDKManager.Instance.ShowInterstitialAd("endgame",IvType.IV1, (revenue) =>
{
LoggerUtils.Debug("oninter show call revenue:"+revenue);
});
AdsSDKManager.Instance.ShowInterstitialAd("endgame", IvType.IV1, (revenue) => { LoggerUtils.Debug("oninter show call revenue:" + revenue); });
}
public void ToponDebug()
{
// ATSDKAPI.showDebuggerUI();
RushSDKManager.Instance.HideBanner(BannerType.Standard);
}
public void MaxDebug()
@ -84,28 +78,31 @@ public class Test : MonoBehaviour
public void Native1Show()
{
var adUnitId = StaticValue.AdmobSmallNativeId;
var nativeAdPosition = NativeAdPosition.Create(new NativeTemplateStyle
{
TemplateId = NativeTemplateId.Small
}, small);
Debug.Log($"luojian admob native ad ({adUnitId}) start show {small} medium {medium} X:{nativeAdPosition.X} Y:{nativeAdPosition.Y} Height :{nativeAdPosition.Height} Width:{nativeAdPosition.Width} Screen.dpi = {3.5}");
if (AdsSDKManager.Instance.IsNativeAdReady(adUnitId))
{
AdsSDKManager.Instance.ShowNativeAd("test", adUnitId, nativeAdPosition);
}
else
{
Debug.LogWarning($"luojian admob native ad ({adUnitId}) start show fail,not ready.");
}
RushSDKManager.Instance.HideBanner(BannerType.Collapsible);
// var adUnitId = StaticValue.AdmobSmallNativeId;
// var nativeAdPosition = NativeAdPosition.Create(new NativeTemplateStyle
// {
// TemplateId = NativeTemplateId.Small
// }, small);
// Debug.Log($"luojian admob native ad ({adUnitId}) start show {small} medium {medium} X:{nativeAdPosition.X} Y:{nativeAdPosition.Y} Height :{nativeAdPosition.Height} Width:{nativeAdPosition.Width} Screen.dpi = {3.5}");
// if (AdsSDKManager.Instance.IsNativeAdReady(adUnitId))
// {
// AdsSDKManager.Instance.ShowNativeAd("test", adUnitId, nativeAdPosition);
// }
// else
// {
// Debug.LogWarning($"luojian admob native ad ({adUnitId}) start show fail,not ready.");
// }
}
public void Native1Hide()
{
var adUnitId = StaticValue.AdmobSmallNativeId;
AdsSDKManager.Instance.RemoveNativeAd(adUnitId);
RushSDKManager.Instance.HideBanner(BannerType.Standard);
// var adUnitId = StaticValue.AdmobSmallNativeId;
// AdsSDKManager.Instance.RemoveNativeAd(adUnitId);
}
public void Native2Show()
{
var adUnitId = StaticValue.AdmobNativeId;
@ -182,4 +179,15 @@ public class Test : MonoBehaviour
var adUnitId = StaticValue.AdmobMinddleNativeId;
AdsSDKManager.Instance.RemoveNativeAd(adUnitId);
}
public void ToponKwaiIsInit()
{
var isInit = ToponKwaiUtils.IsInit();
Debug.Log($"luojian topon kwai is init : {isInit} , AdapterVersion = {ToponKwaiUtils.GetAdapterVersion()} , NetworkVersion = {ToponKwaiUtils.GetNetworkVersion()}, NetworkName = {ToponKwaiUtils.GetNetworkName()}");
}
public void ToponKwaiInitSDK()
{
ToponKwaiUtils.InitSDK("804006", "57tegTivgTRihdt", (result, message) => { Debug.Log($"luojian topon kwai init SDK result : {result} , message : {message}"); });
}
}

View File

@ -0,0 +1,173 @@
using System;
using UnityEngine;
using UnityEngine.Scripting;
namespace WZ
{
public class ToponKwaiUtils
{
// 标准的topon版本
// private const string KwaiATInitManagerPath = "com.anythink.network.kwai.KwaiATInitManager";
// private const string IsInitPath = "j";
// private const string MediationInitCallbackPath = "com.anythink.core.api.MediationInitCallback";
// 定制的topon版本
private const string KwaiATInitManagerPath = "com.thinkup.network.kwai.KwaiTUInitManager";
private const string IsInitPath = "mm";
public const string MediationInitCallbackPath = "com.thinkup.core.api.MediationInitCallback";
private static AndroidJavaObject Instance = null;
private static AndroidJavaObject GetInstance()
{
Instance ??= new AndroidJavaClass(KwaiATInitManagerPath).CallStatic<AndroidJavaObject>("getInstance");
return Instance;
}
/// <summary>
/// topon 是否已经初始化了 kwai
/// </summary>
/// <returns></returns>
public static bool IsInit()
{
try
{
return GetInstance().Get<bool>(IsInitPath);
}
catch (Exception e)
{
LoggerUtils.Error($"[ToponKwaiUtils] IsInit , {e.Message}");
}
return false;
}
/// <summary>
/// 通过 topon 去初始化 kwai
/// </summary>
/// <param name="appID">kwai 的appid</param>
/// <param name="appToken">kwai 的app token</param>
/// <param name="callback">初始化的回调</param>
public static void InitSDK(string appID, string appToken, Action<bool, string> callback)
{
try
{
var hashMap = new AndroidJavaObject("java.util.HashMap");
hashMap.Call<AndroidJavaObject>("put", "app_id", appID);
hashMap.Call<AndroidJavaObject>("put", "app_token", appToken);
GetInstance().Call("initSDK", GetAndroidApplication(), hashMap, new MediationInitCallback(callback));
}
catch (Exception e)
{
LoggerUtils.Error($"[ToponKwaiUtils] InitSDK , {e.Message}");
callback.Invoke(false, e.Message);
}
}
public static string GetAdapterVersion()
{
try
{
return GetInstance().Call<string>("getAdapterVersion");
}
catch (Exception e)
{
LoggerUtils.Error($"[ToponKwaiUtils] GetAdapterVersion , {e.Message}");
}
return "";
}
public static string GetNetworkVersion()
{
try
{
return GetInstance().Call<string>("getNetworkVersion");
}
catch (Exception e)
{
LoggerUtils.Error($"[ToponKwaiUtils] GetNetworkVersion , {e.Message}");
}
return "";
}
public static string GetNetworkName()
{
try
{
return GetInstance().Call<string>("getNetworkName");
}
catch (Exception e)
{
LoggerUtils.Error($"[ToponKwaiUtils] GetNetworkName , {e.Message}");
}
return "";
}
public static string GetNetworkSDKClass()
{
try
{
return GetInstance().Call<string>("getNetworkSDKClass");
}
catch (Exception e)
{
LoggerUtils.Error($"[ToponKwaiUtils] GetNetworkSDKClass , {e.Message}");
}
return "";
}
/// <summary>
/// 获取Android的Application对象android.app.Application
/// </summary>
/// <returns>Android Application对象AndroidJavaObject若在非Android平台返回null</returns>
private static AndroidJavaObject GetAndroidApplication()
{
// 只在Android平台执行
if (Application.platform != RuntimePlatform.Android)
{
return null;
}
try
{
var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
return currentActivity.Call<AndroidJavaObject>("getApplication");
}
catch (Exception e)
{
LoggerUtils.Error($"[ToponKwaiUtils] GetAndroidApplication , {e.Message}");
return null;
}
}
}
public class MediationInitCallback : AndroidJavaProxy
{
private readonly Action<bool, string> _callback;
public MediationInitCallback(Action<bool, string> callback) : base(ToponKwaiUtils.MediationInitCallbackPath)
{
_callback = callback;
}
[Preserve]
public void onSuccess()
{
_callback.Invoke(true, "success");
}
[Preserve]
public void onFail(string error)
{
_callback.Invoke(false, error);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 24597cd26d7b463d9767c1d5d3e0ad1c
timeCreated: 1761039734

View File

@ -1,3 +1,73 @@
# Version 1.0.5.0 2025.10.2
## Bugs
- None
## Known issues
- None
## Changelog
- 修复topon初始化kwai广告后kwai广告加载失败问题
# Version 1.0.4.9 2025.10.20
## Bugs
- None
## Known issues
- None
## Changelog
- 修复EFSDK事件上报
# Version 1.0.4.7 2025.10.17
## Bugs
- None
## Known issues
- None
## Changelog
- 更新小组件SDK
# Version 1.0.4.6 2025.10.10
## Bugs
- None
## Known issues
- None
## Changelog
- 修复提前调用native ready接口导致的报错问题
# Version 1.0.4.5 2025.9.29
## Bugs
- None
## Known issues
- None
## Changelog
- 通过在线参数控制是否初始化kwai广告可由topon初始化
# Version 1.0.4.4 2025.9.28
## Bugs

View File

@ -1 +1 @@
Build from HY-LSZNWIN10 at 2025/9/23 19:33:57
Build from HY-LSZNWIN10 at 2025/10/16 10:34:49