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