Commit 84859580 authored by 王雪伟's avatar 王雪伟

修复掌心汇川关闭回调

parent 6fa33815
...@@ -69,7 +69,7 @@ public class AdManager ...@@ -69,7 +69,7 @@ public class AdManager
case ZXADConfig.PLANTFORM_AD_TT: case ZXADConfig.PLANTFORM_AD_TT:
#if UNITY_ANDROID #if UNITY_ANDROID
AndroidJavaClass jc = new AndroidJavaClass("com.unity.adcommon.unity.TTADManager"); AndroidJavaClass jc = new AndroidJavaClass("com.unity.adcommon.unity.TTADManager");
jc.CallStatic("init", id.codeAppId); jc.CallStatic("init", GetActivity(), id.codeAppId);
//获取穿山甲权限 //获取穿山甲权限
SDK.RequestPermissionIfNecessary(); SDK.RequestPermissionIfNecessary();
#elif UNITY_IOS #elif UNITY_IOS
...@@ -87,7 +87,7 @@ public class AdManager ...@@ -87,7 +87,7 @@ public class AdManager
if (id.codeAppId != null && id.codeAppId != "") if (id.codeAppId != null && id.codeAppId != "")
{ {
AndroidJavaClass jc2 = new AndroidJavaClass("com.unity.adcommon.unity.TTADManager"); AndroidJavaClass jc2 = new AndroidJavaClass("com.unity.adcommon.unity.TTADManager");
jc2.CallStatic("initYLB", id.codeAppId); jc2.CallStatic("initYLB", GetActivity(), id.codeAppId);
} }
#endif #endif
break; break;
...@@ -105,12 +105,12 @@ public class AdManager ...@@ -105,12 +105,12 @@ public class AdManager
break; break;
} }
} }
callback(true);
IsInitAd = true; IsInitAd = true;
callback(true);
}), new Action<string, string>((code, errMsg) => }), new Action<string, string>((code, errMsg) =>
{ {
callback(false);
Debug.unityLogger.Log(ZXADConfig.ADManagerTAG, code + "AdInit 请求失败" + errMsg); Debug.unityLogger.Log(ZXADConfig.ADManagerTAG, code + "AdInit 请求失败" + errMsg);
callback(false);
})); }));
} }
...@@ -131,27 +131,29 @@ public class AdManager ...@@ -131,27 +131,29 @@ public class AdManager
HttpTool.Instance._GetAD(AdLoadUrl, paras, new Action<List<AdEntity>>((AdConfigList) => HttpTool.Instance._GetAD(AdLoadUrl, paras, new Action<List<AdEntity>>((AdConfigList) =>
{ {
Debug.unityLogger.Log(ZXADConfig.ADManagerTAG, "Splash 请求成功"); Debug.unityLogger.Log(ZXADConfig.ADManagerTAG, "Splash 请求成功");
if (AdConfigList != null && AdConfigList.Count > 0) if (AdConfigList != null && AdConfigList.Count > 0)
{ {
//Splash数据 //Splash数据
List<AdEntity> bannerAdList = new List<AdEntity>(); List<AdEntity> splashAdList = new List<AdEntity>();
bannerAdList.Add(AdConfigList[0]); splashAdList.Add(AdConfigList[0]);
if (AdConfigList[0].backups != null && AdConfigList[0].backups.Count > 0) if (AdConfigList[0].backups != null && AdConfigList[0].backups.Count > 0)
{ {
bannerAdList.AddRange(AdConfigList[0].backups); splashAdList.AddRange(AdConfigList[0].backups);
} }
Debug.unityLogger.Log(ZXADConfig.ADManagerTAG, "Splash成功 数量"+ splashAdList.Count);
//加载Splash广告 //加载Splash广告
mLoadSplashAd("splash", listener, bannerAdList); mLoadSplashAd("splash", listener, splashAdList);
} }
else else
{ {
listener.onError("Splash数据null"); listener.onError("Splash数据null");
listener.onLastError();
} }
}), new Action<string, string>((code, errMsg) => }), new Action<string, string>((code, errMsg) =>
{ {
listener.onError("code" + code + "errMsg" + errMsg); listener.onError("code" + code + "errMsg" + errMsg);
listener.onLastError();
Debug.unityLogger.Log(ZXADConfig.ADManagerTAG, "Splash 请求失败" + errMsg); Debug.unityLogger.Log(ZXADConfig.ADManagerTAG, "Splash 请求失败" + errMsg);
})); }));
} }
...@@ -183,6 +185,7 @@ public class AdManager ...@@ -183,6 +185,7 @@ public class AdManager
else else
{ {
Debug.unityLogger.Log(ZXADConfig.ADManagerTAG, "Splash失败 " + entity.adPlatform + " CodeID " + entity.codeId); Debug.unityLogger.Log(ZXADConfig.ADManagerTAG, "Splash失败 " + entity.adPlatform + " CodeID " + entity.codeId);
Debug.unityLogger.Log(ZXADConfig.ADManagerTAG, "Splash失败 数量" + totalEntityList.Count);
if (totalEntityList.Count > 0) if (totalEntityList.Count > 0)
{ {
entity = totalEntityList[0]; entity = totalEntityList[0];
...@@ -208,6 +211,7 @@ public class AdManager ...@@ -208,6 +211,7 @@ public class AdManager
/// <param name="callback"></param> /// <param name="callback"></param>
private void mLoadSplashPlatform(AdEntity entity, ZXADSplashListener listener, Action<bool> callback) private void mLoadSplashPlatform(AdEntity entity, ZXADSplashListener listener, Action<bool> callback)
{ {
Debug.unityLogger.Log(ZXADConfig.ADManagerTAG, "Splash加载 " + entity.adPlatform);
switch (entity.adPlatform) switch (entity.adPlatform)
{ {
case ZXADConfig.PLANTFORM_AD_TT: case ZXADConfig.PLANTFORM_AD_TT:
......
...@@ -14,11 +14,10 @@ public class ZXADConfig ...@@ -14,11 +14,10 @@ public class ZXADConfig
} }
} }
public const int ZXAD_VC = 129;
public const string ZXAD_VN = "1.2.9";
public const string ADManagerTAG = "AdManager"; public const string ADManagerTAG = "AdManager";
public const string PLANTFORM_AD_TT = "chuanshanjia"; //穿山甲 public const string PLANTFORM_AD_TT = "chuanshanjia"; //穿山甲
public const string PLANTFORM_AD_GDT = "guangdiantong"; //广点通 public const string PLANTFORM_AD_GDT = "guangdiantong"; //广点通
public const string PLANTFORM_AD_KUS = "kuaishou"; //快手 public const string PLANTFORM_AD_KUS = "kuaishou"; //快手
......
...@@ -120,9 +120,9 @@ public class CSJSplshADUtils ...@@ -120,9 +120,9 @@ public class CSJSplshADUtils
public void OnError(int code, string message) public void OnError(int code, string message)
{ {
EventUtils.onEventPullFail(entity, code.ToString(), message); EventUtils.onEventPullFail(entity, code.ToString(), message);
callback(false);
listener.onError("CSJ SplshAd code" + code + "message" + message); listener.onError("CSJ SplshAd code" + code + "message" + message);
Debug.Log("splash load Onerror:" + code + ":" + message); Debug.Log("splash load Onerror:" + code + ":" + message);
callback(false);
} }
public void OnSplashAdLoad(BUSplashAd ad) public void OnSplashAdLoad(BUSplashAd ad)
......
package com.unity.adcommon.unity; package com.unity.adcommon.unity;
import android.app.Activity;
import android.content.Context;
import com.bytedance.sdk.openadsdk.TTAdConfig; import com.bytedance.sdk.openadsdk.TTAdConfig;
import com.bytedance.sdk.openadsdk.TTAdConstant; import com.bytedance.sdk.openadsdk.TTAdConstant;
import com.bytedance.sdk.openadsdk.TTAdSdk; import com.bytedance.sdk.openadsdk.TTAdSdk;
...@@ -11,33 +14,42 @@ import com.wannuosili.sdk.WNAdSdk; ...@@ -11,33 +14,42 @@ import com.wannuosili.sdk.WNAdSdk;
*/ */
public class TTADManager { public class TTADManager {
public static void init(String codeId){ public static void init(Activity context, String codeId){
TTAdSdk.init( context.runOnUiThread(() -> {
AppliContext.get(), TTAdSdk.init(
new TTAdConfig.Builder() AppliContext.get(),
.appId(codeId) new TTAdConfig.Builder()
.useTextureView(true) //使用TextureView控件播放视频,默认为SurfaceView,当有SurfaceView冲突的场景,可以使用TextureView .appId(codeId)
.appName("test") .useTextureView(true) //使用TextureView控件播放视频,默认为SurfaceView,当有SurfaceView冲突的场景,可以使用TextureView
.titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK) .appName("test")
.allowShowNotify(true) //是否允许sdk展示通知栏提示 .titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK)
.allowShowPageWhenScreenLock(true) //是否在锁屏场景支持展示广告落地页 .allowShowNotify(true) //是否允许sdk展示通知栏提示
.debug(false) //测试阶段打开,可以通过日志排查问题,上线时去除该调用 .allowShowPageWhenScreenLock(true) //是否在锁屏场景支持展示广告落地页
.directDownloadNetworkType( .debug(false) //测试阶段打开,可以通过日志排查问题,上线时去除该调用
TTAdConstant.NETWORK_STATE_WIFI, .directDownloadNetworkType(
TTAdConstant.NETWORK_STATE_4G TTAdConstant.NETWORK_STATE_WIFI,
) //允许直接下载的网络状态集合 TTAdConstant.NETWORK_STATE_4G
.supportMultiProcess(false) //是否支持多进程,true支持 ) //允许直接下载的网络状态集合
//.httpStack(new MyOkStack3())//自定义网络库,demo中给出了okhttp3版本的样例,其余请自行开发或者咨询工作人员。 .supportMultiProcess(false) //是否支持多进程,true支持
.build()); //.httpStack(new MyOkStack3())//自定义网络库,demo中给出了okhttp3版本的样例,其余请自行开发或者咨询工作人员。
.build());
});
} }
public static void initYLB(String appId){ public static void initYLB(Activity context, String appId){
WNAdSdk.initialize(new WNAdConfig.Builder() context.runOnUiThread(() -> {
.setAppId(appId) // 平台申请的appId WNAdSdk.initialize(new WNAdConfig.Builder()
.setDebug(false) // 是否是debug模式, 默认为false .setAppId(appId) // 平台申请的appId
.setContext(AppliContext.get()) .setDebug(false) // 是否是debug模式, 默认为false
.build()); .setContext(AppliContext.get())
.build());
});
} }
} }
...@@ -15,6 +15,18 @@ public class AdDemo : MonoBehaviour ...@@ -15,6 +15,18 @@ public class AdDemo : MonoBehaviour
private string FullVideo = "fullvideo"; private string FullVideo = "fullvideo";
private string Reward = "video"; private string Reward = "video";
private string Interstitial = "Interstitial"; private string Interstitial = "Interstitial";
private void Awake()
{ //AdManager.Instance.LoadSplshAd(new SplshAdListener(this));
}
private void Start()
{
AdManager.Instance.InitAd(new System.Action<bool>((cb) => {
OnClickPlaySplshAd();
}));
}
public void OnClickLoadRewardAd() public void OnClickLoadRewardAd()
{ {
AdManager.Instance.LoadCacheRewardVideoAd("video"); AdManager.Instance.LoadCacheRewardVideoAd("video");
...@@ -31,7 +43,6 @@ public class AdDemo : MonoBehaviour ...@@ -31,7 +43,6 @@ public class AdDemo : MonoBehaviour
//private Thread loadThread = new Thread(new LoadNextVideo()); //private Thread loadThread = new Thread(new LoadNextVideo());
private void LoadNextVideo() private void LoadNextVideo()
{ {
Debug.unityLogger.Log("开启子线程");
AdManager.Instance.LoadCacheRewardVideoAd("video"); AdManager.Instance.LoadCacheRewardVideoAd("video");
} }
public sealed class RewardAdListener : ZXADRewardVideoListener public sealed class RewardAdListener : ZXADRewardVideoListener
...@@ -112,11 +123,12 @@ public class AdDemo : MonoBehaviour ...@@ -112,11 +123,12 @@ public class AdDemo : MonoBehaviour
public void onError(string errorMsg) public void onError(string errorMsg)
{ {
this.demo.RewardAdResult.text = "开屏错误" + errorMsg; this.demo.RewardAdResult.text = "开屏错误" + errorMsg;
Debug.unityLogger.Log("开屏1Error"+ errorMsg);
} }
public void onLastError() public void onLastError()
{ {
Debug.unityLogger.Log("开屏2Error");
} }
} }
......
...@@ -3028,7 +3028,7 @@ PrefabInstance: ...@@ -3028,7 +3028,7 @@ PrefabInstance:
- target: {fileID: 2853166085728200634, guid: 1053be02c113a7a45adf322c929b0cb6, - target: {fileID: 2853166085728200634, guid: 1053be02c113a7a45adf322c929b0cb6,
type: 3} type: 3}
propertyPath: IS_TEST propertyPath: IS_TEST
value: 0 value: 1
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2853166085728200635, guid: 1053be02c113a7a45adf322c929b0cb6, - target: {fileID: 2853166085728200635, guid: 1053be02c113a7a45adf322c929b0cb6,
type: 3} type: 3}
......
...@@ -31,7 +31,8 @@ namespace ZXHC ...@@ -31,7 +31,8 @@ namespace ZXHC
public void OnClickFeed() public void OnClickFeed()
{ {
AdEntity entity = new AdEntity(); AdEntity entity = new AdEntity();
entity.codeId = "1100023"; //entity.codeId = "1100437";
entity.codeId = "2100156";
ZXHCFeedUtil.Instance.LoadCacheFeedAd(entity, new Action<bool>((cb) => ZXHCFeedUtil.Instance.LoadCacheFeedAd(entity, new Action<bool>((cb) =>
{ {
Debug.unityLogger.Log("LoadCacheFeedAd" + cb); Debug.unityLogger.Log("LoadCacheFeedAd" + cb);
...@@ -42,9 +43,13 @@ namespace ZXHC ...@@ -42,9 +43,13 @@ namespace ZXHC
Debug.unityLogger.Log("ShowCacheFeedAd" + cb); Debug.unityLogger.Log("ShowCacheFeedAd" + cb);
})); }));
} }
})); }));
} }
public void OnClickCloseFeed()
{
ZXHCFeedUtil.Instance.CloseFeedAd();
}
private sealed class SplshAdListener : ZXADSplashListener private sealed class SplshAdListener : ZXADSplashListener
......
...@@ -202,7 +202,7 @@ Transform: ...@@ -202,7 +202,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 0 m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &130740052 --- !u!1 &130740052
GameObject: GameObject:
...@@ -360,6 +360,136 @@ CanvasRenderer: ...@@ -360,6 +360,136 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 467396071} m_GameObject: {fileID: 467396071}
m_CullTransparentMesh: 0 m_CullTransparentMesh: 0
--- !u!1 &568385589
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 568385590}
- component: {fileID: 568385593}
- component: {fileID: 568385592}
- component: {fileID: 568385591}
m_Layer: 5
m_Name: CloseFeed
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &568385590
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 568385589}
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_Children:
- {fileID: 1319697699}
m_Father: {fileID: 2103191286}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 132, y: 286}
m_SizeDelta: {x: 221.93564, y: 66.367256}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &568385591
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 568385589}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
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: 568385592}
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 2103191287}
m_MethodName: OnClickCloseFeed
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 &568385592
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 568385589}
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_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 &568385593
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 568385589}
m_CullTransparentMesh: 0
--- !u!1 &718195566 --- !u!1 &718195566
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
...@@ -438,6 +568,75 @@ CanvasRenderer: ...@@ -438,6 +568,75 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 718195566} m_GameObject: {fileID: 718195566}
m_CullTransparentMesh: 0 m_CullTransparentMesh: 0
--- !u!1001 &734889873
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 2853166085728200632, guid: 1053be02c113a7a45adf322c929b0cb6,
type: 3}
propertyPath: m_Name
value: HTTP
objectReference: {fileID: 0}
- target: {fileID: 2853166085728200635, guid: 1053be02c113a7a45adf322c929b0cb6,
type: 3}
propertyPath: m_RootOrder
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2853166085728200635, guid: 1053be02c113a7a45adf322c929b0cb6,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2853166085728200635, guid: 1053be02c113a7a45adf322c929b0cb6,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2853166085728200635, guid: 1053be02c113a7a45adf322c929b0cb6,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2853166085728200635, guid: 1053be02c113a7a45adf322c929b0cb6,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2853166085728200635, guid: 1053be02c113a7a45adf322c929b0cb6,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2853166085728200635, guid: 1053be02c113a7a45adf322c929b0cb6,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2853166085728200635, guid: 1053be02c113a7a45adf322c929b0cb6,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2853166085728200635, guid: 1053be02c113a7a45adf322c929b0cb6,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2853166085728200635, guid: 1053be02c113a7a45adf322c929b0cb6,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2853166085728200635, guid: 1053be02c113a7a45adf322c929b0cb6,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 1053be02c113a7a45adf322c929b0cb6, type: 3}
--- !u!1 &1256318123 --- !u!1 &1256318123
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
...@@ -698,6 +897,84 @@ CanvasRenderer: ...@@ -698,6 +897,84 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1285899837} m_GameObject: {fileID: 1285899837}
m_CullTransparentMesh: 0 m_CullTransparentMesh: 0
--- !u!1 &1319697698
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1319697699}
- component: {fileID: 1319697701}
- component: {fileID: 1319697700}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1319697699
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1319697698}
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_Children: []
m_Father: {fileID: 568385590}
m_RootOrder: 0
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 &1319697700
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1319697698}
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_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
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: CloseFeed
--- !u!222 &1319697701
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1319697698}
m_CullTransparentMesh: 0
--- !u!1 &1433212422 --- !u!1 &1433212422
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
...@@ -762,7 +1039,7 @@ Transform: ...@@ -762,7 +1039,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 2 m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1728463832 --- !u!1 &1728463832
GameObject: GameObject:
...@@ -988,8 +1265,9 @@ RectTransform: ...@@ -988,8 +1265,9 @@ RectTransform:
- {fileID: 1728463833} - {fileID: 1728463833}
- {fileID: 1256318124} - {fileID: 1256318124}
- {fileID: 1285899838} - {fileID: 1285899838}
- {fileID: 568385590}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 1 m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0}
......
...@@ -43,10 +43,18 @@ public class ZXHCFeedUtil ...@@ -43,10 +43,18 @@ public class ZXHCFeedUtil
/// </summary> /// </summary>
public void CloseFeedAd() public void CloseFeedAd()
{ {
if (feedAd != null) Debug.unityLogger.Log("CloseFeed1");
{ //if (feedAd != null)
feedAd.CLoseAD(); //{
} // Debug.unityLogger.Log("CloseFeed2");
//}
//else
//{
// Debug.unityLogger.Log("CloseFeed3");
// feedAd.CLoseAD();
//}
feedAd.CLoseAD();
} }
/// <summary> /// <summary>
...@@ -55,7 +63,7 @@ public class ZXHCFeedUtil ...@@ -55,7 +63,7 @@ public class ZXHCFeedUtil
/// <param name="entity"></param> /// <param name="entity"></param>
public void ShowCacheFeedAd(AdEntity entity, Action<bool> callback) public void ShowCacheFeedAd(AdEntity entity, Action<bool> callback)
{ {
CloseFeedAd(); //CloseFeedAd();
if (feedAdCacheList.Count > 0) if (feedAdCacheList.Count > 0)
{ {
feedAd = feedAdCacheList.Dequeue(); feedAd = feedAdCacheList.Dequeue();
......
...@@ -5,7 +5,7 @@ namespace ZXHC ...@@ -5,7 +5,7 @@ namespace ZXHC
{ {
public class ZXHCFeedAd : MonoBehaviour public class ZXHCFeedAd : MonoBehaviour
{ {
private AndroidJavaObject splashAd; private AndroidJavaObject feedAd;
internal AndroidJavaObject container; internal AndroidJavaObject container;
private string posId; private string posId;
private int width; private int width;
...@@ -24,9 +24,9 @@ namespace ZXHC ...@@ -24,9 +24,9 @@ namespace ZXHC
private void init() private void init()
{ {
if (splashAd == null) if (feedAd == null)
{ {
splashAd = new AndroidJavaObject("com.ym.zxhcsdk.view.ZXHCFeedAD", ZXHCUtils.GetActivity(), posId, width, height, listenerProxy); feedAd = new AndroidJavaObject("com.ym.zxhcsdk.view.ZXHCFeedAD", ZXHCUtils.GetActivity(), posId, width, height, listenerProxy);
} }
} }
...@@ -43,18 +43,18 @@ namespace ZXHC ...@@ -43,18 +43,18 @@ namespace ZXHC
} }
// 由于 Android 的 fetchDelay 和 skipView 不允许动态设置,故只能延迟初始化 // 由于 Android 的 fetchDelay 和 skipView 不允许动态设置,故只能延迟初始化
init(); init();
this.splashAd.Call("loadAD"); this.feedAd.Call("loadAD");
} }
public void Show(object container) public void Show(object container)
{ {
AndroidJavaObject splashContainer = (AndroidJavaObject)container; AndroidJavaObject feedContainer = (AndroidJavaObject)container;
if (CheckNotReady()) if (CheckNotReady())
{ {
return; return;
} }
this.splashAd.Call("showAd", splashContainer); this.feedAd.Call("showAd", feedContainer);
this.container = splashContainer; this.container = feedContainer;
} }
public void CLoseAD() public void CLoseAD()
...@@ -63,7 +63,13 @@ namespace ZXHC ...@@ -63,7 +63,13 @@ namespace ZXHC
{ {
return; return;
} }
this.splashAd.Call("destroyFeedAd", container); if (container != null)
{
this.feedAd.Call("destroyFeedAd", container);
container = null;
}
} }
/* 检查是否未准备好 */ /* 检查是否未准备好 */
...@@ -73,7 +79,7 @@ namespace ZXHC ...@@ -73,7 +79,7 @@ namespace ZXHC
{ {
return true; return true;
} }
if (splashAd == null) if (feedAd == null)
{ {
Debug.Log("请先加载广告"); Debug.Log("请先加载广告");
return true; return true;
......
...@@ -10,7 +10,7 @@ namespace ZXHC ...@@ -10,7 +10,7 @@ namespace ZXHC
private static AndroidJavaObject activity; private static AndroidJavaObject activity;
public static AndroidJavaObject GetActivity() public static AndroidJavaObject GetActivity()
{ {
#if UNITY_ANDROID #if UNITY_ANDROID&&!UNITY_EDITOR
if (activity == null) if (activity == null)
{ {
var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
...@@ -43,8 +43,11 @@ namespace ZXHC ...@@ -43,8 +43,11 @@ namespace ZXHC
public static string GetDeviceOaid() public static string GetDeviceOaid()
{ {
#if UNITY_ANDROID&&!UNITY_EDITOR
AndroidJavaObject phoneUtil = new AndroidJavaClass("com.ym.zxhcsdk.PhoneUtils").CallStatic<AndroidJavaObject>("getInstance"); AndroidJavaObject phoneUtil = new AndroidJavaClass("com.ym.zxhcsdk.PhoneUtils").CallStatic<AndroidJavaObject>("getInstance");
return phoneUtil.Call<string>("getoaid"); return phoneUtil.Call<string>("getoaid");
#endif
return "";
} }
} }
} }
......
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ZXHC;
public class AndroidPhoneUtils
{
public static string GetAppVC()
{
#if !UNITY_EDITOR && UNITY_ANDROID
AndroidJavaObject util = new AndroidJavaClass("com.unity.adcommon.unity.AndroidPhoneUtils").CallStatic<AndroidJavaObject>("getInstance");
return util.Call<int>("getAppVersionCode", ZXHCUtils.GetActivity())+"";
#endif
return "";
}
public static string GetAppVN()
{
#if !UNITY_EDITOR && UNITY_ANDROID
AndroidJavaObject util = new AndroidJavaClass("com.unity.adcommon.unity.AndroidPhoneUtils").CallStatic<AndroidJavaObject>("getInstance");
return util.Call<string>("getAppVersionName", ZXHCUtils.GetActivity());
#endif
return "";
}
}
fileFormatVersion: 2
guid: 305391ce50409ce4ba054c8a1e7c45b4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
...@@ -10,7 +10,7 @@ using System.Net.Http; ...@@ -10,7 +10,7 @@ using System.Net.Http;
using System.Net; using System.Net;
using System.Net.Http.Headers; using System.Net.Http.Headers;
using System.Threading.Tasks; using System.Threading.Tasks;
using ZXHC;
public class HttpTool : MonoBehaviour public class HttpTool : MonoBehaviour
{ {
...@@ -370,15 +370,17 @@ public class HttpTool : MonoBehaviour ...@@ -370,15 +370,17 @@ public class HttpTool : MonoBehaviour
paragrams["device_uuid"] = PrefenceUtils.GetInstance().getUUid(); paragrams["device_uuid"] = PrefenceUtils.GetInstance().getUUid();
paragrams["vendor"] = SystemInfo.deviceModel; paragrams["vendor"] = SystemInfo.deviceModel;
paragrams["model"] = SystemInfo.deviceName; paragrams["model"] = SystemInfo.deviceName;
paragrams["oaid"] = PrefenceUtils.GetInstance().getOaid(); paragrams["oaid"] = ZXHCUtils.GetDeviceOaid();
paragrams["ip"] = PrefenceUtils.GetInstance().getIp(); paragrams["ip"] = PrefenceUtils.GetInstance().getIp();
paragrams["h"] = Screen.height; paragrams["h"] = Screen.height;
paragrams["svn"] = PrefenceUtils.GetInstance().getSVN(); paragrams["svn"] = PrefenceUtils.GetInstance().getSVN();
paragrams["ntt"] = PrefenceUtils.GetInstance().getNTT(); paragrams["ntt"] = PrefenceUtils.GetInstance().getNTT();
paragrams["carrier"] = PrefenceUtils.GetInstance().getCarrier(); paragrams["carrier"] = PrefenceUtils.GetInstance().getCarrier();
paragrams["w"] = Screen.width; paragrams["w"] = Screen.width;
paragrams["vc"] = PrefenceUtils.GetInstance().getVC(); paragrams["vc"] = AndroidPhoneUtils.GetAppVC();
paragrams["vn"] = PrefenceUtils.GetInstance().getVN(); paragrams["vn"] = AndroidPhoneUtils.GetAppVN();
paragrams["adsdk_vc"] = ZXADConfig.ZXAD_VC;
paragrams["adsdk_vn"] = ZXADConfig.ZXAD_VN;
paragrams["imei"] = PrefenceUtils.GetInstance().getImei(); paragrams["imei"] = PrefenceUtils.GetInstance().getImei();
paragrams["aid"] = PrefenceUtils.GetInstance().getAid(); paragrams["aid"] = PrefenceUtils.GetInstance().getAid();
#if UNITY_EDITOR #if UNITY_EDITOR
......
package com.unity.adcommon.unity;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Point;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.Display;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Enumeration;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.UUID;
public class AndroidPhoneUtils {
private static AndroidPhoneUtils instance = new AndroidPhoneUtils();
public static AndroidPhoneUtils getInstance() {
return instance;
}
/**
* 获取设备AndroidID
*
* @return AndroidID
*/
public String getAndroidID(Context context) {
try {
String androidId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
if (androidId != null) {
return androidId;
} else {
return "";
}
} catch (Exception e) {
return UUID.randomUUID().toString();
}
}
/**
* 获取当前的运营商
*
* @param context
* @return 运营商名字
*/
public String getOperator(Context context) {
String ProvidersName = "";
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String IMSI = "";
try {
IMSI = telephonyManager.getSubscriberId();
} catch (SecurityException e) {
// Toast.makeText(context, "请开启读取手机权限", Toast.LENGTH_SHORT).show()
return "0";
}
if (IMSI != null) {
if (IMSI.startsWith("46000") || IMSI.startsWith("46002") || IMSI.startsWith("46007")) {
// ProvidersName = "移动";
ProvidersName = "1";
} else if (IMSI.startsWith("46001") || IMSI.startsWith("46006")) {
ProvidersName = "2";
// ProvidersName = "联通";
} else if (IMSI.startsWith("46003")) {
ProvidersName = "3";
// ProvidersName = "电信";
}
return ProvidersName;
} else {
return "0";
// return "没有获取到sim卡信息";
}
}
public String getRealFilePath(Context context, Uri uri) {
return "方法未实现";
}
/**
* @Description: 获取屏幕的宽度
* @param: context
* @return: int
*/
public int getScreenWidth(Context context) {
return context.getResources().getDisplayMetrics().widthPixels;
}
/**
* 获取屏幕高度
*
* @param context
* @return int
*/
public int getScreenHeight(Context context) {
return context.getResources().getDisplayMetrics().heightPixels;
}
/**
* 获取屏幕高度
*
* @param context
* @return int
*/
public int getScreenDpi(Context context) {
return context.getResources().getDisplayMetrics().densityDpi;
}
/**
* 获取屏幕尺寸
*
* @param context
* @return int
*/
public double getScreenSize(Activity context) {
double mInch=0;
try {
int realWidth = 0, realHeight = 0;
Display display = context.getWindowManager().getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
if (Build.VERSION.SDK_INT >= 17) {
Point size = new Point();
display.getRealSize(size);
realWidth = size.x;
realHeight = size.y;
} else if (Build.VERSION.SDK_INT < 17
&& Build.VERSION.SDK_INT >= 14) {
Method mGetRawH = Display.class.getMethod("getRawHeight");
Method mGetRawW = Display.class.getMethod("getRawWidth");
realWidth = (Integer) mGetRawW.invoke(display);
realHeight = (Integer) mGetRawH.invoke(display);
} else {
realWidth = metrics.widthPixels;
realHeight = metrics.heightPixels;
}
mInch =formatDouble(Math.sqrt((realWidth/metrics.xdpi) * (realWidth /metrics.xdpi) + (realHeight/metrics.ydpi) * (realHeight / metrics.ydpi)),1);
} catch (Exception e) {
e.printStackTrace();
}
return mInch;
}
/**
* Double类型保留指定位数的小数,返回double类型(四舍五入)
* newScale 为指定的位数
*/
private static double formatDouble(double d,int newScale) {
BigDecimal bd = new BigDecimal(d);
return bd.setScale(newScale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 获取屏幕分辨率
*
* @param context
* @return int
*/
public float getScreenDensity(Context context) {
return context.getResources().getDisplayMetrics().density;
}
/**
* 获取设备型号
*
* @return 设备型号
*/
public String getModel() {
String model = Build.MODEL;
return model;
}
/**
* 获取App版本码
*
* @return App版本码
*/
public int getAppVersionCode(Context context) {
PackageManager manager = context.getPackageManager();
int code = 0;
try {
PackageInfo info = manager.getPackageInfo(context.getPackageName(), 0);
code = info.versionCode;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return code;
}
/**
* 获取App版本号
*
* @return App版本号
*/
public String getAppVersionName(Context context) {
String versionName = null;
try {
PackageManager pm = context.getPackageManager();
PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0);
versionName = pi.versionName;
} catch (Exception e) {
return "";
}
return versionName;
}
/**
* 获取App包名
*
* @return App版本码
*/
public String getAppPackage(Activity context) {
return context.getPackageName();
}
/**
* 获取应用程序名称
*/
public String getAppName(Context context) {
try {
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(
context.getPackageName(), 0);
int labelRes = packageInfo.applicationInfo.labelRes;
return context.getResources().getString(labelRes);
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
/**
* 获取IP地址
* <p>
* 需添加权限 `<uses-permission android:name="android.permission.INTERNET"/>`
*
* @param useIPv4 是否用IPv4
* @return IP地址
*/
public String getIPAddress(boolean useIPv4) {
try {
Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces();
while (nis.hasMoreElements()) {
NetworkInterface ni = nis.nextElement();
if (ni.isUp()) {
continue;
}
Enumeration<InetAddress> addresses = ni.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress inetAddress = addresses.nextElement();
if (!inetAddress.isLoopbackAddress()) {
String hostAddress = inetAddress.getHostAddress();
boolean isIPv4 = hostAddress.indexOf(':') < 0;
if (useIPv4) {
if (isIPv4) return hostAddress;
} else {
if (!isIPv4) {
int index = hostAddress.indexOf('%');
if (index < 0) {
return hostAddress.toUpperCase();
} else {
return hostAddress.substring(0, index).toUpperCase();
}
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
public String getDeviceId(Context context) {
return getMd5Value(getAndroidID(context) + getImei(context));
}
public String getMd5Value(String sSecret) {
try {
MessageDigest bmd5 = MessageDigest.getInstance("MD5");
bmd5.update(sSecret.getBytes());
} catch (NoSuchAlgorithmException e) {
}
return "";
}
public String getImei(Context context) {
try {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
return telephonyManager.getDeviceId();
} catch (SecurityException e) {
// Toast.makeText(context, "请开启读取手机权限", Toast.LENGTH_SHORT).show()
// In some devices, we are not able to get device id, and may cause some exception,
// so catch it.
return "";
}
}
public String getMac(Context context) {
String strMac = "";
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
strMac = getLocalMacAddressFromWifiInfo(context);
return strMac;
} else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
strMac = getMacAddress(context);
return strMac;
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (!TextUtils.isEmpty(getMacAddress(context))) {
strMac = getMacAddress(context);
return strMac;
} else if (!TextUtils.isEmpty(getMachineHardwareAddress())) {
strMac = getMachineHardwareAddress();
return strMac;
} else {
strMac = getLocalMacAddressFromBusybox();
return strMac;
}
}
return "";
}
public String getLocalMacAddressFromWifiInfo(Context context) {
WifiManager wifi = (WifiManager) context.getSystemService(context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
String str = info.getMacAddress();
if (str == null) {
str = "";
}
return str;
}
public String getLocalMacAddressFromBusybox() {
String result = "";
String Mac = "";
result = callCmd("busybox ifconfig", "HWaddr");
// 如果返回的result == null,则说明网络不可取
if (TextUtils.isEmpty(result)) {
// return "网络异常";
return "";
}
// 对该行数据进行解析
// 例如:eth0 Link encap:Ethernet HWaddr 00:16:E8:3E:DF:67
if (result.length() > 0 && result.contains("HWaddr")) {
Mac = result.substring(result.indexOf("HWaddr") + 6, result.length() - 1);
result = Mac;
}
return result;
}
private String callCmd(String cmd, String filter) {
String result = "";
String line = "";
try {
Process proc = Runtime.getRuntime().exec(cmd);
InputStreamReader mInputStream = new InputStreamReader(proc.getInputStream());
BufferedReader br = new BufferedReader(mInputStream);
while ((line.equals(br.readLine())) && !line.contains(filter)) {
result += line;
if (TextUtils.isEmpty(result)) {
return "";
}
}
result = line;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* android 7.0及以上 (2)扫描各个网络接口获取mac地址
*
*/
/**
* 获取设备HardwareAddress地址
*
* @return
*/
public String getMachineHardwareAddress() {
Enumeration<NetworkInterface> interfaces = null;
try {
interfaces = NetworkInterface.getNetworkInterfaces();
} catch (SocketException e) {
e.printStackTrace();
}
String hardWareAddress = "";
NetworkInterface iF = null;
if (interfaces == null) {
return "";
}
while (interfaces.hasMoreElements()) {
iF = interfaces.nextElement();
try {
hardWareAddress = bytesToString(iF.getHardwareAddress());
if (hardWareAddress != null)
break;
} catch (SocketException e) {
e.printStackTrace();
}
}
return hardWareAddress;
}
/***
* byte转为String
*
* @param bytes
* @return
*/
private String bytesToString(byte[] bytes) {
if (bytes == null || bytes.length <= 0) {
return "";
}
StringBuilder buf = new StringBuilder();
for (byte b : bytes) {
buf.append(String.format("%02X:", b));
}
if (buf.length() > 0) {
buf.deleteCharAt(buf.length() - 1);
}
return buf.toString();
}
private String getMacAddress(Context context) {
// 如果是6.0以下,直接通过wifimanager获取
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
String macAddress0 = getMacAddress0(context);
if (!TextUtils.isEmpty(macAddress0)) {
return macAddress0;
}
}
String str = "";
String macSerial = "";
try {
Process pp = Runtime.getRuntime().exec(
"cat /sys/class/net/wlan0/address"
);
InputStreamReader ir = new InputStreamReader(pp.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
while (null != str) {
str = input.readLine();
if (str != null) {
macSerial = str.trim();
break;
}
}
} catch (Exception ex) {
}
if (macSerial == null || "" == macSerial) {
try {
String loadFileAsString = loadFileAsString("/sys/class/net/eth0/address");
if (!TextUtils.isEmpty(loadFileAsString) && loadFileAsString.length() > 17) {
return loadFileAsString.toUpperCase().substring(0, 17);
} else {
return loadFileAsString.toUpperCase();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return macSerial;
}
private String getMacAddress0(Context context) {
if (isAccessWifiStateAuthorized(context)) {
WifiManager wifiMgr = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = null;
try {
wifiInfo = wifiMgr.getConnectionInfo();
return wifiInfo.getMacAddress();
} catch (Exception e) {
}
}
return "";
}
/**
* Check whether accessing wifi state is permitted
*
* @param context
* @return
*/
private boolean isAccessWifiStateAuthorized(Context context) {
if (PackageManager.PERMISSION_GRANTED == context
.checkCallingOrSelfPermission("android.permission.ACCESS_WIFI_STATE")
) {
return true;
} else
return false;
}
private String loadFileAsString(String fileName) {
try {
FileReader reader = new FileReader(fileName);
String text = loadReaderAsString(reader);
reader.close();
return text;
} catch (Exception e) {
return "";
}
}
private String loadReaderAsString(Reader reader) throws IOException {
StringBuilder builder = new StringBuilder();
char[] buffer = new char[4096];
int readLength = reader.read(buffer);
while (readLength >= 0) {
builder.append(buffer, 0, readLength);
readLength = reader.read(buffer);
}
return builder.toString();
}
/**
* 获取当前网络类型
* <p>
* 需添加权限 `<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>`
*
* @return 网络类型
*/
private enum NetworkType {
NETWORK_WIFI,
NETWORK_4G,
NETWORK_3G,
NETWORK_2G,
NETWORK_UNKNOWN,
NETWORK_NO
}
public String getNetwork(Context context) {
String s = "";
switch (getNetworkType(context)) {
case NETWORK_2G:
s = "2";
break;
case NETWORK_3G:
s = "3";
break;
case NETWORK_4G:
s = "4";
break;
case NETWORK_WIFI:
s = "1";
break;
default:
s = "5";
break;
}
return s;
}
public NetworkType getNetworkType(Context context) {
NetworkType netType = NetworkType.NETWORK_NO;
NetworkInfo info = getActiveNetworkInfo(context);
if (info != null && info.isAvailable()) {
if (info.getType() == ConnectivityManager.TYPE_WIFI) {
netType = NetworkType.NETWORK_WIFI;
} else if (info.getType() == ConnectivityManager.TYPE_MOBILE) {
switch (info.getSubtype()) {
case TelephonyManager.NETWORK_TYPE_GSM:
case TelephonyManager.NETWORK_TYPE_GPRS:
case TelephonyManager.NETWORK_TYPE_CDMA:
case TelephonyManager.NETWORK_TYPE_EDGE:
case TelephonyManager.NETWORK_TYPE_1xRTT:
case TelephonyManager.NETWORK_TYPE_IDEN:
netType = NetworkType.NETWORK_2G;
break;
case TelephonyManager.NETWORK_TYPE_TD_SCDMA:
case TelephonyManager.NETWORK_TYPE_EVDO_A:
case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_EVDO_0:
case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_HSUPA:
case TelephonyManager.NETWORK_TYPE_HSPA:
case TelephonyManager.NETWORK_TYPE_EVDO_B:
case TelephonyManager.NETWORK_TYPE_EHRPD:
case TelephonyManager.NETWORK_TYPE_HSPAP:
netType = NetworkType.NETWORK_3G;
break;
case TelephonyManager.NETWORK_TYPE_IWLAN:
case TelephonyManager.NETWORK_TYPE_LTE:
netType = NetworkType.NETWORK_4G;
break;
default:
String subtypeName = info.getSubtypeName();
if (subtypeName.equalsIgnoreCase("TD-SCDMA")
|| subtypeName.equalsIgnoreCase("WCDMA")
|| subtypeName.equalsIgnoreCase("CDMA2000")
) {
netType = NetworkType.NETWORK_3G;
} else {
netType = NetworkType.NETWORK_UNKNOWN;
}
break;
}
} else {
netType = NetworkType.NETWORK_UNKNOWN;
}
}
return netType;
}
/**
* 获取活动网络信息
* <p>
* 需添加权限 `<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>`
*
* @return NetworkInfo
*/
@SuppressLint("MissingPermission")
private NetworkInfo getActiveNetworkInfo(Context context) {
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
try {
return manager.getActiveNetworkInfo();
} catch (Exception e) {
return null;
}
}
private String buildMap(Map<String, String> map) {
StringBuffer sb = new StringBuffer();
if (map.size() > 0) {
for (String key : map.keySet()) {
sb.append(key + "=");
if (TextUtils.isEmpty(map.get(key))) {
sb.append("&");
} else {
String value = map.get(key);
try {
value = URLEncoder.encode(value, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
sb.append(value + "&");
}
}
}
return sb.toString();
}
@SuppressLint("MissingPermission")
private String getBSSID(Context context) {
WifiManager mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo mWifiInfo = mWifiManager.getConnectionInfo();
String s = "";
if (mWifiInfo != null) {
s = mWifiInfo.getBSSID();
}
return s;
}
/**
* 获取手机IMSI号
*/
@SuppressLint("MissingPermission")
public String getIMSI(Context context) {
try {
TelephonyManager mTelephonyMgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
return mTelephonyMgr.getSubscriberId();
} catch (Exception e) {
return "";
}
}
}
fileFormatVersion: 2
guid: be6033d9795d4d14f88e76c80f27f2a6
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:
fileFormatVersion: 2 fileFormatVersion: 2
guid: 08abcf21e7d2d224596f1ce2fd2178d4 guid: 88ddd43a224c76940ba78451fceeabe9
PluginImporter: PluginImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 2 serializedVersion: 2
......
...@@ -6,7 +6,7 @@ public class OaidUtil ...@@ -6,7 +6,7 @@ public class OaidUtil
public static void GetOaid(Action<string> callback) public static void GetOaid(Action<string> callback)
{ {
#if UNITY_ANDROID #if UNITY_ANDROID&&!UNITY_EDITOR
AndroidJavaObject util = new AndroidJavaObject("com.ym.zxhcsdkaar.OaidUtils"); AndroidJavaObject util = new AndroidJavaObject("com.ym.zxhcsdkaar.OaidUtils");
util.Call("GetOaid", ZXHCUtils.GetActivity(), new OaidListenerProxy(callback)); util.Call("GetOaid", ZXHCUtils.GetActivity(), new OaidListenerProxy(callback));
#else #else
......
...@@ -131,7 +131,7 @@ PlayerSettings: ...@@ -131,7 +131,7 @@ PlayerSettings:
16:10: 1 16:10: 1
16:9: 1 16:9: 1
Others: 1 Others: 1
bundleVersion: 1.0.2 bundleVersion: 1.0.3
preloadedAssets: [] preloadedAssets: []
metroInputSource: 0 metroInputSource: 0
wsaTransparentSwapchain: 0 wsaTransparentSwapchain: 0
...@@ -184,7 +184,7 @@ PlayerSettings: ...@@ -184,7 +184,7 @@ PlayerSettings:
Standalone: 0 Standalone: 0
iPhone: 0 iPhone: 0
tvOS: 0 tvOS: 0
AndroidBundleVersionCode: 1 AndroidBundleVersionCode: 4
AndroidMinSdkVersion: 21 AndroidMinSdkVersion: 21
AndroidTargetSdkVersion: 0 AndroidTargetSdkVersion: 0
AndroidPreferredInstallLocation: 1 AndroidPreferredInstallLocation: 1
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment