Compare commits
No commits in common. "50c5627ac2c0593d48c6d62e20f8601f4f088d44" and "85c8058158c39a193a2f551ffa5d34ad38d3f088" have entirely different histories.
50c5627ac2
...
85c8058158
|
|
@ -235,6 +235,7 @@ namespace Guru
|
||||||
{ "type", type }
|
{ "type", type }
|
||||||
};
|
};
|
||||||
if(!string.IsNullOrEmpty(scene)) dict[ParameterItemName] = scene;
|
if(!string.IsNullOrEmpty(scene)) dict[ParameterItemName] = scene;
|
||||||
|
LogEvent(EventATTResult, dict);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -207,12 +207,12 @@ namespace Guru
|
||||||
private static void SetATTStatus()
|
private static void SetATTStatus()
|
||||||
{
|
{
|
||||||
string status = ATTManager.GetStatus();
|
string status = ATTManager.GetStatus();
|
||||||
GuruAnalytics.Instance.SetUserProperty(ParameterATTStatus, status);
|
GuruAnalytics.SetUserProperty(ParameterATTStatus, status);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetIDFV()
|
private static void SetIDFV()
|
||||||
{
|
{
|
||||||
GuruAnalytics.Instance.SetIDFV(DeviceIDHelper.IDFV);
|
GuruAnalytics.SetIDFV(DeviceIDHelper.IDFV);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetIDFA()
|
private static void SetIDFA()
|
||||||
|
|
@ -228,7 +228,7 @@ namespace Guru
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(IPMConfig.ADJUST_IDFA))
|
if (!string.IsNullOrEmpty(IPMConfig.ADJUST_IDFA))
|
||||||
{
|
{
|
||||||
GuruAnalytics.Instance.SetIDFA(IPMConfig.ADJUST_IDFA);
|
GuruAnalytics.SetIDFA(IPMConfig.ADJUST_IDFA);
|
||||||
_hasGotIDFA = true;
|
_hasGotIDFA = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -187,20 +187,14 @@ namespace Guru
|
||||||
{
|
{
|
||||||
if (!_isInitOnce)
|
if (!_isInitOnce)
|
||||||
{
|
{
|
||||||
throw new Exception($"[{TAG}][SDK] Analytics did not initialized, Call <Analytics.{nameof(InitAnalytics)}()> first!");
|
throw new Exception($"【SDK] Analytics did not initialized, Call <Analytics.{nameof(InitAnalytics)}()> first!");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsDebug && !EnableDebugAnalytics)
|
|
||||||
{
|
|
||||||
Debug.LogWarning($"[{TAG}][SDK] --- LogEvent [{eventName}] can not send int Debug mode. Set <InitConfig.EnableDebugAnalytics> with `true`");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (eventSetting == null) eventSetting = DefaultEventSetting;
|
if (eventSetting == null) eventSetting = DefaultEventSetting;
|
||||||
|
|
||||||
var dataStr = "";
|
var dataStr = "";
|
||||||
if (data != null) dataStr = JsonParser.ToJson(data);
|
if (data != null) dataStr = JsonParser.ToJson(data);
|
||||||
Debug.Log($"[{TAG}] --- [SDK] TrackEvent: {eventName} | priority: {priority} | data:{dataStr} | eventSetting: {eventSetting}");
|
Debug.Log($"{TAG} --- [SDK] TrackEvent: {eventName} | priority: {priority} | data:{dataStr} | eventSetting: {eventSetting}");
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -8,31 +8,14 @@ namespace Guru
|
||||||
public static partial class FirebaseUtil
|
public static partial class FirebaseUtil
|
||||||
{
|
{
|
||||||
private static int _messageRetry = 5;
|
private static int _messageRetry = 5;
|
||||||
// public static bool? IsInitMessage;
|
public static bool? IsInitMessage;
|
||||||
private static bool _isAutoFetchFcmToken = true;
|
|
||||||
private static bool _isFetchOnce = false;
|
|
||||||
|
|
||||||
public static void SetAutoFetchFcmToken(bool value)
|
|
||||||
{
|
|
||||||
_isAutoFetchFcmToken = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void InitializeMessage()
|
public static void InitializeMessage()
|
||||||
{
|
{
|
||||||
if (_isAutoFetchFcmToken)
|
|
||||||
{
|
|
||||||
StartFetchFcmToken();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void StartFetchFcmToken()
|
|
||||||
{
|
|
||||||
if (_isFetchOnce) return;
|
|
||||||
_isFetchOnce = true;
|
|
||||||
|
|
||||||
FirebaseMessaging.TokenReceived += OnTokenReceived;
|
FirebaseMessaging.TokenReceived += OnTokenReceived;
|
||||||
FirebaseMessaging.MessageReceived += OnMessageReceived;
|
FirebaseMessaging.MessageReceived += OnMessageReceived;
|
||||||
GetFCMToken();
|
GetFCMToken();
|
||||||
|
IsInitMessage = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void GetFCMToken()
|
private static void GetFCMToken()
|
||||||
|
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 10f8491dbf6264bc393cb7578397ec7f
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: bc0062a7d36f144beabfdea9e3a8e2c7
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 4725a71a48aec4a5083c37f5ff09a550
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
|
|
@ -1,32 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 05a3c5d94488c454ea77722fc8f0a80c
|
|
||||||
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,3 +0,0 @@
|
||||||
-keep class com.facebook.unity.* { *; }
|
|
||||||
-keepattributes Signature
|
|
||||||
-keep class com.guru.unity.monitor.** { *; }
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: d0ac28ef06c604f789bb32b31225c157
|
|
||||||
TextScriptImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: e5d09fde296334b46844a972d0289dcc
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 18c322abb3a1e4d9eaea5e395dab1377
|
|
||||||
PluginImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
defineConstraints: []
|
|
||||||
isPreloaded: 0
|
|
||||||
isOverridable: 0
|
|
||||||
isExplicitlyReferenced: 0
|
|
||||||
validateReferences: 1
|
|
||||||
platformData:
|
|
||||||
- first:
|
|
||||||
Any:
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
- first:
|
|
||||||
Editor: Editor
|
|
||||||
second:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
- first:
|
|
||||||
iPhone: iOS
|
|
||||||
second:
|
|
||||||
enabled: 1
|
|
||||||
settings:
|
|
||||||
AddToEmbeddedBinaries: true
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
|
|
@ -1,337 +0,0 @@
|
||||||
#if 0
|
|
||||||
#elif defined(__arm64__) && __arm64__
|
|
||||||
// Generated by Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
|
|
||||||
#ifndef CONNECTIVITY_SWIFT_H
|
|
||||||
#define CONNECTIVITY_SWIFT_H
|
|
||||||
#pragma clang diagnostic push
|
|
||||||
#pragma clang diagnostic ignored "-Wgcc-compat"
|
|
||||||
|
|
||||||
#if !defined(__has_include)
|
|
||||||
# define __has_include(x) 0
|
|
||||||
#endif
|
|
||||||
#if !defined(__has_attribute)
|
|
||||||
# define __has_attribute(x) 0
|
|
||||||
#endif
|
|
||||||
#if !defined(__has_feature)
|
|
||||||
# define __has_feature(x) 0
|
|
||||||
#endif
|
|
||||||
#if !defined(__has_warning)
|
|
||||||
# define __has_warning(x) 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if __has_include(<swift/objc-prologue.h>)
|
|
||||||
# include <swift/objc-prologue.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#pragma clang diagnostic ignored "-Wauto-import"
|
|
||||||
#if defined(__OBJC__)
|
|
||||||
#include <Foundation/Foundation.h>
|
|
||||||
#endif
|
|
||||||
#if defined(__cplusplus)
|
|
||||||
#include <cstdint>
|
|
||||||
#include <cstddef>
|
|
||||||
#include <cstdbool>
|
|
||||||
#include <cstring>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <new>
|
|
||||||
#include <type_traits>
|
|
||||||
#else
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <string.h>
|
|
||||||
#endif
|
|
||||||
#if defined(__cplusplus)
|
|
||||||
#if defined(__arm64e__) && __has_include(<ptrauth.h>)
|
|
||||||
# include <ptrauth.h>
|
|
||||||
#else
|
|
||||||
#pragma clang diagnostic push
|
|
||||||
#pragma clang diagnostic ignored "-Wreserved-macro-identifier"
|
|
||||||
# ifndef __ptrauth_swift_value_witness_function_pointer
|
|
||||||
# define __ptrauth_swift_value_witness_function_pointer(x)
|
|
||||||
# endif
|
|
||||||
# ifndef __ptrauth_swift_class_method_pointer
|
|
||||||
# define __ptrauth_swift_class_method_pointer(x)
|
|
||||||
# endif
|
|
||||||
#pragma clang diagnostic pop
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(SWIFT_TYPEDEFS)
|
|
||||||
# define SWIFT_TYPEDEFS 1
|
|
||||||
# if __has_include(<uchar.h>)
|
|
||||||
# include <uchar.h>
|
|
||||||
# elif !defined(__cplusplus)
|
|
||||||
typedef uint_least16_t char16_t;
|
|
||||||
typedef uint_least32_t char32_t;
|
|
||||||
# endif
|
|
||||||
typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
|
|
||||||
typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
|
|
||||||
typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
|
|
||||||
typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
|
|
||||||
typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
|
|
||||||
typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
|
|
||||||
typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
|
|
||||||
typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
|
|
||||||
typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
|
|
||||||
typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
|
|
||||||
typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
|
|
||||||
typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(SWIFT_PASTE)
|
|
||||||
# define SWIFT_PASTE_HELPER(x, y) x##y
|
|
||||||
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_METATYPE)
|
|
||||||
# define SWIFT_METATYPE(X) Class
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_CLASS_PROPERTY)
|
|
||||||
# if __has_feature(objc_class_property)
|
|
||||||
# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
|
|
||||||
# else
|
|
||||||
# define SWIFT_CLASS_PROPERTY(...)
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_RUNTIME_NAME)
|
|
||||||
# if __has_attribute(objc_runtime_name)
|
|
||||||
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
|
|
||||||
# else
|
|
||||||
# define SWIFT_RUNTIME_NAME(X)
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_COMPILE_NAME)
|
|
||||||
# if __has_attribute(swift_name)
|
|
||||||
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
|
|
||||||
# else
|
|
||||||
# define SWIFT_COMPILE_NAME(X)
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_METHOD_FAMILY)
|
|
||||||
# if __has_attribute(objc_method_family)
|
|
||||||
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
|
|
||||||
# else
|
|
||||||
# define SWIFT_METHOD_FAMILY(X)
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_NOESCAPE)
|
|
||||||
# if __has_attribute(noescape)
|
|
||||||
# define SWIFT_NOESCAPE __attribute__((noescape))
|
|
||||||
# else
|
|
||||||
# define SWIFT_NOESCAPE
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_RELEASES_ARGUMENT)
|
|
||||||
# if __has_attribute(ns_consumed)
|
|
||||||
# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
|
|
||||||
# else
|
|
||||||
# define SWIFT_RELEASES_ARGUMENT
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_WARN_UNUSED_RESULT)
|
|
||||||
# if __has_attribute(warn_unused_result)
|
|
||||||
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
|
|
||||||
# else
|
|
||||||
# define SWIFT_WARN_UNUSED_RESULT
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_NORETURN)
|
|
||||||
# if __has_attribute(noreturn)
|
|
||||||
# define SWIFT_NORETURN __attribute__((noreturn))
|
|
||||||
# else
|
|
||||||
# define SWIFT_NORETURN
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_CLASS_EXTRA)
|
|
||||||
# define SWIFT_CLASS_EXTRA
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_PROTOCOL_EXTRA)
|
|
||||||
# define SWIFT_PROTOCOL_EXTRA
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_ENUM_EXTRA)
|
|
||||||
# define SWIFT_ENUM_EXTRA
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_CLASS)
|
|
||||||
# if __has_attribute(objc_subclassing_restricted)
|
|
||||||
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
|
|
||||||
# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
|
|
||||||
# else
|
|
||||||
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
|
|
||||||
# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_RESILIENT_CLASS)
|
|
||||||
# if __has_attribute(objc_class_stub)
|
|
||||||
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
|
|
||||||
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
|
|
||||||
# else
|
|
||||||
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
|
|
||||||
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_PROTOCOL)
|
|
||||||
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
|
|
||||||
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_EXTENSION)
|
|
||||||
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
|
|
||||||
#endif
|
|
||||||
#if !defined(OBJC_DESIGNATED_INITIALIZER)
|
|
||||||
# if __has_attribute(objc_designated_initializer)
|
|
||||||
# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
|
|
||||||
# else
|
|
||||||
# define OBJC_DESIGNATED_INITIALIZER
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_ENUM_ATTR)
|
|
||||||
# if __has_attribute(enum_extensibility)
|
|
||||||
# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
|
|
||||||
# else
|
|
||||||
# define SWIFT_ENUM_ATTR(_extensibility)
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_ENUM)
|
|
||||||
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
|
|
||||||
# if __has_feature(generalized_swift_name)
|
|
||||||
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
|
|
||||||
# else
|
|
||||||
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_UNAVAILABLE)
|
|
||||||
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_UNAVAILABLE_MSG)
|
|
||||||
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_AVAILABILITY)
|
|
||||||
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_WEAK_IMPORT)
|
|
||||||
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_DEPRECATED)
|
|
||||||
# define SWIFT_DEPRECATED __attribute__((deprecated))
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_DEPRECATED_MSG)
|
|
||||||
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_DEPRECATED_OBJC)
|
|
||||||
# if __has_feature(attribute_diagnose_if_objc)
|
|
||||||
# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
|
|
||||||
# else
|
|
||||||
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if defined(__OBJC__)
|
|
||||||
#if !defined(IBSegueAction)
|
|
||||||
# define IBSegueAction
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_EXTERN)
|
|
||||||
# if defined(__cplusplus)
|
|
||||||
# define SWIFT_EXTERN extern "C"
|
|
||||||
# else
|
|
||||||
# define SWIFT_EXTERN extern
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_CALL)
|
|
||||||
# define SWIFT_CALL __attribute__((swiftcall))
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_INDIRECT_RESULT)
|
|
||||||
# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result))
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_CONTEXT)
|
|
||||||
# define SWIFT_CONTEXT __attribute__((swift_context))
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_ERROR_RESULT)
|
|
||||||
# define SWIFT_ERROR_RESULT __attribute__((swift_error_result))
|
|
||||||
#endif
|
|
||||||
#if defined(__cplusplus)
|
|
||||||
# define SWIFT_NOEXCEPT noexcept
|
|
||||||
#else
|
|
||||||
# define SWIFT_NOEXCEPT
|
|
||||||
#endif
|
|
||||||
#if !defined(SWIFT_C_INLINE_THUNK)
|
|
||||||
# if __has_attribute(always_inline)
|
|
||||||
# if __has_attribute(nodebug)
|
|
||||||
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug))
|
|
||||||
# else
|
|
||||||
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline))
|
|
||||||
# endif
|
|
||||||
# else
|
|
||||||
# define SWIFT_C_INLINE_THUNK inline
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#if defined(_WIN32)
|
|
||||||
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
|
|
||||||
# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport)
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
|
|
||||||
# define SWIFT_IMPORT_STDLIB_SYMBOL
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#if defined(__OBJC__)
|
|
||||||
#if __has_feature(objc_modules)
|
|
||||||
#if __has_warning("-Watimport-in-framework-header")
|
|
||||||
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
|
|
||||||
#endif
|
|
||||||
@import Foundation;
|
|
||||||
@import ObjectiveC;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
|
|
||||||
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
|
|
||||||
#if __has_warning("-Wpragma-clang-attribute")
|
|
||||||
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
|
|
||||||
#endif
|
|
||||||
#pragma clang diagnostic ignored "-Wunknown-pragmas"
|
|
||||||
#pragma clang diagnostic ignored "-Wnullability"
|
|
||||||
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
|
|
||||||
|
|
||||||
#if __has_attribute(external_source_symbol)
|
|
||||||
# pragma push_macro("any")
|
|
||||||
# undef any
|
|
||||||
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="Connectivity",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
|
|
||||||
# pragma pop_macro("any")
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__OBJC__)
|
|
||||||
@class NSString;
|
|
||||||
|
|
||||||
SWIFT_CLASS("_TtC12Connectivity12Connectivity")
|
|
||||||
@interface Connectivity : NSObject
|
|
||||||
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) Connectivity * _Nonnull shared;)
|
|
||||||
+ (Connectivity * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
|
|
||||||
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull CONNECTIVITY_NONE;)
|
|
||||||
+ (NSString * _Nonnull)CONNECTIVITY_NONE SWIFT_WARN_UNUSED_RESULT;
|
|
||||||
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull CONNECTIVITY_WIFI;)
|
|
||||||
+ (NSString * _Nonnull)CONNECTIVITY_WIFI SWIFT_WARN_UNUSED_RESULT;
|
|
||||||
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull CONNECTIVITY_MOBILE;)
|
|
||||||
+ (NSString * _Nonnull)CONNECTIVITY_MOBILE SWIFT_WARN_UNUSED_RESULT;
|
|
||||||
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull CONNECTIVITY_ETHERNET;)
|
|
||||||
+ (NSString * _Nonnull)CONNECTIVITY_ETHERNET SWIFT_WARN_UNUSED_RESULT;
|
|
||||||
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull CONNECTIVITY_VPN;)
|
|
||||||
+ (NSString * _Nonnull)CONNECTIVITY_VPN SWIFT_WARN_UNUSED_RESULT;
|
|
||||||
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull CONNECTIVITY_OTHER;)
|
|
||||||
+ (NSString * _Nonnull)CONNECTIVITY_OTHER SWIFT_WARN_UNUSED_RESULT;
|
|
||||||
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
|
|
||||||
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
|
|
||||||
- (void)initializeWithCompletion:(void (^ _Nonnull)(BOOL))completion;
|
|
||||||
- (NSArray<NSString *> * _Nonnull)checkConnectionType SWIFT_WARN_UNUSED_RESULT;
|
|
||||||
@end
|
|
||||||
|
|
||||||
#endif
|
|
||||||
#if __has_attribute(external_source_symbol)
|
|
||||||
# pragma clang attribute pop
|
|
||||||
#endif
|
|
||||||
#if defined(__cplusplus)
|
|
||||||
#endif
|
|
||||||
#pragma clang diagnostic pop
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
|
||||||
#error unsupported Swift architecture
|
|
||||||
#endif
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
"ABIRoot": {
|
|
||||||
"kind": "Root",
|
|
||||||
"name": "TopLevel",
|
|
||||||
"printedName": "TopLevel",
|
|
||||||
"json_format_version": 8
|
|
||||||
},
|
|
||||||
"ConstValues": []
|
|
||||||
}
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -1,4 +0,0 @@
|
||||||
framework module Connectivity {
|
|
||||||
header "Connectivity-Swift.h"
|
|
||||||
requires objc
|
|
||||||
}
|
|
||||||
|
|
@ -1,168 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>files</key>
|
|
||||||
<dict>
|
|
||||||
<key>Headers/Connectivity-Swift.h</key>
|
|
||||||
<data>
|
|
||||||
yQkPWwZ2klcFBQT3c4PI/gTVVAE=
|
|
||||||
</data>
|
|
||||||
<key>Info.plist</key>
|
|
||||||
<data>
|
|
||||||
n4FM+14bzgCqiae7BEnOfj78dFA=
|
|
||||||
</data>
|
|
||||||
<key>Modules/Connectivity.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo</key>
|
|
||||||
<data>
|
|
||||||
KGmpTymRqrX9y4GV/j+eFuhhTYM=
|
|
||||||
</data>
|
|
||||||
<key>Modules/Connectivity.swiftmodule/arm64-apple-ios.abi.json</key>
|
|
||||||
<data>
|
|
||||||
FSPnLbho3G+LL9smI3XgVOqBIQ4=
|
|
||||||
</data>
|
|
||||||
<key>Modules/Connectivity.swiftmodule/arm64-apple-ios.swiftdoc</key>
|
|
||||||
<data>
|
|
||||||
NaKg9acNtBzWngYfwx3Nt50tA5o=
|
|
||||||
</data>
|
|
||||||
<key>Modules/Connectivity.swiftmodule/arm64-apple-ios.swiftmodule</key>
|
|
||||||
<data>
|
|
||||||
TBHp8ndBz6+t9eK5i+Q7XONqD+w=
|
|
||||||
</data>
|
|
||||||
<key>Modules/module.modulemap</key>
|
|
||||||
<data>
|
|
||||||
JQ0IhYrWi46ysbcXxnNfARgJPro=
|
|
||||||
</data>
|
|
||||||
</dict>
|
|
||||||
<key>files2</key>
|
|
||||||
<dict>
|
|
||||||
<key>Headers/Connectivity-Swift.h</key>
|
|
||||||
<dict>
|
|
||||||
<key>hash2</key>
|
|
||||||
<data>
|
|
||||||
HIhSgITt+HNjHvu2O1pDvyjgx9HdyI801+Q9Bn92Suc=
|
|
||||||
</data>
|
|
||||||
</dict>
|
|
||||||
<key>Modules/Connectivity.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo</key>
|
|
||||||
<dict>
|
|
||||||
<key>hash2</key>
|
|
||||||
<data>
|
|
||||||
HnYY+N0JWfujm6LckQtevFuYEFW4uYx4hcAkaFgCZp0=
|
|
||||||
</data>
|
|
||||||
</dict>
|
|
||||||
<key>Modules/Connectivity.swiftmodule/arm64-apple-ios.abi.json</key>
|
|
||||||
<dict>
|
|
||||||
<key>hash2</key>
|
|
||||||
<data>
|
|
||||||
KnRdWE4y6t4QM5zi5JDptPdHFgJy1Tku+7GLkZS2aNM=
|
|
||||||
</data>
|
|
||||||
</dict>
|
|
||||||
<key>Modules/Connectivity.swiftmodule/arm64-apple-ios.swiftdoc</key>
|
|
||||||
<dict>
|
|
||||||
<key>hash2</key>
|
|
||||||
<data>
|
|
||||||
sgsu9CnSXAG3fxoW1HBRLZ9lCTX38BR3y2eik7e37zU=
|
|
||||||
</data>
|
|
||||||
</dict>
|
|
||||||
<key>Modules/Connectivity.swiftmodule/arm64-apple-ios.swiftmodule</key>
|
|
||||||
<dict>
|
|
||||||
<key>hash2</key>
|
|
||||||
<data>
|
|
||||||
S73u4XvAyezKkKReZVBDl16w7MSeeI6FBXUJ9OirCI4=
|
|
||||||
</data>
|
|
||||||
</dict>
|
|
||||||
<key>Modules/module.modulemap</key>
|
|
||||||
<dict>
|
|
||||||
<key>hash2</key>
|
|
||||||
<data>
|
|
||||||
07XGBKw7w58ugYy09lbnsq9IhqStrsOHCKCfwm/MrpU=
|
|
||||||
</data>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<key>rules</key>
|
|
||||||
<dict>
|
|
||||||
<key>^.*</key>
|
|
||||||
<true/>
|
|
||||||
<key>^.*\.lproj/</key>
|
|
||||||
<dict>
|
|
||||||
<key>optional</key>
|
|
||||||
<true/>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>1000</real>
|
|
||||||
</dict>
|
|
||||||
<key>^.*\.lproj/locversion.plist$</key>
|
|
||||||
<dict>
|
|
||||||
<key>omit</key>
|
|
||||||
<true/>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>1100</real>
|
|
||||||
</dict>
|
|
||||||
<key>^Base\.lproj/</key>
|
|
||||||
<dict>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>1010</real>
|
|
||||||
</dict>
|
|
||||||
<key>^version.plist$</key>
|
|
||||||
<true/>
|
|
||||||
</dict>
|
|
||||||
<key>rules2</key>
|
|
||||||
<dict>
|
|
||||||
<key>.*\.dSYM($|/)</key>
|
|
||||||
<dict>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>11</real>
|
|
||||||
</dict>
|
|
||||||
<key>^(.*/)?\.DS_Store$</key>
|
|
||||||
<dict>
|
|
||||||
<key>omit</key>
|
|
||||||
<true/>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>2000</real>
|
|
||||||
</dict>
|
|
||||||
<key>^.*</key>
|
|
||||||
<true/>
|
|
||||||
<key>^.*\.lproj/</key>
|
|
||||||
<dict>
|
|
||||||
<key>optional</key>
|
|
||||||
<true/>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>1000</real>
|
|
||||||
</dict>
|
|
||||||
<key>^.*\.lproj/locversion.plist$</key>
|
|
||||||
<dict>
|
|
||||||
<key>omit</key>
|
|
||||||
<true/>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>1100</real>
|
|
||||||
</dict>
|
|
||||||
<key>^Base\.lproj/</key>
|
|
||||||
<dict>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>1010</real>
|
|
||||||
</dict>
|
|
||||||
<key>^Info\.plist$</key>
|
|
||||||
<dict>
|
|
||||||
<key>omit</key>
|
|
||||||
<true/>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>20</real>
|
|
||||||
</dict>
|
|
||||||
<key>^PkgInfo$</key>
|
|
||||||
<dict>
|
|
||||||
<key>omit</key>
|
|
||||||
<true/>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>20</real>
|
|
||||||
</dict>
|
|
||||||
<key>^embedded\.provisionprofile$</key>
|
|
||||||
<dict>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>20</real>
|
|
||||||
</dict>
|
|
||||||
<key>^version\.plist$</key>
|
|
||||||
<dict>
|
|
||||||
<key>weight</key>
|
|
||||||
<real>20</real>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: a0a25c648675a494eb50f2dd3159ff81
|
|
||||||
TextScriptImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: d1121778023d64cafad6d7eb947140d0
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
|
@ -1,111 +0,0 @@
|
||||||
|
|
||||||
namespace Guru.Network
|
|
||||||
{
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
public class NetworkStatusMonitor
|
|
||||||
{
|
|
||||||
private const string Tag = "[NET]";
|
|
||||||
private const string NETWORK_STATUS_NONE = "none";
|
|
||||||
private const string NETWORK_STATUS_MOBILE = "mobile";
|
|
||||||
private const string NETWORK_STATUS_WIFI = "wifi";
|
|
||||||
private const string NETWORK_STATUS_ETHERNET = "ethernet";
|
|
||||||
private const string NETWORK_STATUS_VPN = "vpn";
|
|
||||||
private const string NETWORK_STATUS_TETHER = "tether";
|
|
||||||
|
|
||||||
private bool _isReady = false;
|
|
||||||
|
|
||||||
private INetworkStatusProxy _proxy;
|
|
||||||
private INetworkStatusProxy Proxy
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (_proxy == null)
|
|
||||||
{
|
|
||||||
#if UNITY_EDITOR
|
|
||||||
_proxy = new NetworkStatusEditor();
|
|
||||||
#elif UNITY_ANDROID
|
|
||||||
_proxy = new NetworkStatusAndroid();
|
|
||||||
#elif UNITY_IOS
|
|
||||||
_proxy = new NetworkStatusIOS();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_proxy == null)
|
|
||||||
{
|
|
||||||
// 如果未实现则报异常
|
|
||||||
throw new NotImplementedException("Can't find NetworkStatusProxy instance!!");
|
|
||||||
}
|
|
||||||
|
|
||||||
return _proxy;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<string> _statusNameList = new List<string>()
|
|
||||||
{
|
|
||||||
NETWORK_STATUS_NONE,
|
|
||||||
NETWORK_STATUS_ETHERNET,
|
|
||||||
NETWORK_STATUS_WIFI,
|
|
||||||
NETWORK_STATUS_MOBILE,
|
|
||||||
NETWORK_STATUS_VPN,
|
|
||||||
NETWORK_STATUS_TETHER
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void Init(Action<bool> onInitComplete = null)
|
|
||||||
{
|
|
||||||
Proxy.Init(success =>
|
|
||||||
{
|
|
||||||
_isReady = success;
|
|
||||||
onInitComplete?.Invoke(success);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取网络状态
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
public string GetNetworkStatus()
|
|
||||||
{
|
|
||||||
if (_isReady)
|
|
||||||
{
|
|
||||||
var status = Proxy.GetNetworkStatus();
|
|
||||||
if (status != null && status.Length > 0)
|
|
||||||
{
|
|
||||||
string statusName = "";
|
|
||||||
for (int i = 0; i < _statusNameList.Count; i++)
|
|
||||||
{
|
|
||||||
// 根据名称优先级, 先获取到的优先上报
|
|
||||||
statusName = _statusNameList[i];
|
|
||||||
if (status.Contains(statusName))
|
|
||||||
{
|
|
||||||
Debug.Log($"{Tag} --- GetNetworkStatus : {statusName}");
|
|
||||||
return statusName;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Debug.LogWarning($"{Tag} --- Network Monitor is not ready!");
|
|
||||||
return NETWORK_STATUS_NONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// private void OnProxyInitComplete(bool success)
|
|
||||||
// {
|
|
||||||
// if (success)
|
|
||||||
// {
|
|
||||||
// Debug.Log($"{Tag} --- NetworkStatusMonitor init success");
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// Debug.LogError($"{Tag} --- NetworkStatusMonitor init failed");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 89389dfafc844651bb8f6a23865edca6
|
|
||||||
timeCreated: 1721958852
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 1981d1e0510af48ff81cbd4db201318f
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
|
|
||||||
namespace Guru.Network
|
|
||||||
{
|
|
||||||
using System;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 网络状态代理
|
|
||||||
/// </summary>
|
|
||||||
public interface INetworkStatusProxy
|
|
||||||
{
|
|
||||||
void Init(Action<bool> onInitComplete);
|
|
||||||
|
|
||||||
string[] GetNetworkStatus();
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: aeba66b9f9e4413a8475bf5cc363fae1
|
|
||||||
timeCreated: 1721957685
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
namespace Guru.Network
|
|
||||||
{
|
|
||||||
using System;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
public class NetworkStatusAndroid: INetworkStatusProxy
|
|
||||||
{
|
|
||||||
private const string Tag = "[NET][AND]";
|
|
||||||
#if UNITY_ANDROID
|
|
||||||
private const string CONNECTIVITY_ANDROID_CLASS_NAME = "com.guru.unity.monitor.Connectivity";
|
|
||||||
private AndroidJavaObject _connectivity;
|
|
||||||
private bool _isReady = false;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 初始化
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="onInitComplete"></param>
|
|
||||||
public void Init(Action<bool> onInitComplete)
|
|
||||||
{
|
|
||||||
#if UNITY_ANDROID
|
|
||||||
AndroidJavaObject currentActivity = new AndroidJavaObject("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity");
|
|
||||||
_connectivity = new AndroidJavaObject(CONNECTIVITY_ANDROID_CLASS_NAME).CallStatic<AndroidJavaObject>("getInstance");
|
|
||||||
_isReady = _connectivity.Call<bool>("initialize", currentActivity);
|
|
||||||
// Debug.LogWarning($"{Tag} --- Network status init result:{_isReady}");
|
|
||||||
// Debug.LogWarning($"{Tag} --- _connectivity:{_connectivity}");
|
|
||||||
onInitComplete?.Invoke(_isReady); // 调用初始化回调
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取网络状态
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
public string[] GetNetworkStatus()
|
|
||||||
{
|
|
||||||
#if UNITY_ANDROID
|
|
||||||
if (!_isReady)
|
|
||||||
{
|
|
||||||
Debug.LogError($"{Tag} --- GetNetworkStatus :: initialized failed.");
|
|
||||||
}
|
|
||||||
else if(_connectivity != null)
|
|
||||||
{
|
|
||||||
return _connectivity.Call<string[]>("checkConnectionType");
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
return new string[] {"none"};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 1c5f41b5f3bc4aa2993e263f733deeb0
|
|
||||||
timeCreated: 1721957773
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
namespace Guru.Network
|
|
||||||
{
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
|
|
||||||
public class NetworkStatusEditor:INetworkStatusProxy
|
|
||||||
{
|
|
||||||
private const string Tag = "[NET][EDT]";
|
|
||||||
/// <summary>
|
|
||||||
/// 初始化
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="onInitComplete"></param>
|
|
||||||
public async void Init(Action<bool> onInitComplete)
|
|
||||||
{
|
|
||||||
await Task.Delay(300);
|
|
||||||
Debug.Log($"{Tag} --- init NetworkStatusEditor success int Editor");
|
|
||||||
onInitComplete?.Invoke(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取网络状态
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
public string[] GetNetworkStatus()
|
|
||||||
{
|
|
||||||
List<string> status = new List<string>(4);
|
|
||||||
|
|
||||||
switch (Application.internetReachability)
|
|
||||||
{
|
|
||||||
case NetworkReachability.NotReachable:
|
|
||||||
status.Add("none");
|
|
||||||
break;
|
|
||||||
case NetworkReachability.ReachableViaCarrierDataNetwork:
|
|
||||||
status.Add("mobile");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case NetworkReachability.ReachableViaLocalAreaNetwork:
|
|
||||||
status.Add("wifi");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return status.ToArray();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 657ecf666aa14a7dacef1160591c8115
|
|
||||||
timeCreated: 1721958984
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
namespace Guru.Network
|
|
||||||
{
|
|
||||||
using System;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using AOT;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
public class NetworkStatusIOS:INetworkStatusProxy
|
|
||||||
{
|
|
||||||
public const string Tag = "[NET][iOS]";
|
|
||||||
#if UNITY_IOS
|
|
||||||
[DllImport("__Internal")]
|
|
||||||
private static extern IntPtr checkNetworkConnection();
|
|
||||||
|
|
||||||
[DllImport("__Internal")]
|
|
||||||
private static extern void freeCheckNetworkConnectionResult(IntPtr result);
|
|
||||||
|
|
||||||
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
|
||||||
private delegate void InitializationCallback(bool success);
|
|
||||||
|
|
||||||
[DllImport("__Internal")]
|
|
||||||
private static extern void initializeConnectivity(InitializationCallback callback);
|
|
||||||
|
|
||||||
private static Action<bool> _initCompleteCallback;
|
|
||||||
|
|
||||||
[MonoPInvokeCallback(typeof(InitializationCallback))]
|
|
||||||
private static void OnInitializationComplete(bool success)
|
|
||||||
{
|
|
||||||
_isReady = success;
|
|
||||||
_initCompleteCallback?.Invoke(success);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
private static bool _isReady = false;
|
|
||||||
|
|
||||||
public void Init(Action<bool> onInitComplete)
|
|
||||||
{
|
|
||||||
#if UNITY_IOS
|
|
||||||
_initCompleteCallback = onInitComplete;
|
|
||||||
initializeConnectivity(OnInitializationComplete);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
public string[] GetNetworkStatus()
|
|
||||||
{
|
|
||||||
#if UNITY_IOS
|
|
||||||
if(!_isReady)
|
|
||||||
{
|
|
||||||
Debug.LogError($"{Tag} --- GetNetworkStatus :: initialized failed.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
IntPtr ptr = checkNetworkConnection();
|
|
||||||
string result = Marshal.PtrToStringAnsi(ptr);
|
|
||||||
freeCheckNetworkConnectionResult(ptr);
|
|
||||||
return result.Split(',');
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return new string[] {"none"};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: f51ea25e1ecf41c18d7fcd9951d61aeb
|
|
||||||
timeCreated: 1721958507
|
|
||||||
Loading…
Reference in New Issue