Compare commits
No commits in common. "main" and "1.0.4.2" have entirely different histories.
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
"recommendations": [
|
|
||||||
"visualstudiotoolsforunity.vstuc"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
{
|
|
||||||
"version": "0.2.0",
|
|
||||||
"configurations": [
|
|
||||||
{
|
|
||||||
"name": "Attach to Unity",
|
|
||||||
"type": "vstuc",
|
|
||||||
"request": "attach"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
@ -1,56 +0,0 @@
|
||||||
{
|
|
||||||
"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
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 30 KiB |
|
|
@ -1,127 +0,0 @@
|
||||||
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:
|
|
||||||
|
Before Width: | Height: | Size: 28 KiB |
|
|
@ -1,127 +0,0 @@
|
||||||
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:
|
|
||||||
|
Before Width: | Height: | Size: 8.9 KiB |
|
|
@ -1,127 +0,0 @@
|
||||||
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:
|
|
||||||
|
Before Width: | Height: | Size: 10 KiB |
|
|
@ -1,127 +0,0 @@
|
||||||
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:
|
|
||||||
0
Assets/EFSDK/Android/res/drawable-xxhdpi.meta → Assets/EFSDK/Android/res/drawable.meta
Normal file → Executable file
0
Assets/EFSDK/Android/res/drawable-xxhdpi/_sdk_icon_1024.png → Assets/EFSDK/Android/res/drawable/_sdk_icon_1024.png
Normal file → Executable file
|
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 280 KiB |
0
Assets/EFSDK/Android/res/drawable-xxhdpi/_sdk_icon_1024.png.meta → Assets/EFSDK/Android/res/drawable/_sdk_icon_1024.png.meta
Normal file → Executable file
0
Assets/EFSDK/Android/res/drawable-xxhdpi/_sdk_notice_1.png → Assets/EFSDK/Android/res/drawable/_sdk_notice_1.png
Normal file → Executable file
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.4 KiB |
0
Assets/EFSDK/Android/res/drawable-xxhdpi/_sdk_notice_1.png.meta → Assets/EFSDK/Android/res/drawable/_sdk_notice_1.png.meta
Normal file → Executable file
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
0
Assets/EFSDK/Android/res/drawable-xxhdpi/_sdk_notice_2.png → Assets/EFSDK/Android/res/drawable/_sdk_notice_2.png
Normal file → Executable file
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.4 KiB |
0
Assets/EFSDK/Android/res/drawable-xxhdpi/_sdk_notice_2.png.meta → Assets/EFSDK/Android/res/drawable/_sdk_notice_2.png.meta
Normal file → Executable file
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
0
Assets/EFSDK/Android/res/drawable-xxhdpi/_sdk_notice_3.png → Assets/EFSDK/Android/res/drawable/_sdk_notice_3.png
Normal file → Executable file
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
0
Assets/EFSDK/Android/res/drawable-xxhdpi/_sdk_notice_3.png.meta → Assets/EFSDK/Android/res/drawable/_sdk_notice_3.png.meta
Normal file → Executable file
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
0
Assets/EFSDK/Android/res/drawable-xxhdpi/_sdk_notice_4.png → Assets/EFSDK/Android/res/drawable/_sdk_notice_4.png
Normal file → Executable file
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
0
Assets/EFSDK/Android/res/drawable-xxhdpi/_sdk_notice_4.png.meta → Assets/EFSDK/Android/res/drawable/_sdk_notice_4.png.meta
Normal file → Executable file
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
0
Assets/EFSDK/Android/res/drawable-xxhdpi/_sdk_push_big_pic_en.png → Assets/EFSDK/Android/res/drawable/_sdk_push_big_pic_en.png
Normal file → Executable file
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
0
Assets/EFSDK/Android/res/drawable-xxhdpi/_sdk_push_big_pic_es.png → Assets/EFSDK/Android/res/drawable/_sdk_push_big_pic_es.png
Normal file → Executable file
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
0
Assets/EFSDK/Android/res/drawable-xxhdpi/_sdk_toast_bg.png → Assets/EFSDK/Android/res/drawable/_sdk_toast_bg.png
Normal file → Executable file
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
0
Assets/EFSDK/Android/res/drawable-xxhdpi/_sdk_toast_bg.png.meta → Assets/EFSDK/Android/res/drawable/_sdk_toast_bg.png.meta
Normal file → Executable file
|
|
@ -32,8 +32,8 @@ namespace EFSDK
|
||||||
public EFSdk()
|
public EFSdk()
|
||||||
{
|
{
|
||||||
Debug.Log($"GetNewSDKClass():{GetNewSDKClass()}");
|
Debug.Log($"GetNewSDKClass():{GetNewSDKClass()}");
|
||||||
Debug.Log($"initSDK():{GenerateAndroidName("initSDK")}");
|
Debug.Log($"initSDK():{ GenerateAndroidName("initSDK")}");
|
||||||
|
|
||||||
// java interface class
|
// java interface class
|
||||||
using (AndroidJavaClass jc = new AndroidJavaClass(GetNewSDKClass()))
|
using (AndroidJavaClass jc = new AndroidJavaClass(GetNewSDKClass()))
|
||||||
{
|
{
|
||||||
|
|
@ -46,7 +46,7 @@ namespace EFSDK
|
||||||
|
|
||||||
private static string GetNewSDKClass()
|
private static string GetNewSDKClass()
|
||||||
{
|
{
|
||||||
return GetSDKPackage() + GenerateAndroidName(oriSDK);
|
return GetSDKPackage() + GenerateAndroidName(oriSDK);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string GetSDKPackage()
|
private static string GetSDKPackage()
|
||||||
|
|
@ -61,9 +61,8 @@ namespace EFSDK
|
||||||
string newPName = "";
|
string newPName = "";
|
||||||
for (int i = 0; i < parts2.Length; i++)
|
for (int i = 0; i < parts2.Length; i++)
|
||||||
{
|
{
|
||||||
newPName += parts2[i] + ".";
|
newPName+=parts2[i]+".";
|
||||||
}
|
}
|
||||||
|
|
||||||
return newPName;
|
return newPName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -98,7 +97,6 @@ namespace EFSDK
|
||||||
{
|
{
|
||||||
sub = "a" + sub;
|
sub = "a" + sub;
|
||||||
}
|
}
|
||||||
|
|
||||||
return sub;
|
return sub;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -182,7 +180,7 @@ namespace EFSDK
|
||||||
SDKCall("initSDK", mappingInfo);
|
SDKCall("initSDK", mappingInfo);
|
||||||
ActionCallback?.Invoke(ActionType.SDK_INIT_Succ, string.Empty);
|
ActionCallback?.Invoke(ActionType.SDK_INIT_Succ, string.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 当游戏进程启动之后,可以接收响应的时候(一般在游戏内事件上报相关内容初始化完毕调用即可,参数传true),调用这个方法通知SDK,
|
/// 当游戏进程启动之后,可以接收响应的时候(一般在游戏内事件上报相关内容初始化完毕调用即可,参数传true),调用这个方法通知SDK,
|
||||||
/// SDK收到通知后会开始将SDK侧的事件回传给游戏,作事件上报
|
/// SDK收到通知后会开始将SDK侧的事件回传给游戏,作事件上报
|
||||||
|
|
@ -449,66 +447,5 @@ namespace EFSDK
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,6 @@ namespace EFSDK
|
||||||
private string H5_Load_Succ = "H5_Load_Succ";
|
private string H5_Load_Succ = "H5_Load_Succ";
|
||||||
private string On_Resume = "onResume";
|
private string On_Resume = "onResume";
|
||||||
private string Can_Goback = "canGoback";
|
private string Can_Goback = "canGoback";
|
||||||
private string reqNotifyPermission = "reqNotifyPermission";
|
|
||||||
private string REQUEST_ADD_WIDGET_RESULT = "requestAddWidgetResult";
|
|
||||||
|
|
||||||
public void OnReceiverAnd(string message)
|
public void OnReceiverAnd(string message)
|
||||||
{
|
{
|
||||||
|
|
@ -33,17 +31,11 @@ namespace EFSDK
|
||||||
EFSdk.get().ActionCallback?.Invoke(EFSdk.ActionType.H5_Load_Succ, parts[1]);
|
EFSdk.get().ActionCallback?.Invoke(EFSdk.ActionType.H5_Load_Succ, parts[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message.StartsWith(reqNotifyPermission))
|
if (message.StartsWith("reqNotifyPermission#"))
|
||||||
{
|
{
|
||||||
string[] flag = message.Split('#');
|
string[] flag = message.Split('#');
|
||||||
EFSdk.get().mReqNotifyPermissionAction?.Invoke(flag[1].Equals("1"));
|
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#"))
|
if (message.StartsWith("Event#"))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ namespace EFSDK
|
||||||
if (File.Exists(aarPath)) File.Delete(aarPath);
|
if (File.Exists(aarPath)) File.Delete(aarPath);
|
||||||
|
|
||||||
IOCompression.ZipFile.CreateFromDirectory(TempDir, aarPath, IOCompression.CompressionLevel.Optimal, false);
|
IOCompression.ZipFile.CreateFromDirectory(TempDir, aarPath, IOCompression.CompressionLevel.Optimal, false);
|
||||||
Debug.Log($"✅ AAR built:"+aarPath);
|
Debug.Log($"✅ AAR built: {aarPath}");
|
||||||
|
|
||||||
// 生成压缩 JSON (key 只保留文件名)
|
// 生成压缩 JSON (key 只保留文件名)
|
||||||
Dictionary<string, string> simpleMapping = new Dictionary<string, string>();
|
Dictionary<string, string> simpleMapping = new Dictionary<string, string>();
|
||||||
|
|
@ -68,7 +68,6 @@ namespace EFSDK
|
||||||
// 映射文件
|
// 映射文件
|
||||||
string mappingPath = Path.Combine(TempDir, "res_mapping.json");
|
string mappingPath = Path.Combine(TempDir, "res_mapping.json");
|
||||||
File.WriteAllText(mappingPath, mappingJson);
|
File.WriteAllText(mappingPath, mappingJson);
|
||||||
Debug.Log($"✅ AAR 资源文件构建成功! mappingJson:"+mappingJson);
|
|
||||||
|
|
||||||
// 清理临时目录
|
// 清理临时目录
|
||||||
Directory.Delete(TempDir, true);
|
Directory.Delete(TempDir, true);
|
||||||
|
|
@ -96,8 +95,8 @@ namespace EFSDK
|
||||||
string key = Path.GetFileNameWithoutExtension(relativePath); // 可以保留目录信息
|
string key = Path.GetFileNameWithoutExtension(relativePath); // 可以保留目录信息
|
||||||
string value = string.IsNullOrEmpty(relativeDir) ? newName : $"{relativeDir}/{newName}";
|
string value = string.IsNullOrEmpty(relativeDir) ? newName : $"{relativeDir}/{newName}";
|
||||||
string fileNameWithoutExt = Path.GetFileNameWithoutExtension(value);
|
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()));
|
string dstPath = Path.Combine(dstDir, value.Replace("/", Path.DirectorySeparatorChar.ToString()));
|
||||||
|
|
||||||
|
|
@ -141,14 +140,7 @@ namespace EFSDK
|
||||||
{
|
{
|
||||||
string ext = Path.GetExtension(filePath);
|
string ext = Path.GetExtension(filePath);
|
||||||
string oriFileName = Path.GetFileNameWithoutExtension(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));
|
string md5Str = GetFirstEightWithUnderscore(GetMD5Hash(Application.identifier + oriFileName + oriFileName));
|
||||||
|
|
||||||
Debug.Log($"原名:{oriFileName} 后缀:{ext} 生成文件名:{md5Str + ext}");
|
|
||||||
return md5Str + ext;
|
return md5Str + ext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -119,21 +119,21 @@ public class ManifestProcessor : IPreprocessBuild
|
||||||
}
|
}
|
||||||
|
|
||||||
GoogleMobileAdsSettings instance = GoogleMobileAdsSettings.LoadInstance();
|
GoogleMobileAdsSettings instance = GoogleMobileAdsSettings.LoadInstance();
|
||||||
// string appId = instance.GoogleMobileAdsAndroidAppId;
|
string appId = instance.GoogleMobileAdsAndroidAppId;
|
||||||
|
|
||||||
// if (appId.Length == 0)
|
if (appId.Length == 0)
|
||||||
// {
|
{
|
||||||
// StopBuildWithMessage(
|
StopBuildWithMessage(
|
||||||
// "Android Google Mobile Ads app ID is empty. Please enter a valid app ID to run ads properly.");
|
"Android Google Mobile Ads app ID is empty. Please enter a valid app ID to run ads properly.");
|
||||||
// }
|
}
|
||||||
|
|
||||||
IEnumerable<XElement> metas = elemApplication.Descendants()
|
IEnumerable<XElement> metas = elemApplication.Descendants()
|
||||||
.Where( elem => elem.Name.LocalName.Equals("meta-data"));
|
.Where( elem => elem.Name.LocalName.Equals("meta-data"));
|
||||||
|
|
||||||
// SetMetadataElement(elemApplication,
|
SetMetadataElement(elemApplication,
|
||||||
// metas,
|
metas,
|
||||||
// METADATA_APPLICATION_ID,
|
METADATA_APPLICATION_ID,
|
||||||
// appId);
|
appId);
|
||||||
|
|
||||||
SetMetadataElement(elemApplication,
|
SetMetadataElement(elemApplication,
|
||||||
metas,
|
metas,
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ using BigoAds.Scripts.Platforms.Android;
|
||||||
using KwaiAds.Scripts.Api;
|
using KwaiAds.Scripts.Api;
|
||||||
using KwaiAds.Scripts.Common;
|
using KwaiAds.Scripts.Common;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using WZ;
|
|
||||||
|
|
||||||
namespace KwaiAds.Scripts.Platforms.Android
|
namespace KwaiAds.Scripts.Platforms.Android
|
||||||
{
|
{
|
||||||
|
|
@ -127,10 +126,7 @@ namespace KwaiAds.Scripts.Platforms.Android
|
||||||
{
|
{
|
||||||
AndroidJavaObject contextObject = currentActivity.Call<AndroidJavaObject>("getApplicationContext");
|
AndroidJavaObject contextObject = currentActivity.Call<AndroidJavaObject>("getApplicationContext");
|
||||||
Debug.Log("Android Context: " + contextObject.Call<string>("toString"));
|
Debug.Log("Android Context: " + contextObject.Call<string>("toString"));
|
||||||
if (!KwaiAdsManager.UseToponInitKwai())
|
kwaiAdSdkClass.CallStatic("init", contextObject, sdkConfigBuilder.Call<AndroidJavaObject>("build"));
|
||||||
{
|
|
||||||
kwaiAdSdkClass.CallStatic("init", contextObject, sdkConfigBuilder.Call<AndroidJavaObject>("build"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -147,7 +147,6 @@ namespace KwaiAds.Scripts.Platforms.Android
|
||||||
|
|
||||||
public void onAdLoadSuccess(string trackId, AndroidJavaObject kwaiInterstitialAd)
|
public void onAdLoadSuccess(string trackId, AndroidJavaObject kwaiInterstitialAd)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(trackId) || kwaiInterstitialAd == null || _InterstitialAdLoadListener == null) return;
|
|
||||||
_KwaiInterstitialAdController._KwaiInterstitialAd = kwaiInterstitialAd;
|
_KwaiInterstitialAdController._KwaiInterstitialAd = kwaiInterstitialAd;
|
||||||
string price = kwaiInterstitialAd.Call<string>("getPrice");
|
string price = kwaiInterstitialAd.Call<string>("getPrice");
|
||||||
Debug.Log($"{TAG}: onAdLoaded: {kwaiInterstitialAd.Call<string>("getPrice")}");
|
Debug.Log($"{TAG}: onAdLoaded: {kwaiInterstitialAd.Call<string>("getPrice")}");
|
||||||
|
|
|
||||||
|
|
@ -134,7 +134,6 @@ namespace KwaiAds.Scripts.Platforms.Android
|
||||||
{
|
{
|
||||||
this._RewardAdLoadListener = rewardAdListener;
|
this._RewardAdLoadListener = rewardAdListener;
|
||||||
this._KwaiRewardAdController = kwaiRewardAdController;
|
this._KwaiRewardAdController = kwaiRewardAdController;
|
||||||
Debug.Log("yangwu AdLoadListener:"+rewardAdListener+" kwaiRewardAdController:"+kwaiRewardAdController);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onAdLoadStart(string trackId)
|
public void onAdLoadStart(string trackId)
|
||||||
|
|
@ -148,7 +147,6 @@ namespace KwaiAds.Scripts.Platforms.Android
|
||||||
|
|
||||||
public void onAdLoadSuccess(string trackId, AndroidJavaObject kwaiRewardAd)
|
public void onAdLoadSuccess(string trackId, AndroidJavaObject kwaiRewardAd)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(trackId) || kwaiRewardAd == null || _KwaiRewardAdController == null) return;
|
|
||||||
_KwaiRewardAdController._KwaiRewardAd = kwaiRewardAd;
|
_KwaiRewardAdController._KwaiRewardAd = kwaiRewardAd;
|
||||||
string price = kwaiRewardAd.Call<string>("getPrice");
|
string price = kwaiRewardAd.Call<string>("getPrice");
|
||||||
Debug.Log($"{TAG}: onAdLoaded: {kwaiRewardAd.Call<string>("getPrice")}");
|
Debug.Log($"{TAG}: onAdLoaded: {kwaiRewardAd.Call<string>("getPrice")}");
|
||||||
|
|
|
||||||
|
|
@ -163,7 +163,7 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||||
var metaDataElements = elementApplication.Descendants().Where(element => element.Name.LocalName.Equals("meta-data"));
|
var metaDataElements = elementApplication.Descendants().Where(element => element.Name.LocalName.Equals("meta-data"));
|
||||||
|
|
||||||
EnableVerboseLoggingIfNeeded(elementApplication);
|
EnableVerboseLoggingIfNeeded(elementApplication);
|
||||||
//AddGoogleApplicationIdIfNeeded(elementApplication, metaDataElements);
|
AddGoogleApplicationIdIfNeeded(elementApplication, metaDataElements);
|
||||||
AddGoogleOptimizationFlagsIfNeeded(elementApplication, metaDataElements);
|
AddGoogleOptimizationFlagsIfNeeded(elementApplication, metaDataElements);
|
||||||
DisableAutoInitIfNeeded(elementApplication, metaDataElements);
|
DisableAutoInitIfNeeded(elementApplication, metaDataElements);
|
||||||
RemoveSdkKeyIfNeeded(metaDataElements);
|
RemoveSdkKeyIfNeeded(metaDataElements);
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,7 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||||
var sdkKey = AppLovinSettings.Instance.SdkKey;
|
var sdkKey = AppLovinSettings.Instance.SdkKey;
|
||||||
if (string.IsNullOrEmpty(sdkKey))
|
if (string.IsNullOrEmpty(sdkKey))
|
||||||
{
|
{
|
||||||
//MaxSdkLogger.UserError("Failed to install AppLovin Quality Service plugin. SDK Key is empty. Please enter the AppLovin SDK Key in the Integration Manager.");
|
MaxSdkLogger.UserError("Failed to install AppLovin Quality Service plugin. SDK Key is empty. Please enter the AppLovin SDK Key in the Integration Manager.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -109,7 +109,7 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||||
var apiKey = qualityServiceData.api_key;
|
var apiKey = qualityServiceData.api_key;
|
||||||
if (string.IsNullOrEmpty(apiKey))
|
if (string.IsNullOrEmpty(apiKey))
|
||||||
{
|
{
|
||||||
//MaxSdkLogger.UserError("Failed to install AppLovin Quality Service plugin. API Key is empty.");
|
MaxSdkLogger.UserError("Failed to install AppLovin Quality Service plugin. API Key is empty.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,33 +1,2 @@
|
||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: fe8f127008b0843c3a9e8e549d63e21d
|
guid: fe8f127008b0843c3a9e8e549d63e21d
|
||||||
folderAsset: yes
|
|
||||||
PluginImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
defineConstraints: []
|
|
||||||
isPreloaded: 0
|
|
||||||
isOverridable: 0
|
|
||||||
isExplicitlyReferenced: 0
|
|
||||||
validateReferences: 1
|
|
||||||
platformData:
|
|
||||||
- first:
|
|
||||||
Android: Android
|
|
||||||
second:
|
|
||||||
enabled: 1
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Any:
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Editor: Editor
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
|
@ -1,9 +1,14 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.google.unity.ads">
|
<!--
|
||||||
<uses-sdk android:minSdkVersion="23" />
|
This Google Mobile Ads plugin library manifest will get merged with your
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
application's manifest, adding the necessary metadata
|
||||||
|
required for displaying ads.
|
||||||
|
-->
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="com.google.unity.ads">
|
||||||
|
<uses-sdk android:minSdkVersion="23"/>
|
||||||
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
<application>
|
<application>
|
||||||
<uses-library android:required="false" android:name="org.apache.http.legacy" />
|
<uses-library android:required="false" android:name="org.apache.http.legacy"/>
|
||||||
<meta-data android:name="com.google.unity.ads.UNITY_VERSION" android:value="2022.3.62f1c1" />
|
|
||||||
</application>
|
</application>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
|
||||||
|
|
@ -503,7 +503,7 @@ RectTransform:
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
m_AnchoredPosition: {x: -77, y: 295}
|
m_AnchoredPosition: {x: -317, y: 0}
|
||||||
m_SizeDelta: {x: 160, y: 81.78}
|
m_SizeDelta: {x: 160, y: 81.78}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &231270964
|
--- !u!114 &231270964
|
||||||
|
|
@ -670,7 +670,7 @@ MonoBehaviour:
|
||||||
m_HorizontalOverflow: 0
|
m_HorizontalOverflow: 0
|
||||||
m_VerticalOverflow: 0
|
m_VerticalOverflow: 0
|
||||||
m_LineSpacing: 1
|
m_LineSpacing: 1
|
||||||
m_Text: "\u9690\u85CF\u6298\u53E0"
|
m_Text: Native1Show
|
||||||
--- !u!222 &317264882
|
--- !u!222 &317264882
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -812,85 +812,6 @@ CanvasRenderer:
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 339569235}
|
m_GameObject: {fileID: 339569235}
|
||||||
m_CullTransparentMesh: 1
|
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
|
--- !u!1 &519420028
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -983,139 +904,6 @@ Transform:
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 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
|
--- !u!1 &522908628
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -1186,7 +974,7 @@ MonoBehaviour:
|
||||||
m_HorizontalOverflow: 0
|
m_HorizontalOverflow: 0
|
||||||
m_VerticalOverflow: 0
|
m_VerticalOverflow: 0
|
||||||
m_LineSpacing: 1
|
m_LineSpacing: 1
|
||||||
m_Text: "\u6298\u53E0banner"
|
m_Text: "\u63D2\u5C4F"
|
||||||
--- !u!222 &522908631
|
--- !u!222 &522908631
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -1443,7 +1231,7 @@ RectTransform:
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
m_AnchoredPosition: {x: 121, y: 297}
|
m_AnchoredPosition: {x: -108, y: -123.51}
|
||||||
m_SizeDelta: {x: 160, y: 81.78}
|
m_SizeDelta: {x: 160, y: 81.78}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &988501506
|
--- !u!114 &988501506
|
||||||
|
|
@ -2201,7 +1989,7 @@ RectTransform:
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
m_AnchoredPosition: {x: -78, y: 168}
|
m_AnchoredPosition: {x: -317, y: -238}
|
||||||
m_SizeDelta: {x: 160, y: 81.78}
|
m_SizeDelta: {x: 160, y: 81.78}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &1238066088
|
--- !u!114 &1238066088
|
||||||
|
|
@ -2377,139 +2165,6 @@ CanvasRenderer:
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1263400539}
|
m_GameObject: {fileID: 1263400539}
|
||||||
m_CullTransparentMesh: 1
|
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
|
--- !u!1 &1332931142
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -2618,8 +2273,6 @@ RectTransform:
|
||||||
- {fileID: 339569236}
|
- {fileID: 339569236}
|
||||||
- {fileID: 5579540}
|
- {fileID: 5579540}
|
||||||
- {fileID: 1601333711}
|
- {fileID: 1601333711}
|
||||||
- {fileID: 522373771}
|
|
||||||
- {fileID: 1284311697}
|
|
||||||
- {fileID: 1979832641}
|
- {fileID: 1979832641}
|
||||||
- {fileID: 1439137377}
|
- {fileID: 1439137377}
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
|
|
@ -2737,7 +2390,7 @@ GameObject:
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 0
|
m_IsActive: 1
|
||||||
--- !u!224 &1439137377
|
--- !u!224 &1439137377
|
||||||
RectTransform:
|
RectTransform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -2795,85 +2448,6 @@ CanvasRenderer:
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1439137376}
|
m_GameObject: {fileID: 1439137376}
|
||||||
m_CullTransparentMesh: 1
|
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
|
--- !u!1 &1560301798
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -2910,7 +2484,7 @@ RectTransform:
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
m_AnchoredPosition: {x: 118, y: 174}
|
m_AnchoredPosition: {x: -108, y: 0}
|
||||||
m_SizeDelta: {x: 160, y: 81.78}
|
m_SizeDelta: {x: 160, y: 81.78}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &1560301800
|
--- !u!114 &1560301800
|
||||||
|
|
@ -3289,7 +2863,7 @@ MonoBehaviour:
|
||||||
m_HorizontalOverflow: 0
|
m_HorizontalOverflow: 0
|
||||||
m_VerticalOverflow: 0
|
m_VerticalOverflow: 0
|
||||||
m_LineSpacing: 1
|
m_LineSpacing: 1
|
||||||
m_Text: "\u666E\u901Abanner"
|
m_Text: "\u6FC0\u52B1"
|
||||||
--- !u!222 &1715967760
|
--- !u!222 &1715967760
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -3368,7 +2942,7 @@ MonoBehaviour:
|
||||||
m_HorizontalOverflow: 0
|
m_HorizontalOverflow: 0
|
||||||
m_VerticalOverflow: 0
|
m_VerticalOverflow: 0
|
||||||
m_LineSpacing: 1
|
m_LineSpacing: 1
|
||||||
m_Text: "\u9690\u85CF\u666E\u901A"
|
m_Text: Native1Hide
|
||||||
--- !u!222 &1839779890
|
--- !u!222 &1839779890
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -3473,7 +3047,7 @@ GameObject:
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 0
|
m_IsActive: 1
|
||||||
--- !u!224 &1979832641
|
--- !u!224 &1979832641
|
||||||
RectTransform:
|
RectTransform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 725371b12142d45e7b38d6fe93bd61e8
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
|
@ -1,157 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.Xml;
|
|
||||||
using System.Xml.Linq;
|
|
||||||
using Google.MiniJSON;
|
|
||||||
using UnityEditor;
|
|
||||||
using UnityEditor.Android;
|
|
||||||
using UnityEditor.Build;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
#if UNITY_ANDROID
|
|
||||||
|
|
||||||
namespace WZ
|
|
||||||
{
|
|
||||||
public class Android : IPostGenerateGradleAndroidProject
|
|
||||||
{
|
|
||||||
|
|
||||||
public int callbackOrder => int.MaxValue;
|
|
||||||
|
|
||||||
public void OnPostGenerateGradleAndroidProject(string path)
|
|
||||||
{
|
|
||||||
#if UNITY_2019_3_OR_NEWER
|
|
||||||
AddAdmobAppId(path);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AddAdmobAppId(string path)
|
|
||||||
{
|
|
||||||
var appManifestPath = Path.Combine(path, "src/main/AndroidManifest.xml");
|
|
||||||
|
|
||||||
var manifestFile = new XmlDocument();
|
|
||||||
manifestFile.Load(appManifestPath);
|
|
||||||
const string gmsAdsApplicationID = "com.google.android.gms.ads.APPLICATION_ID";
|
|
||||||
var admobAppId = GetMetaDataValue(manifestFile, gmsAdsApplicationID);
|
|
||||||
|
|
||||||
var projectAdmobAppId = GetAdmobAppId();
|
|
||||||
LoggerUtils.Debug("Get admob id:"+projectAdmobAppId);
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(admobAppId))
|
|
||||||
{
|
|
||||||
AddMetaDataValue(manifestFile, gmsAdsApplicationID, projectAdmobAppId);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UpdateMetaDataValue(manifestFile, gmsAdsApplicationID, projectAdmobAppId);
|
|
||||||
}
|
|
||||||
|
|
||||||
var androidManifestFileArray = EditorFileUtils.GetAllFileWhereSuffix(path, "AndroidManifest.xml");
|
|
||||||
foreach (var tempPath in androidManifestFileArray)
|
|
||||||
{
|
|
||||||
var newText = File.ReadAllText(tempPath).Replace("INSERT_YOUR_ADMOB_APP_ID_HERE", projectAdmobAppId);
|
|
||||||
File.WriteAllText(tempPath, newText);
|
|
||||||
}
|
|
||||||
|
|
||||||
const string OPTIMIZE_INITIALIZATION = "com.google.android.gms.ads.flag.OPTIMIZE_INITIALIZATION";
|
|
||||||
|
|
||||||
var optimizeInitialization = GetMetaDataValue(manifestFile, OPTIMIZE_INITIALIZATION);
|
|
||||||
if (string.IsNullOrEmpty(optimizeInitialization))
|
|
||||||
{
|
|
||||||
AddMetaDataValue(manifestFile, OPTIMIZE_INITIALIZATION, "true");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UpdateMetaDataValue(manifestFile, OPTIMIZE_INITIALIZATION, "true");
|
|
||||||
}
|
|
||||||
|
|
||||||
const string OPTIMIZE_AD_LOADING = "com.google.android.gms.ads.flag.OPTIMIZE_AD_LOADING";
|
|
||||||
var optimizeAdLoading = GetMetaDataValue(manifestFile, OPTIMIZE_AD_LOADING);
|
|
||||||
if (string.IsNullOrEmpty(optimizeAdLoading))
|
|
||||||
{
|
|
||||||
AddMetaDataValue(manifestFile, OPTIMIZE_AD_LOADING, "true");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UpdateMetaDataValue(manifestFile, OPTIMIZE_AD_LOADING, "true");
|
|
||||||
}
|
|
||||||
|
|
||||||
manifestFile.Save(appManifestPath);
|
|
||||||
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(projectAdmobAppId))
|
|
||||||
{
|
|
||||||
// 显示错误提示框
|
|
||||||
EditorUtility.DisplayDialog("Error", "Google advertising channel was used, but admobId was not configured in the configuration file.", "Ok");
|
|
||||||
throw new Exception("Google advertising channel was used, but admobId was not configured in the configuration file.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool UpdateMetaDataValue(XmlDocument manifest, string name, string value)
|
|
||||||
{
|
|
||||||
var xpath = $"/manifest/application/meta-data[@android:name='{name}']";
|
|
||||||
var node = manifest.DocumentElement?.SelectSingleNode(xpath, GetNamespaceManager(manifest));
|
|
||||||
if (!(node is XmlElement element)) return false;
|
|
||||||
var attributeNode = element.GetAttributeNode("android:value");
|
|
||||||
if (attributeNode != null)
|
|
||||||
{
|
|
||||||
attributeNode.Value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool AddMetaDataValue(XmlDocument manifest, string name, string value)
|
|
||||||
{
|
|
||||||
var metaNode = manifest.CreateElement("meta-data");
|
|
||||||
|
|
||||||
var nameAttribute = manifest.CreateAttribute("android", "name", "http://schemas.android.com/apk/res/android");
|
|
||||||
nameAttribute.InnerText = name;
|
|
||||||
metaNode.SetAttributeNode(nameAttribute);
|
|
||||||
|
|
||||||
var valueAttribute = manifest.CreateAttribute("android", "value", "http://schemas.android.com/apk/res/android");
|
|
||||||
valueAttribute.InnerText = value;
|
|
||||||
metaNode.SetAttributeNode(valueAttribute);
|
|
||||||
|
|
||||||
|
|
||||||
var applicationNode = manifest.SelectSingleNode("/manifest/application");
|
|
||||||
if (applicationNode == null) return false;
|
|
||||||
applicationNode.AppendChild(metaNode);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private static string GetAdmobAppId()
|
|
||||||
{
|
|
||||||
return FileParse.GetConfigByKey(FileParse.KEY_Admob_AppID);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string GetMetaDataValue(XmlDocument manifest, string name)
|
|
||||||
{
|
|
||||||
var xpath = $"/manifest/application/meta-data[@android:name='{name}']";
|
|
||||||
var node = manifest.DocumentElement?.SelectSingleNode(xpath, GetNamespaceManager(manifest));
|
|
||||||
if (node is XmlElement element)
|
|
||||||
{
|
|
||||||
return element.GetAttribute("android:value");
|
|
||||||
}
|
|
||||||
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
private static XmlNamespaceManager GetNamespaceManager(XmlDocument manifest)
|
|
||||||
{
|
|
||||||
var namespaceManager = new XmlNamespaceManager(manifest.NameTable);
|
|
||||||
namespaceManager.AddNamespace("android", "http://schemas.android.com/apk/res/android");
|
|
||||||
return namespaceManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 049fe3d95026b4c5c88ebf67e55687b4
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
|
@ -186,7 +186,6 @@ namespace WZ
|
||||||
|
|
||||||
public bool IsInterstitialAvailable()
|
public bool IsInterstitialAvailable()
|
||||||
{
|
{
|
||||||
if (!_initialized || _interstitialAdUnits.Count == 0) return false;
|
|
||||||
return _admobInterstitialAdManager.GetAvailableAdUnits().Count > 0;
|
return _admobInterstitialAdManager.GetAvailableAdUnits().Count > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -322,7 +321,7 @@ namespace WZ
|
||||||
|
|
||||||
public bool IsNativeAvailable(string adUnitId)
|
public bool IsNativeAvailable(string adUnitId)
|
||||||
{
|
{
|
||||||
return _admobNativeAdManager?.IsAdAvailable(adUnitId) ?? false;
|
return _admobNativeAdManager.IsAdAvailable(adUnitId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DisplayNative(string _adPos, string adUnitId, NativeAdPosition position)
|
public void DisplayNative(string _adPos, string adUnitId, NativeAdPosition position)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using GoogleMobileAds.Api;
|
using GoogleMobileAds.Api;
|
||||||
|
|
||||||
namespace WZ
|
namespace WZ
|
||||||
|
|
@ -57,19 +56,11 @@ namespace WZ
|
||||||
}
|
}
|
||||||
|
|
||||||
LoggerUtils.Debug("Admob Interstitial ad loaded with response : " + ad.GetResponseInfo().ToString());
|
LoggerUtils.Debug("Admob Interstitial ad loaded with response : " + ad.GetResponseInfo().ToString());
|
||||||
LoggerUtils.Debug("Admob Interstitial ad loaded with Getsrevenue:"+AdmobUtils.GetInterstitialAdEcpm(ad));
|
|
||||||
_interstitialAds[adUnitId] = ad;
|
_interstitialAds[adUnitId] = ad;
|
||||||
_adRevenueCache[adUnitId] = AdmobUtils.GetInterstitialAdEcpm(ad);
|
_adRevenueCache[adUnitId] = AdmobUtils.GetInterstitialAdEcpm(ad);
|
||||||
AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Interstitial);
|
AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Interstitial);
|
||||||
onAdLoaded?.Invoke(ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo()?.AdSourceName ?? "",
|
onAdLoaded?.Invoke(ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo()?.AdSourceName ?? "",
|
||||||
adUnitId);
|
adUnitId);
|
||||||
|
|
||||||
AdsActionEvents.TrackAdmobValue(PlatformType.Admob,
|
|
||||||
ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo()?.AdSourceName ?? "",
|
|
||||||
adUnitId,
|
|
||||||
AdsType.Interstitial,
|
|
||||||
AdmobUtils.GetInterstitialAdEcpm(ad));
|
|
||||||
|
|
||||||
ad.OnAdPaid += (AdValue adValue) =>
|
ad.OnAdPaid += (AdValue adValue) =>
|
||||||
{
|
{
|
||||||
LoggerUtils.Debug(String.Format("[Admob] Interstitial ad paid {0} {1}.", adValue.Value, adValue.CurrencyCode));
|
LoggerUtils.Debug(String.Format("[Admob] Interstitial ad paid {0} {1}.", adValue.Value, adValue.CurrencyCode));
|
||||||
|
|
@ -169,11 +160,23 @@ namespace WZ
|
||||||
// 获取价格最高的广告位ID
|
// 获取价格最高的广告位ID
|
||||||
public string GetHighestPayingAdUnit()
|
public string GetHighestPayingAdUnit()
|
||||||
{
|
{
|
||||||
return _adRevenueCache
|
string highestPayingAdUnit = null;
|
||||||
.Where(kvp => IsAdAvailable(kvp.Key))
|
double highestRevenue = -1;
|
||||||
.OrderByDescending(kvp => kvp.Value)
|
|
||||||
.Select(kvp => kvp.Key)
|
foreach (var kvp in _adRevenueCache)
|
||||||
.FirstOrDefault();
|
{
|
||||||
|
var adUnitId = kvp.Key;
|
||||||
|
var revenue = kvp.Value;
|
||||||
|
|
||||||
|
// 确保广告确实已加载并且价格更高
|
||||||
|
if (IsAdAvailable(adUnitId) && revenue > highestRevenue)
|
||||||
|
{
|
||||||
|
highestRevenue = revenue;
|
||||||
|
highestPayingAdUnit = adUnitId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return highestPayingAdUnit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取价格最高的广告收益信息
|
// 获取价格最高的广告收益信息
|
||||||
|
|
@ -185,7 +188,7 @@ namespace WZ
|
||||||
{
|
{
|
||||||
return revenue;
|
return revenue;
|
||||||
}
|
}
|
||||||
return -1;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 清理资源
|
// 清理资源
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,6 @@ namespace WZ
|
||||||
private Dictionary<string, int> _retryCounters = new Dictionary<string, int>();
|
private Dictionary<string, int> _retryCounters = new Dictionary<string, int>();
|
||||||
private Dictionary<string, float> _adStartLoadTimes = new Dictionary<string, float>();
|
private Dictionary<string, float> _adStartLoadTimes = new Dictionary<string, float>();
|
||||||
private Dictionary<string, ShowNativePosition> showingNativeAds = new();
|
private Dictionary<string, ShowNativePosition> showingNativeAds = new();
|
||||||
private Dictionary<string, bool> TimingRefreshDict = new();
|
|
||||||
|
|
||||||
public void InitializeAdUnits(List<string> adUnitIds)
|
public void InitializeAdUnits(List<string> adUnitIds)
|
||||||
{
|
{
|
||||||
|
|
@ -123,13 +122,6 @@ namespace WZ
|
||||||
adUnitId,
|
adUnitId,
|
||||||
AdsType.Native,
|
AdsType.Native,
|
||||||
Time.realtimeSinceStartup - _adStartLoadTimes[adUnitId]);
|
Time.realtimeSinceStartup - _adStartLoadTimes[adUnitId]);
|
||||||
|
|
||||||
AdsActionEvents.TrackAdmobValue(PlatformType.Admob,
|
|
||||||
ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo()?.AdSourceName ?? "",
|
|
||||||
adUnitId,
|
|
||||||
AdsType.Native,
|
|
||||||
AdmobUtils.GetNativeEcpm(ad));
|
|
||||||
|
|
||||||
_retryCounters[adUnitId] = 0;
|
_retryCounters[adUnitId] = 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -144,8 +136,8 @@ namespace WZ
|
||||||
ad.OnAdPaid += (AdValue adValue) =>
|
ad.OnAdPaid += (AdValue adValue) =>
|
||||||
{
|
{
|
||||||
LoggerUtils.Debug($"[Admob] Native ad paid {adValue.Value} {adValue.CurrencyCode}.");
|
LoggerUtils.Debug($"[Admob] Native ad paid {adValue.Value} {adValue.CurrencyCode}.");
|
||||||
AdmobAdsManager.Instance.TrackAdImpression(ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo().AdSourceName ?? "",
|
AdmobAdsManager.Instance.TrackAdImpression(ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo().AdSourceName??"",
|
||||||
ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo().AdSourceInstanceId ?? "",
|
ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo().AdSourceInstanceId??"",
|
||||||
adValue,
|
adValue,
|
||||||
AdsType.Native,
|
AdsType.Native,
|
||||||
adUnitId);
|
adUnitId);
|
||||||
|
|
@ -276,16 +268,6 @@ namespace WZ
|
||||||
|
|
||||||
private void TimingRefresh(string adUnitId)
|
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"));
|
var nativeReflashGap = int.Parse(FireBaseRemoteConfigManager.Instance.GetRemoteConfigString("Native_Reflash_Gap", "0"));
|
||||||
|
|
||||||
if (nativeReflashGap <= 0)
|
if (nativeReflashGap <= 0)
|
||||||
|
|
@ -306,15 +288,10 @@ namespace WZ
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
LoggerUtils.Debug($"[Admob] Native ad ({adUnitId}) timing refresh start. nativeReflashGap = {nativeReflashGap}");
|
|
||||||
|
|
||||||
TimingRefreshDict.AddIfNotExists(adUnitId, true);
|
|
||||||
|
|
||||||
WLoom.QueueOnMainThread(o =>
|
WLoom.QueueOnMainThread(o =>
|
||||||
{
|
{
|
||||||
var refreshAdUnitId = (string)o;
|
var refreshAdUnitId = (string)o;
|
||||||
var remove = TimingRefreshDict.Remove(refreshAdUnitId);
|
LoggerUtils.Debug($"[Admob] Native ad ({adUnitId}) timing refresh load start refreshAdUnitId : {refreshAdUnitId}.");
|
||||||
LoggerUtils.Debug($"[Admob] Native ad ({adUnitId}) timing refresh load start refreshAdUnitId : {refreshAdUnitId}. TimingRefreshDict.Remove = {remove}");
|
|
||||||
if (showingNativeAds.ContainsKey(refreshAdUnitId))
|
if (showingNativeAds.ContainsKey(refreshAdUnitId))
|
||||||
{
|
{
|
||||||
LoadAd(refreshAdUnitId, true);
|
LoadAd(refreshAdUnitId, true);
|
||||||
|
|
@ -347,11 +324,24 @@ namespace WZ
|
||||||
// 获取价格最高的广告位ID
|
// 获取价格最高的广告位ID
|
||||||
public string GetHighestPayingAdUnit()
|
public string GetHighestPayingAdUnit()
|
||||||
{
|
{
|
||||||
return _adRevenueCache
|
string highestPayingAdUnit = null;
|
||||||
.Where(kvp => IsAdAvailable(kvp.Key))
|
double highestRevenue = -1;
|
||||||
.OrderByDescending(kvp => kvp.Value)
|
LoggerUtils.Debug($"[Admob] Native ad GetHighestPayingAdUnit {_adRevenueCache.Count}");
|
||||||
.Select(kvp => kvp.Key)
|
|
||||||
.FirstOrDefault();
|
foreach (var kvp in _adRevenueCache)
|
||||||
|
{
|
||||||
|
var adUnitId = kvp.Key;
|
||||||
|
var revenue = kvp.Value;
|
||||||
|
|
||||||
|
// 确保广告确实已加载并且价格更高
|
||||||
|
if (IsAdAvailable(adUnitId) && revenue > highestRevenue)
|
||||||
|
{
|
||||||
|
highestRevenue = revenue;
|
||||||
|
highestPayingAdUnit = adUnitId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return highestPayingAdUnit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取价格最高的广告收益信息
|
// 获取价格最高的广告收益信息
|
||||||
|
|
@ -364,7 +354,7 @@ namespace WZ
|
||||||
return revenue;
|
return revenue;
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取广告收益信息
|
// 获取广告收益信息
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using GoogleMobileAds.Api;
|
using GoogleMobileAds.Api;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -52,7 +51,7 @@ namespace WZ
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
LoggerUtils.Debug("[Admob] rewarded ad loaded with response : " + ad.GetResponseInfo().ToString());
|
LoggerUtils.Debug("[Admob] rewarded ad loaded with response : " + ad.GetResponseInfo().ToString()+"revenue:"+AdmobUtils.GetRewardedAdEcpm(ad));
|
||||||
LoggerUtils.Debug("[Admob] rewarded ad revenue : " +AdmobUtils.GetRewardedAdEcpm(ad));
|
LoggerUtils.Debug("[Admob] rewarded ad revenue : " +AdmobUtils.GetRewardedAdEcpm(ad));
|
||||||
|
|
||||||
if (!AdmobAdsManager.Instance.FindAdsID(AdsType.Rewarded, adUnitId))
|
if (!AdmobAdsManager.Instance.FindAdsID(AdsType.Rewarded, adUnitId))
|
||||||
|
|
@ -67,12 +66,6 @@ namespace WZ
|
||||||
|
|
||||||
onAdLoaded?.Invoke(ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo()?.AdSourceName ?? "",
|
onAdLoaded?.Invoke(ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo()?.AdSourceName ?? "",
|
||||||
adUnitId);
|
adUnitId);
|
||||||
|
|
||||||
AdsActionEvents.TrackAdmobValue(PlatformType.Admob,
|
|
||||||
ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo()?.AdSourceName ?? "",
|
|
||||||
adUnitId,
|
|
||||||
AdsType.Rewarded,
|
|
||||||
AdmobUtils.GetRewardedAdEcpm(ad));
|
|
||||||
|
|
||||||
ad.OnAdPaid += (AdValue adValue) =>
|
ad.OnAdPaid += (AdValue adValue) =>
|
||||||
{
|
{
|
||||||
|
|
@ -165,11 +158,23 @@ namespace WZ
|
||||||
// 获取价格最高的广告位ID
|
// 获取价格最高的广告位ID
|
||||||
public string GetHighestPayingAdUnit()
|
public string GetHighestPayingAdUnit()
|
||||||
{
|
{
|
||||||
return _adRevenueCache
|
string highestPayingAdUnit = null;
|
||||||
.Where(kvp => IsAdAvailable(kvp.Key))
|
double highestRevenue = -1;
|
||||||
.OrderByDescending(kvp => kvp.Value)
|
|
||||||
.Select(kvp => kvp.Key)
|
foreach (var kvp in _adRevenueCache)
|
||||||
.FirstOrDefault();
|
{
|
||||||
|
var adUnitId = kvp.Key;
|
||||||
|
var revenue = kvp.Value;
|
||||||
|
|
||||||
|
// 确保广告确实已加载并且价格更高
|
||||||
|
if (IsAdAvailable(adUnitId) && revenue > highestRevenue)
|
||||||
|
{
|
||||||
|
highestRevenue = revenue;
|
||||||
|
highestPayingAdUnit = adUnitId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return highestPayingAdUnit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取价格最高的广告收益信息
|
// 获取价格最高的广告收益信息
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using GoogleMobileAds.Api;
|
using GoogleMobileAds.Api;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
|
|
@ -53,19 +52,13 @@ namespace WZ
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
LoggerUtils.Debug("[Admob] appopen ad loaded with response : " + ad.GetResponseInfo().ToString());
|
LoggerUtils.Debug("[Admob] appopen ad loaded with response : " + ad.GetResponseInfo().ToString()+" revenue:"+AdmobUtils.GetAppOpenAdEcpm(ad));
|
||||||
LoggerUtils.Debug("[Admob] appopen ad loaded with revenue : " + AdmobUtils.GetAppOpenAdEcpm(ad));
|
LoggerUtils.Debug("[Admob] appopen ad loaded with revenue : " + AdmobUtils.GetAppOpenAdEcpm(ad));
|
||||||
_appOpenAds[adUnitId] = ad;
|
_appOpenAds[adUnitId] = ad;
|
||||||
_adRevenueCache[adUnitId] = AdmobUtils.GetAppOpenAdEcpm(ad);
|
_adRevenueCache[adUnitId] = AdmobUtils.GetAppOpenAdEcpm(ad);
|
||||||
AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Splash);
|
AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Splash);
|
||||||
onAdLoaded?.Invoke(ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo()?.AdSourceName ?? "",
|
onAdLoaded?.Invoke(ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo()?.AdSourceName ?? "",
|
||||||
adUnitId);
|
adUnitId);
|
||||||
|
|
||||||
AdsActionEvents.TrackAdmobValue(PlatformType.Admob,
|
|
||||||
ad?.GetResponseInfo()?.GetLoadedAdapterResponseInfo()?.AdSourceName ?? "",
|
|
||||||
adUnitId,
|
|
||||||
AdsType.Splash,
|
|
||||||
AdmobUtils.GetAppOpenAdEcpm(ad));
|
|
||||||
|
|
||||||
ad.OnAdPaid += (AdValue adValue) =>
|
ad.OnAdPaid += (AdValue adValue) =>
|
||||||
{
|
{
|
||||||
|
|
@ -156,11 +149,22 @@ namespace WZ
|
||||||
// 获取价格最高的广告位ID
|
// 获取价格最高的广告位ID
|
||||||
public string GetHighestPayingAdUnit()
|
public string GetHighestPayingAdUnit()
|
||||||
{
|
{
|
||||||
return _adRevenueCache
|
string highestPayingAdUnit = null;
|
||||||
.Where(kvp => IsAdAvailable(kvp.Key))
|
double highestRevenue = 0;
|
||||||
.OrderByDescending(kvp => kvp.Value)
|
|
||||||
.Select(kvp => kvp.Key)
|
foreach (var kvp in _adRevenueCache)
|
||||||
.FirstOrDefault();
|
{
|
||||||
|
var adUnitId = kvp.Key;
|
||||||
|
var revenue = kvp.Value;
|
||||||
|
// 确保广告确实已加载并且价格更高
|
||||||
|
if (IsAdAvailable(adUnitId))
|
||||||
|
{
|
||||||
|
highestRevenue = revenue;
|
||||||
|
highestPayingAdUnit = adUnitId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return highestPayingAdUnit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取价格最高的广告收益信息
|
// 获取价格最高的广告收益信息
|
||||||
|
|
@ -172,7 +176,7 @@ namespace WZ
|
||||||
{
|
{
|
||||||
return revenue;
|
return revenue;
|
||||||
}
|
}
|
||||||
return -1;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 清理资源
|
// 清理资源
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ using System.Collections.Generic;
|
||||||
using GoogleMobileAds.Api;
|
using GoogleMobileAds.Api;
|
||||||
using System;
|
using System;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace WZ
|
namespace WZ
|
||||||
{
|
{
|
||||||
|
|
@ -44,20 +43,13 @@ namespace WZ
|
||||||
{
|
{
|
||||||
_retryCounters[adUnitId] = 0;
|
_retryCounters[adUnitId] = 0;
|
||||||
_adRevenueCache[adUnitId] = AdmobUtils.GetBannerEcpm(bannerAds);
|
_adRevenueCache[adUnitId] = AdmobUtils.GetBannerEcpm(bannerAds);
|
||||||
|
LoggerUtils.Debug($"[Admob] banner -[Load]: {adUnitId} successfully");
|
||||||
LoggerUtils.Debug($"[Admob] banner -[Load]: {adUnitId} successfully, ecpm = {AdmobUtils.GetBannerEcpm(bannerAds)}");
|
|
||||||
AdsActionEvents.TrackAdLoaded(AdmobAdsManager.Instance.Platfrom,
|
AdsActionEvents.TrackAdLoaded(AdmobAdsManager.Instance.Platfrom,
|
||||||
bannerAds?.GetResponseInfo()?.GetLoadedAdapterResponseInfo()?.AdSourceName ?? "",
|
bannerAds?.GetResponseInfo()?.GetLoadedAdapterResponseInfo()?.AdSourceName ?? "",
|
||||||
adUnitId,
|
adUnitId,
|
||||||
AdsType.Banner,
|
AdsType.Banner,
|
||||||
Time.realtimeSinceStartup - (_adStartLoadTimes.TryGetValue(adUnitId, out var time) ? time : 0));
|
Time.realtimeSinceStartup - (_adStartLoadTimes.TryGetValue(adUnitId, out var time)? time : 0));
|
||||||
AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Banner);
|
AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Banner);
|
||||||
|
|
||||||
AdsActionEvents.TrackAdmobValue(PlatformType.Admob,
|
|
||||||
bannerAds?.GetResponseInfo()?.GetLoadedAdapterResponseInfo()?.AdSourceName ?? "",
|
|
||||||
adUnitId,
|
|
||||||
AdsType.Banner,
|
|
||||||
AdmobUtils.GetBannerEcpm(bannerAds));
|
|
||||||
};
|
};
|
||||||
|
|
||||||
bannerAds.OnBannerAdLoadFailed += ((msg) =>
|
bannerAds.OnBannerAdLoadFailed += ((msg) =>
|
||||||
|
|
@ -138,6 +130,7 @@ namespace WZ
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_bannerAds.TryGetValue(adUnitId, out var ad))
|
if (_bannerAds.TryGetValue(adUnitId, out var ad))
|
||||||
{
|
{
|
||||||
ad.SetPosition(bannerAlignType == BannerAlignType.CenterBottom ? AdPosition.Bottom : AdPosition.Top);
|
ad.SetPosition(bannerAlignType == BannerAlignType.CenterBottom ? AdPosition.Bottom : AdPosition.Top);
|
||||||
|
|
@ -170,8 +163,23 @@ namespace WZ
|
||||||
// 获取价格最高的广告位ID
|
// 获取价格最高的广告位ID
|
||||||
public string GetHighestPayingAdUnit()
|
public string GetHighestPayingAdUnit()
|
||||||
{
|
{
|
||||||
if (_adRevenueCache.Count == 0) return null;
|
string highestPayingAdUnit = null;
|
||||||
return _adRevenueCache.OrderByDescending(kvp => kvp.Value).First().Key;
|
double highestRevenue = -1;
|
||||||
|
|
||||||
|
foreach (var kvp in _adRevenueCache)
|
||||||
|
{
|
||||||
|
var adUnitId = kvp.Key;
|
||||||
|
var revenue = kvp.Value;
|
||||||
|
|
||||||
|
// 确保广告确实已加载并且价格更高
|
||||||
|
if (revenue > highestRevenue)
|
||||||
|
{
|
||||||
|
highestRevenue = revenue;
|
||||||
|
highestPayingAdUnit = adUnitId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return highestPayingAdUnit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取价格最高的广告收益信息
|
// 获取价格最高的广告收益信息
|
||||||
|
|
@ -202,7 +210,7 @@ namespace WZ
|
||||||
public void ClearAds(string[] adUnitIds)
|
public void ClearAds(string[] adUnitIds)
|
||||||
{
|
{
|
||||||
// 将数组转换为HashSet以提高查找性能
|
// 将数组转换为HashSet以提高查找性能
|
||||||
HashSet<string> validKeys = new HashSet<string>(adUnitIds);
|
HashSet<string> validKeys = new HashSet<string>(adUnitIds);
|
||||||
// 收集需要移除的key
|
// 收集需要移除的key
|
||||||
List<string> keysToRemove = new List<string>();
|
List<string> keysToRemove = new List<string>();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ using System.Collections.Generic;
|
||||||
using GoogleMobileAds.Api;
|
using GoogleMobileAds.Api;
|
||||||
using System;
|
using System;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace WZ
|
namespace WZ
|
||||||
{
|
{
|
||||||
|
|
@ -44,20 +43,14 @@ namespace WZ
|
||||||
{
|
{
|
||||||
_retryCounters[adUnitId] = 0;
|
_retryCounters[adUnitId] = 0;
|
||||||
_adRevenueCache[adUnitId] = AdmobUtils.GetBannerEcpm(bannerAds);
|
_adRevenueCache[adUnitId] = AdmobUtils.GetBannerEcpm(bannerAds);
|
||||||
LoggerUtils.Debug($"[Admob] banner collapsible -[Load]: {adUnitId} successfully iscollapsible: {bannerAds.IsCollapsible()},ecpm: {AdmobUtils.GetBannerEcpm(bannerAds)}");
|
LoggerUtils.Debug($"[Admob] banner collapsible -[Load]: {adUnitId} successfully iscollapsible: {bannerAds.IsCollapsible()}");
|
||||||
|
|
||||||
AdsActionEvents.TrackAdLoaded(AdmobAdsManager.Instance.Platfrom,
|
AdsActionEvents.TrackAdLoaded(AdmobAdsManager.Instance.Platfrom,
|
||||||
bannerAds?.GetResponseInfo()?.GetLoadedAdapterResponseInfo()?.AdSourceName ?? "",
|
bannerAds?.GetResponseInfo()?.GetLoadedAdapterResponseInfo()?.AdSourceName ?? "",
|
||||||
adUnitId,
|
adUnitId,
|
||||||
AdsType.Banner,
|
AdsType.Banner,
|
||||||
Time.realtimeSinceStartup - (_adStartLoadTimes.TryGetValue(adUnitId, out var time) ? time : 0));
|
Time.realtimeSinceStartup - (_adStartLoadTimes.TryGetValue(adUnitId, out var time)? time : 0));
|
||||||
AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Banner);
|
AdsKeyEvents.Instance.LogAdFPUEvents(AdsType.Banner);
|
||||||
|
|
||||||
AdsActionEvents.TrackAdmobValue(PlatformType.Admob,
|
|
||||||
bannerAds?.GetResponseInfo()?.GetLoadedAdapterResponseInfo()?.AdSourceName ?? "",
|
|
||||||
adUnitId,
|
|
||||||
AdsType.Banner,
|
|
||||||
AdmobUtils.GetBannerEcpm(bannerAds));
|
|
||||||
};
|
};
|
||||||
|
|
||||||
bannerAds.OnBannerAdLoadFailed += ((msg) =>
|
bannerAds.OnBannerAdLoadFailed += ((msg) =>
|
||||||
|
|
@ -176,8 +169,23 @@ namespace WZ
|
||||||
// 获取价格最高的广告位ID
|
// 获取价格最高的广告位ID
|
||||||
public string GetHighestPayingAdUnit()
|
public string GetHighestPayingAdUnit()
|
||||||
{
|
{
|
||||||
if (_adRevenueCache.Count == 0) return null;
|
string highestPayingAdUnit = null;
|
||||||
return _adRevenueCache.OrderByDescending(kvp => kvp.Value).First().Key;
|
double highestRevenue = -1;
|
||||||
|
|
||||||
|
foreach (var kvp in _adRevenueCache)
|
||||||
|
{
|
||||||
|
var adUnitId = kvp.Key;
|
||||||
|
var revenue = kvp.Value;
|
||||||
|
|
||||||
|
// 确保广告确实已加载并且价格更高
|
||||||
|
if (revenue > highestRevenue)
|
||||||
|
{
|
||||||
|
highestRevenue = revenue;
|
||||||
|
highestPayingAdUnit = adUnitId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return highestPayingAdUnit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取价格最高的广告收益信息
|
// 获取价格最高的广告收益信息
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using GoogleMobileAds.Api;
|
using GoogleMobileAds.Api;
|
||||||
|
|
@ -8,234 +7,77 @@ using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
namespace WZ
|
namespace WZ
|
||||||
{
|
{
|
||||||
abstract class IStack
|
public class AdmobUtils
|
||||||
{
|
{
|
||||||
public abstract string GetStackName();
|
public static string ParseResponseInfo(ResponseInfo responseInfo)
|
||||||
protected abstract string[] GetBannerStack();
|
|
||||||
protected abstract string[] GetSpStack();
|
|
||||||
protected abstract string[] GetIvStack();
|
|
||||||
protected abstract string[] GetRvStack();
|
|
||||||
protected abstract string[] GetNaStack();
|
|
||||||
public abstract string GetFiledName();
|
|
||||||
|
|
||||||
public string[] GetStackFromName(string stackName)
|
|
||||||
{
|
{
|
||||||
return stackName switch
|
string pubid = "";
|
||||||
{
|
|
||||||
"BannerStack" => GetBannerStack(),
|
try
|
||||||
"SpStack" => GetSpStack(),
|
{
|
||||||
"IvStack" => GetIvStack(),
|
string responseInfoJson = responseInfo.ToString();
|
||||||
"RvStack" => GetRvStack(),
|
JObject responseInfoObj = JObject.Parse(responseInfoJson);
|
||||||
"NaStack" => GetNaStack(),
|
JToken loadedAdapterResponse = responseInfoObj["Response Extras"];
|
||||||
_ => Array.Empty<string>()
|
|
||||||
};
|
if (loadedAdapterResponse != null)
|
||||||
}
|
{
|
||||||
}
|
pubid = loadedAdapterResponse["mediation_group_name"]?.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
return pubid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double GetBannerEcpm(BannerView bannerView)
|
||||||
|
{
|
||||||
|
return GetEcpm(bannerView, "bannerView", "adView", BannerStack);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double GetRewardedAdEcpm(RewardedAd rewardedAd)
|
||||||
|
{
|
||||||
|
return GetEcpm(rewardedAd, "androidRewardedAd", "rewardedAd", RvStack);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double GetInterstitialAdEcpm(InterstitialAd interstitialAd)
|
||||||
|
{
|
||||||
|
return GetEcpm(interstitialAd, "androidInterstitialAd", "interstitialAd", IvStack);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double GetAppOpenAdEcpm(AppOpenAd appOpenAd)
|
||||||
|
{
|
||||||
|
return GetEcpm(appOpenAd, "androidAppOpenAd", "appOpenAd", SpStack);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static double GetNativeEcpm(NativeOverlayAd ad)
|
||||||
|
{
|
||||||
|
return GetEcpm(ad, "nativeOverlayAd", "nativeAd", NaStack);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static double GetEcpm(object o, string cShapeFieldName, string javaFieldName, string[] stack)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return GetEcpm(GetAdValue(GetJavaAdViewOjb(o, cShapeFieldName, javaFieldName), stack));
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LoggerUtils.Error("[AdmobTools] e : " + e.Message + "\t cShapeFieldName : " + cShapeFieldName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
internal class Stack1 : IStack
|
|
||||||
{
|
|
||||||
private static readonly string[] BannerStack = { "zza", "zzj", "zzi", "zze", "zza", "zzk", "zzae" };
|
private static readonly string[] BannerStack = { "zza", "zzj", "zzi", "zze", "zza", "zzk", "zzae" };
|
||||||
private static readonly string[] SpStack = { "zzb", "zza", "zzc", "zza", "zzk", "zzae" };
|
private static readonly string[] SpStack = { "zzb", "zza", "zzc", "zza", "zzk", "zzae" };
|
||||||
private static readonly string[] IvStack = { "zzc", "zzj", "zzf", "zzd", "zzae" };
|
private static readonly string[] IvStack = { "zzc", "zzj", "zzf", "zzd", "zzae" };
|
||||||
private static readonly string[] RvStack = { "zzb", "zzi", "zze", "zze", "zzae" };
|
private static readonly string[] RvStack = { "zzb", "zzi", "zze", "zze", "zzae" };
|
||||||
private static readonly string[] NaStack = { "zza", "zzb", "zzf", "zzD", "zzb", "zzae" };
|
private static readonly string[] NaStack = { "zza", "zzb", "zzf", "zzD", "zzb", "zzae" };
|
||||||
|
|
||||||
public override string GetStackName()
|
|
||||||
{
|
|
||||||
return "Stack1";
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override string[] GetBannerStack()
|
|
||||||
{
|
|
||||||
return BannerStack;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override string[] GetSpStack()
|
|
||||||
{
|
|
||||||
return SpStack;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override string[] GetIvStack()
|
|
||||||
{
|
|
||||||
return IvStack;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override string[] GetRvStack()
|
|
||||||
{
|
|
||||||
return RvStack;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override string[] GetNaStack()
|
|
||||||
{
|
|
||||||
return NaStack;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string GetFiledName()
|
|
||||||
{
|
|
||||||
return "zzd";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal class Stack2 : IStack
|
|
||||||
{
|
|
||||||
private static readonly string[] BannerStack = { "zza", "zzj", "zza", "a", "a", "f", "a", "e", "ae" };
|
|
||||||
private static readonly string[] SpStack = { "zzb", "zza", "a", "a", "a", "e", "ae" };
|
|
||||||
private static readonly string[] IvStack = { "zzc", "zza", "a", "a", "d", "d", "ae" };
|
|
||||||
private static readonly string[] RvStack = { "zzb", "zza", "b", "g", "e", "ae" };
|
|
||||||
private static readonly string[] NaStack = { "zza", "zza", "b", "d", "c", "ae" };
|
|
||||||
|
|
||||||
public override string GetStackName()
|
|
||||||
{
|
|
||||||
return "Stack2";
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override string[] GetBannerStack()
|
|
||||||
{
|
|
||||||
return BannerStack;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override string[] GetSpStack()
|
|
||||||
{
|
|
||||||
return SpStack;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override string[] GetIvStack()
|
|
||||||
{
|
|
||||||
return IvStack;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override string[] GetRvStack()
|
|
||||||
{
|
|
||||||
return RvStack;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override string[] GetNaStack()
|
|
||||||
{
|
|
||||||
return NaStack;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string GetFiledName()
|
|
||||||
{
|
|
||||||
return "d";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal class EmptyStack : IStack
|
|
||||||
{
|
|
||||||
public override string GetStackName()
|
|
||||||
{
|
|
||||||
return "EmptyStack";
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override string[] GetBannerStack()
|
|
||||||
{
|
|
||||||
return Array.Empty<string>();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override string[] GetSpStack()
|
|
||||||
{
|
|
||||||
return Array.Empty<string>();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override string[] GetIvStack()
|
|
||||||
{
|
|
||||||
return Array.Empty<string>();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override string[] GetRvStack()
|
|
||||||
{
|
|
||||||
return Array.Empty<string>();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override string[] GetNaStack()
|
|
||||||
{
|
|
||||||
return Array.Empty<string>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string GetFiledName()
|
|
||||||
{
|
|
||||||
return "null";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public class AdmobUtils
|
|
||||||
{
|
|
||||||
private static IStack _stack;
|
|
||||||
|
|
||||||
private static readonly List<IStack> AvailableStrategies = new()
|
|
||||||
{
|
|
||||||
new Stack1(),
|
|
||||||
new Stack2()
|
|
||||||
// 新增策略只需在此处添加
|
|
||||||
};
|
|
||||||
|
|
||||||
public static double GetBannerEcpm(BannerView bannerView)
|
|
||||||
{
|
|
||||||
return GetEcpm(bannerView, "bannerView", "adView", "BannerStack");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static double GetRewardedAdEcpm(RewardedAd rewardedAd)
|
|
||||||
{
|
|
||||||
return GetEcpm(rewardedAd, "androidRewardedAd", "rewardedAd", "RvStack");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static double GetInterstitialAdEcpm(InterstitialAd interstitialAd)
|
|
||||||
{
|
|
||||||
return GetEcpm(interstitialAd, "androidInterstitialAd", "interstitialAd", "IvStack");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static double GetAppOpenAdEcpm(AppOpenAd appOpenAd)
|
|
||||||
{
|
|
||||||
return GetEcpm(appOpenAd, "androidAppOpenAd", "appOpenAd", "SpStack");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static double GetNativeEcpm(NativeOverlayAd ad)
|
|
||||||
{
|
|
||||||
return GetEcpm(ad, "nativeOverlayAd", "nativeAd", "NaStack");
|
|
||||||
}
|
|
||||||
|
|
||||||
private static double GetEcpm(object o, string cShapeFieldName, string javaFieldName, string stack)
|
|
||||||
{
|
|
||||||
if (_stack is EmptyStack)
|
|
||||||
{
|
|
||||||
return 0.0000001;
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (_stack != null)
|
|
||||||
{
|
|
||||||
return GetEcpm(GetAdValue(GetJavaAdViewOjb(o, cShapeFieldName, javaFieldName), _stack.GetStackFromName(stack)), _stack.GetFiledName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LoggerUtils.Error("[AdmobTools] e : " + e.Message + "\t cShapeFieldName : " + cShapeFieldName);
|
|
||||||
return 0.0000001;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
foreach (var availableStrategy in AvailableStrategies)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var ecpm = GetEcpm(GetAdValue(GetJavaAdViewOjb(o, cShapeFieldName, javaFieldName), availableStrategy.GetStackFromName(stack)), availableStrategy.GetFiledName());
|
|
||||||
_stack = availableStrategy;
|
|
||||||
LoggerUtils.Debug("[AdmobTools] stack name : " + _stack.GetStackName());
|
|
||||||
return ecpm;
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LoggerUtils.Error("[AdmobTools] stack name " + availableStrategy.GetStackName() + "e : " + e.Message + "\t cShapeFieldName : " + cShapeFieldName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_stack = new EmptyStack();
|
|
||||||
|
|
||||||
return 0.0000001;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取java ad view 对象
|
/// 获取java ad view 对象
|
||||||
|
|
@ -304,9 +146,9 @@ namespace WZ
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="obj">admob AdValue对象</param>
|
/// <param name="obj">admob AdValue对象</param>
|
||||||
/// <returns>广告收益</returns>
|
/// <returns>广告收益</returns>
|
||||||
private static double GetEcpm(AndroidJavaObject obj, string fieldName)
|
private static double GetEcpm(AndroidJavaObject obj)
|
||||||
{
|
{
|
||||||
return obj.Get<long>(fieldName) * 1.0 / 1000000;
|
return obj.Get<long>("zzd") * 1.0 / 1000000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -27,9 +27,9 @@ namespace WZ
|
||||||
|
|
||||||
private void InitializeAdNetworks()
|
private void InitializeAdNetworks()
|
||||||
{
|
{
|
||||||
_adNetworks.Add(TpnAdsManager.Instance);
|
|
||||||
_adNetworks.Add(AdmobAdsManager.Instance);
|
_adNetworks.Add(AdmobAdsManager.Instance);
|
||||||
_adNetworks.Add(BigoAdsManager.Instance);
|
_adNetworks.Add(BigoAdsManager.Instance);
|
||||||
|
_adNetworks.Add(TpnAdsManager.Instance);
|
||||||
_adNetworks.Add(MaxAdsManager.Instance);
|
_adNetworks.Add(MaxAdsManager.Instance);
|
||||||
_adNetworks.Add(KwaiAdsManager.Instance);
|
_adNetworks.Add(KwaiAdsManager.Instance);
|
||||||
foreach (var network in _adNetworks)
|
foreach (var network in _adNetworks)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using BigoAds.Scripts.Api;
|
using BigoAds.Scripts.Api;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
|
|
@ -162,11 +161,23 @@ namespace WZ
|
||||||
// 获取价格最高的广告位ID
|
// 获取价格最高的广告位ID
|
||||||
public string GetHighestPayingAdUnit()
|
public string GetHighestPayingAdUnit()
|
||||||
{
|
{
|
||||||
return _adRevenueCache
|
string highestPayingAdUnit = null;
|
||||||
.Where(kvp => IsAdAvailable(kvp.Key))
|
double highestRevenue = 0;
|
||||||
.OrderByDescending(kvp => kvp.Value)
|
|
||||||
.Select(kvp => kvp.Key)
|
foreach (var kvp in _adRevenueCache)
|
||||||
.FirstOrDefault();
|
{
|
||||||
|
var adUnitId = kvp.Key;
|
||||||
|
var revenue = kvp.Value;
|
||||||
|
|
||||||
|
// 确保广告确实已加载并且价格更高
|
||||||
|
if (IsAdAvailable(adUnitId) && revenue > highestRevenue)
|
||||||
|
{
|
||||||
|
highestRevenue = revenue;
|
||||||
|
highestPayingAdUnit = adUnitId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return highestPayingAdUnit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取价格最高的广告收益信息
|
// 获取价格最高的广告收益信息
|
||||||
|
|
@ -178,7 +189,7 @@ namespace WZ
|
||||||
{
|
{
|
||||||
return revenue;
|
return revenue;
|
||||||
}
|
}
|
||||||
return -1;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 清理资源
|
// 清理资源
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using BigoAds.Scripts.Api;
|
using BigoAds.Scripts.Api;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
|
|
@ -170,11 +169,23 @@ namespace WZ
|
||||||
// 获取价格最高的广告位ID
|
// 获取价格最高的广告位ID
|
||||||
public string GetHighestPayingAdUnit()
|
public string GetHighestPayingAdUnit()
|
||||||
{
|
{
|
||||||
return _adRevenueCache
|
string highestPayingAdUnit = null;
|
||||||
.Where(kvp => IsAdAvailable(kvp.Key))
|
double highestRevenue = 0;
|
||||||
.OrderByDescending(kvp => kvp.Value)
|
|
||||||
.Select(kvp => kvp.Key)
|
foreach (var kvp in _adRevenueCache)
|
||||||
.FirstOrDefault();
|
{
|
||||||
|
var adUnitId = kvp.Key;
|
||||||
|
var revenue = kvp.Value;
|
||||||
|
|
||||||
|
// 确保广告确实已加载并且价格更高
|
||||||
|
if (IsAdAvailable(adUnitId) && revenue > highestRevenue)
|
||||||
|
{
|
||||||
|
highestRevenue = revenue;
|
||||||
|
highestPayingAdUnit = adUnitId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return highestPayingAdUnit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取价格最高的广告收益信息
|
// 获取价格最高的广告收益信息
|
||||||
|
|
@ -186,7 +197,7 @@ namespace WZ
|
||||||
{
|
{
|
||||||
return revenue;
|
return revenue;
|
||||||
}
|
}
|
||||||
return -1;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 清理资源
|
// 清理资源
|
||||||
|
|
|
||||||
|
|
@ -10,23 +10,9 @@ namespace WZ
|
||||||
{
|
{
|
||||||
public class AdsActionEvents
|
public class AdsActionEvents
|
||||||
{
|
{
|
||||||
public static void TrackAdmobValue(PlatformType adPlatform, string adSource, string adUnitName, AdsType adFormat, double value)
|
|
||||||
{
|
|
||||||
var eventName = "admob_loaded_value";
|
|
||||||
var dic = new Dictionary<string, object> {
|
|
||||||
{ "ad_platform", adPlatform.ToString()},
|
|
||||||
{ "ad_source", adSource},
|
|
||||||
{ "ad_unit_name", adUnitName},
|
|
||||||
{ "ad_format", adFormat.ToString()},
|
|
||||||
{ "value", value}
|
|
||||||
};
|
|
||||||
FireBaseAnalyticsManager.Instance.LogEvent(eventName, dic);
|
|
||||||
ShuShuEvent.Instance.Track(eventName, dic);
|
|
||||||
LoggerUtils.Debug("[actionevent] TrackAdmobValue"+JsonMapper.ToJson(dic));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void TrackKwaiWaterfallRequest(AdsType adsType, string requestId, int waterfallRequestNumber, int parallelRequests)
|
public static void TrackKwaiWaterfallRequest(AdsType adsType,string requestId,int waterfallRequestNumber,int parallelRequests)
|
||||||
{
|
{
|
||||||
var eventName = "kwai_waterfall_request";
|
var eventName = "kwai_waterfall_request";
|
||||||
var dic = new Dictionary<string, object> {
|
var dic = new Dictionary<string, object> {
|
||||||
{ "request_id", requestId},
|
{ "request_id", requestId},
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ namespace WZ
|
||||||
if (string.IsNullOrEmpty(json))
|
if (string.IsNullOrEmpty(json))
|
||||||
{
|
{
|
||||||
LoggerUtils.Error("KwaiBiddingConfig JSON string is null or empty");
|
LoggerUtils.Error("KwaiBiddingConfig JSON string is null or empty");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isRv)
|
if (isRv)
|
||||||
|
|
@ -38,32 +37,56 @@ namespace WZ
|
||||||
|
|
||||||
public static bool GetKwaiRvFloorOpen()
|
public static bool GetKwaiRvFloorOpen()
|
||||||
{
|
{
|
||||||
return _rvConfig?.kwai_floor_open == 1;
|
if (_rvConfig == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return _rvConfig.kwai_floor_open == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int GetRvParallelRequests()
|
public static int GetRvParallelRequests()
|
||||||
{
|
{
|
||||||
return _rvConfig?.parallel_requests ?? 0;
|
if (_rvConfig == null)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return _rvConfig.parallel_requests;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<FloorConfig> GetRvFloorConfigs()
|
public static List<FloorConfig> GetRvFloorConfigs()
|
||||||
{
|
{
|
||||||
return _rvConfig?.floors ?? null;
|
if (_rvConfig == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return _rvConfig.floors;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool GetKwaiIvFloorOpen()
|
public static bool GetKwaiIvFloorOpen()
|
||||||
{
|
{
|
||||||
return _ivConfig?.kwai_floor_open == 1;
|
if (_ivConfig == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return _ivConfig.kwai_floor_open == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int GetIvParallelRequests()
|
public static int GetIvParallelRequests()
|
||||||
{
|
{
|
||||||
return _ivConfig?.parallel_requests ?? 0;
|
if (_ivConfig == null)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return _ivConfig.parallel_requests;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<FloorConfig> GetIvFloorConfigs()
|
public static List<FloorConfig> GetIvFloorConfigs()
|
||||||
{
|
{
|
||||||
return _ivConfig?.floors ?? null;
|
if (_ivConfig == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return _ivConfig.floors;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetKwaiAppId()
|
public static string GetKwaiAppId()
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,9 @@ namespace WZ
|
||||||
|
|
||||||
public void Initialize()
|
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())
|
if (KwaiAdsConfigParser.GetKwaiRvFloorOpen())
|
||||||
{
|
{
|
||||||
KwaiFloorRvManager.Instance.InitializeWithFloors();
|
KwaiFloorRvManager.Instance.InitializeWithFloors();
|
||||||
|
|
@ -47,82 +50,46 @@ namespace WZ
|
||||||
{
|
{
|
||||||
KwaiFloorIvManager.Instance.InitializeWithFloors();
|
KwaiFloorIvManager.Instance.InitializeWithFloors();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var kwaiAdConfig = new KwaiAds.Scripts.Api.KwaiAdConfig.Builder()
|
||||||
|
.SetAppId(_appId)
|
||||||
|
.SetToken(_token)
|
||||||
|
.SetDebugLog(false)
|
||||||
|
.Build();
|
||||||
|
|
||||||
LoggerUtils.Debug("KwaiAdsManager Initialize start" + _appId + " token:" + _token + " rewardAdUnitId:" + _rewardAdUnitId + " interstitialAdUnitId:" + _interstitialAdUnitId + " useToponKwai:" + UseToponInitKwai());
|
KwaiAds.Scripts.Api.KwaiAdsSdk.Initialize(kwaiAdConfig, new InitResultCallbackImpl());
|
||||||
|
|
||||||
if (UseToponInitKwai())
|
_initialized = true;
|
||||||
{
|
|
||||||
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()
|
public void RefreshAdsData()
|
||||||
{
|
{
|
||||||
_appId = AdConfigParser.GetKwaiAppId();
|
_appId = AdConfigParser.GetKwaiAppId();
|
||||||
_token = AdConfigParser.GetKwaiAppToken();
|
_token = AdConfigParser.GetKwaiAppToken();
|
||||||
|
|
||||||
_rewardAdUnitId = AdConfigParser.GetKwaiAdUnits(AdsType.Rewarded).FirstOrDefault();
|
_rewardAdUnitId = AdConfigParser.GetKwaiAdUnits(AdsType.Rewarded).FirstOrDefault();
|
||||||
_interstitialAdUnitId = AdConfigParser.GetKwaiAdUnits(AdsType.Interstitial).FirstOrDefault();
|
_interstitialAdUnitId = AdConfigParser.GetKwaiAdUnits(AdsType.Interstitial).FirstOrDefault();
|
||||||
if (KwaiAdsConfigParser.GetKwaiRvFloorOpen()) KwaiFloorRvManager.Instance.LoadKwaiBiddingConfig();
|
KwaiFloorRvManager.Instance.LoadKwaiBiddingConfig();
|
||||||
if (KwaiAdsConfigParser.GetKwaiIvFloorOpen()) KwaiFloorIvManager.Instance.LoadKwaiBiddingConfig();
|
KwaiFloorIvManager.Instance.LoadKwaiBiddingConfig();
|
||||||
LoggerUtils.Debug("KwaiAdsManager RefreshAdsData" + _appId + " token:" + _token + " rewardAdUnitId:" + _rewardAdUnitId + " interstitialAdUnitId:" + _interstitialAdUnitId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#region 激励广告
|
#region 激励广告
|
||||||
public void LoadRewarded()
|
public void LoadRewarded()
|
||||||
{
|
{
|
||||||
|
AdsActionEvents.TrackAdStartLoad(Platfrom, AdsType.Rewarded);
|
||||||
if (!KwaiAdsConfigParser.GetKwaiRvFloorOpen())
|
if (!KwaiAdsConfigParser.GetKwaiRvFloorOpen())
|
||||||
{
|
{
|
||||||
LoadRewardedStandard();
|
LoadRewardedStandard();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
AdsActionEvents.TrackAdStartLoad(Platfrom, AdsType.Rewarded);
|
|
||||||
KwaiFloorRvManager.Instance.LoadRewardedWithFloors();
|
KwaiFloorRvManager.Instance.LoadRewardedWithFloors();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadRewardedStandard()
|
public void LoadRewardedStandard()
|
||||||
{
|
{
|
||||||
LoggerUtils.Debug("kwai load rewarded standard"+_rewardAdUnitId);
|
|
||||||
if (string.IsNullOrEmpty(_rewardAdUnitId)) return;
|
if (string.IsNullOrEmpty(_rewardAdUnitId)) return;
|
||||||
AdsActionEvents.TrackAdStartLoad(Platfrom, AdsType.Rewarded);
|
|
||||||
if (_rewardAdController != null)
|
if (_rewardAdController != null)
|
||||||
{
|
{
|
||||||
_rewardAdController.Destroy();
|
_rewardAdController.Destroy();
|
||||||
|
|
@ -184,26 +151,23 @@ namespace WZ
|
||||||
#region 插屏
|
#region 插屏
|
||||||
public void LoadInterstitial()
|
public void LoadInterstitial()
|
||||||
{
|
{
|
||||||
|
AdsActionEvents.TrackAdStartLoad(Platfrom, AdsType.Interstitial);
|
||||||
if (!KwaiAdsConfigParser.GetKwaiIvFloorOpen())
|
if (!KwaiAdsConfigParser.GetKwaiIvFloorOpen())
|
||||||
{
|
{
|
||||||
LoadInterstitialStandard();
|
LoadInterstitialStandard();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
AdsActionEvents.TrackAdStartLoad(Platfrom, AdsType.Interstitial);
|
|
||||||
KwaiFloorIvManager.Instance.LoadInterstitialWithFloors();
|
KwaiFloorIvManager.Instance.LoadInterstitialWithFloors();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LoadInterstitialStandard()
|
private void LoadInterstitialStandard()
|
||||||
{
|
{
|
||||||
LoggerUtils.Debug("kwai load interstitial standard:"+_interstitialAdUnitId);
|
|
||||||
if (string.IsNullOrEmpty(_interstitialAdUnitId)) return;
|
if (string.IsNullOrEmpty(_interstitialAdUnitId)) return;
|
||||||
AdsActionEvents.TrackAdStartLoad(Platfrom, AdsType.Interstitial);
|
|
||||||
if (_interstitialAdController != null)
|
if (_interstitialAdController != null)
|
||||||
{
|
{
|
||||||
_interstitialAdController.Destroy();
|
_interstitialAdController.Destroy();
|
||||||
_interstitialAdController = null;
|
_interstitialAdController = null;
|
||||||
|
|
||||||
}
|
}
|
||||||
_interstitiaAdRevenue = -1;
|
_interstitiaAdRevenue = -1;
|
||||||
_interstitialAdController = KwaiAds.Scripts.Api.KwaiAdsSdk.SDK.getInterstitialAdController();
|
_interstitialAdController = KwaiAds.Scripts.Api.KwaiAdsSdk.SDK.getInterstitialAdController();
|
||||||
|
|
|
||||||
|
|
@ -36,8 +36,8 @@ namespace WZ
|
||||||
{
|
{
|
||||||
_rvParallelRequests = KwaiAdsConfigParser.GetRvParallelRequests();
|
_rvParallelRequests = KwaiAdsConfigParser.GetRvParallelRequests();
|
||||||
_rvFloorConfigs = KwaiAdsConfigParser.GetRvFloorConfigs();
|
_rvFloorConfigs = KwaiAdsConfigParser.GetRvFloorConfigs();
|
||||||
//KwaiAdsManager.Instance._appId = KwaiAdsConfigParser.GetKwaiAppId();
|
KwaiAdsManager.Instance._appId = KwaiAdsConfigParser.GetKwaiAppId();
|
||||||
//KwaiAdsManager.Instance._token = KwaiAdsConfigParser.GetKwaiAppToken();
|
KwaiAdsManager.Instance._token = KwaiAdsConfigParser.GetKwaiAppToken();
|
||||||
LoggerUtils.Debug($"[kwai] floor reward bidding config loaded. FloorOpen: {KwaiAdsConfigParser.GetKwaiRvFloorOpen()}, ParallelRequests: {_rvParallelRequests}, Floors: {_rvFloorConfigs.Count}");
|
LoggerUtils.Debug($"[kwai] floor reward bidding config loaded. FloorOpen: {KwaiAdsConfigParser.GetKwaiRvFloorOpen()}, ParallelRequests: {_rvParallelRequests}, Floors: {_rvFloorConfigs.Count}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -159,6 +159,7 @@ namespace WZ
|
||||||
highestPayingAdUnit = adUnitId;
|
highestPayingAdUnit = adUnitId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return highestPayingAdUnit;
|
return highestPayingAdUnit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,16 +40,8 @@ namespace WZ
|
||||||
{
|
{
|
||||||
EFSdk.get().SetSDKEventCallback((eventName, dict) =>
|
EFSdk.get().SetSDKEventCallback((eventName, dict) =>
|
||||||
{
|
{
|
||||||
if (dict == null)
|
FireBaseAnalyticsManager.Instance.LogEvent(eventName, dict);
|
||||||
{
|
ShuShuEvent.Instance.Track(eventName, dict);
|
||||||
FireBaseAnalyticsManager.Instance.LogEvent(eventName);
|
|
||||||
ShuShuEvent.Instance.Track(eventName);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
FireBaseAnalyticsManager.Instance.LogEvent(eventName, dict);
|
|
||||||
ShuShuEvent.Instance.Track(eventName, dict);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,13 +38,12 @@ namespace WZ
|
||||||
// 获取kwai广告位信息
|
// 获取kwai广告位信息
|
||||||
KwaiAdsConfigParser.Parse(GetRemoteConfigString("kwai_rv_floor"),true);
|
KwaiAdsConfigParser.Parse(GetRemoteConfigString("kwai_rv_floor"),true);
|
||||||
KwaiAdsConfigParser.Parse(GetRemoteConfigString("kwai_iv_floor"),false);
|
KwaiAdsConfigParser.Parse(GetRemoteConfigString("kwai_iv_floor"),false);
|
||||||
|
// 刷新广告位信息
|
||||||
|
AdsSDKManager.Instance.RefreshAdsData();
|
||||||
//AB测试分组参数
|
//AB测试分组参数
|
||||||
GroupSet();
|
GroupSet();
|
||||||
//推送事件
|
//推送事件
|
||||||
EFSdk.get().SetGameActive(true);
|
EFSdk.get().SetGameActive(true);
|
||||||
// 刷新广告位信息
|
|
||||||
AdsSDKManager.Instance.RefreshAdsData();
|
|
||||||
|
|
||||||
// adjust卸载监控
|
// adjust卸载监控
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
|
||||||
|
|
||||||
public static string GetSDKVersion()
|
public static string GetSDKVersion()
|
||||||
{
|
{
|
||||||
return "1.0.5.0";
|
return "1.0.4.2";
|
||||||
}
|
}
|
||||||
protected override void Initialized()
|
protected override void Initialized()
|
||||||
{
|
{
|
||||||
|
|
@ -966,67 +966,6 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
|
||||||
EFSdk.get().SetPersistentStyleV2Text(text1, text2, text3, text4);
|
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
|
#endregion
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -1142,6 +1081,4 @@ public class RushSDKManager : D_MonoSingleton<RushSDKManager>
|
||||||
{
|
{
|
||||||
Application.OpenURL(StaticValue.PrivacyUrl);
|
Application.OpenURL(StaticValue.PrivacyUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,17 +16,18 @@ public class Test : MonoBehaviour
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
RushSDKManager.Instance.InitializeSdk(() => { }, true);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnShowAd()
|
public void OnShowAd()
|
||||||
{
|
{
|
||||||
RushSDKManager.Instance.ShowRewardAd("test", (s, st) => { LoggerUtils.Debug("onreward show callback revenue:" + st); });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnShowInterstitial()
|
public void OnShowInterstitial()
|
||||||
{
|
{
|
||||||
RushSDKManager.Instance.ShowBanner(BannerType.Collapsible, BannerAlignType.CenterBottom);
|
RushSDKManager.Instance.ShowBanner(BannerType.Collapsible,BannerAlignType.CenterBottom);
|
||||||
// KwaiAdsManager.Instance.OnInterstitialCallback();
|
// KwaiAdsManager.Instance.OnInterstitialCallback();
|
||||||
// var small = gameObject.transform.Find("NativeAd-small").GetComponent<RectTransform>();
|
// var small = gameObject.transform.Find("NativeAd-small").GetComponent<RectTransform>();
|
||||||
// var medium = gameObject.transform.Find("NativeAd-medium").GetComponent<RectTransform>();
|
// var medium = gameObject.transform.Find("NativeAd-medium").GetComponent<RectTransform>();
|
||||||
|
|
@ -62,12 +63,17 @@ public class Test : MonoBehaviour
|
||||||
|
|
||||||
public void OnInterShow()
|
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()
|
public void ToponDebug()
|
||||||
{
|
{
|
||||||
// ATSDKAPI.showDebuggerUI();
|
// ATSDKAPI.showDebuggerUI();
|
||||||
|
RushSDKManager.Instance.HideBanner(BannerType.Standard);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void MaxDebug()
|
public void MaxDebug()
|
||||||
|
|
@ -78,31 +84,28 @@ public class Test : MonoBehaviour
|
||||||
|
|
||||||
public void Native1Show()
|
public void Native1Show()
|
||||||
{
|
{
|
||||||
RushSDKManager.Instance.HideBanner(BannerType.Collapsible);
|
var adUnitId = StaticValue.AdmobSmallNativeId;
|
||||||
// var adUnitId = StaticValue.AdmobSmallNativeId;
|
var nativeAdPosition = NativeAdPosition.Create(new NativeTemplateStyle
|
||||||
// var nativeAdPosition = NativeAdPosition.Create(new NativeTemplateStyle
|
{
|
||||||
// {
|
TemplateId = NativeTemplateId.Small
|
||||||
// TemplateId = NativeTemplateId.Small
|
}, 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}");
|
||||||
// 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))
|
||||||
// if (AdsSDKManager.Instance.IsNativeAdReady(adUnitId))
|
{
|
||||||
// {
|
AdsSDKManager.Instance.ShowNativeAd("test", adUnitId, nativeAdPosition);
|
||||||
// AdsSDKManager.Instance.ShowNativeAd("test", adUnitId, nativeAdPosition);
|
}
|
||||||
// }
|
else
|
||||||
// else
|
{
|
||||||
// {
|
Debug.LogWarning($"luojian admob native ad ({adUnitId}) start show fail,not ready.");
|
||||||
// Debug.LogWarning($"luojian admob native ad ({adUnitId}) start show fail,not ready.");
|
}
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Native1Hide()
|
public void Native1Hide()
|
||||||
{
|
{
|
||||||
RushSDKManager.Instance.HideBanner(BannerType.Standard);
|
var adUnitId = StaticValue.AdmobSmallNativeId;
|
||||||
// var adUnitId = StaticValue.AdmobSmallNativeId;
|
AdsSDKManager.Instance.RemoveNativeAd(adUnitId);
|
||||||
// AdsSDKManager.Instance.RemoveNativeAd(adUnitId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void Native2Show()
|
public void Native2Show()
|
||||||
{
|
{
|
||||||
var adUnitId = StaticValue.AdmobNativeId;
|
var adUnitId = StaticValue.AdmobNativeId;
|
||||||
|
|
@ -179,15 +182,4 @@ public class Test : MonoBehaviour
|
||||||
var adUnitId = StaticValue.AdmobMinddleNativeId;
|
var adUnitId = StaticValue.AdmobMinddleNativeId;
|
||||||
AdsSDKManager.Instance.RemoveNativeAd(adUnitId);
|
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}"); });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace WZ
|
|
||||||
{
|
|
||||||
public class EditorFileUtils
|
|
||||||
{
|
|
||||||
public static List<string> GetAllFileWhereSuffix(string projectPath, string suffix)
|
|
||||||
{
|
|
||||||
return ListFiles(projectPath).Where(file => file.EndsWith(suffix)).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static List<string> ListFiles(string path, List<string> fileList = null)
|
|
||||||
{
|
|
||||||
fileList ??= new List<string>();
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// 获取当前目录下所有文件
|
|
||||||
var files = Directory.GetFiles(path);
|
|
||||||
fileList.AddRange(files);
|
|
||||||
|
|
||||||
// 递归获取子文件夹中的所有文件
|
|
||||||
var subdirectories = Directory.GetDirectories(path);
|
|
||||||
foreach (var subdirectory in subdirectories)
|
|
||||||
{
|
|
||||||
ListFiles(subdirectory, fileList);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LoggerUtils.Error("An error occurred: " + e.Message);
|
|
||||||
}
|
|
||||||
|
|
||||||
return fileList;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 86e31887016d04347ac602e07c22a9d0
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
|
@ -23,7 +23,7 @@ namespace WZ
|
||||||
|
|
||||||
public static void Info(object message, Object context = null)
|
public static void Info(object message, Object context = null)
|
||||||
{
|
{
|
||||||
if (!_enabled) return;
|
if (!!_enabled) return;
|
||||||
Log($"[INFO][WZSDK] {message}", context);
|
Log($"[INFO][WZSDK] {message}", context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -35,7 +35,7 @@ namespace WZ
|
||||||
|
|
||||||
public static void Error(object message, Object context = null)
|
public static void Error(object message, Object context = null)
|
||||||
{
|
{
|
||||||
if (!_enabled) return;
|
if (!!_enabled) return;
|
||||||
Log($"[ERROR][WZSDK] {message}", context);
|
Log($"[ERROR][WZSDK] {message}", context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,173 +0,0 @@
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 24597cd26d7b463d9767c1d5d3e0ad1c
|
|
||||||
timeCreated: 1761039734
|
|
||||||
|
|
@ -1,103 +1,3 @@
|
||||||
# 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
|
|
||||||
|
|
||||||
- None
|
|
||||||
|
|
||||||
## Known issues
|
|
||||||
|
|
||||||
- None
|
|
||||||
|
|
||||||
## Changelog
|
|
||||||
|
|
||||||
- AdmobId通过配置文件读取
|
|
||||||
- 优化Kwai AppId获取方式
|
|
||||||
|
|
||||||
# Version 1.0.4.3 2025.9.25
|
|
||||||
|
|
||||||
## Bugs
|
|
||||||
|
|
||||||
- None
|
|
||||||
|
|
||||||
## Known issues
|
|
||||||
|
|
||||||
- None
|
|
||||||
|
|
||||||
## Changelog
|
|
||||||
|
|
||||||
- 修复admob广告获取不到收益问题
|
|
||||||
- 修复只有admob广告准备好的情况下且获取不到比价展示topon问题
|
|
||||||
|
|
||||||
# Version 1.0.4.2 2025.9.24
|
# Version 1.0.4.2 2025.9.24
|
||||||
|
|
||||||
## Bugs
|
## Bugs
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Build from HY-LSZNWIN10 at 2025/10/16 10:34:49
|
Build from HY-LSZNWIN10 at 2025/9/23 19:33:57
|
||||||
|
|
@ -136,8 +136,8 @@ namespace AnyThink.Scripts.Editor
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//var metaDataElements = elementApplication.Descendants().Where(element => element.Name.LocalName.Equals("meta-data"));
|
var metaDataElements = elementApplication.Descendants().Where(element => element.Name.LocalName.Equals("meta-data"));
|
||||||
//addGoogleApplicationIdIfNeeded(elementApplication, metaDataElements);
|
addGoogleApplicationIdIfNeeded(elementApplication, metaDataElements);
|
||||||
// Save the updated manifest file.
|
// Save the updated manifest file.
|
||||||
manifest.Save(manifestPath);
|
manifest.Save(manifestPath);
|
||||||
}
|
}
|
||||||
|
|
|
||||||