Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
rire-tool
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
逄仁秀
rire-tool
Commits
918a0374
提交
918a0374
authored
1月 05, 2024
作者:
逄仁秀
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
no message
上级
4410129e
显示空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
323 行增加
和
29 行删除
+323
-29
project.pbxproj
iOS-2kj.xcodeproj/project.pbxproj
+6
-4
UserInterfaceState.xcuserstate
...ata/renxiupang.xcuserdatad/UserInterfaceState.xcuserstate
+0
-0
AppDelegate.swift
iOS-2kj/AppDelegate.swift
+1
-1
KJHomeViewController.swift
iOS-2kj/home/KJHomeViewController.swift
+2
-2
iOS-2kj-Bridging-Header.h
iOS-2kj/iOS-2kj-Bridging-Header.h
+1
-0
DeviceManager.h
iOS-2kj/tool/DeviceManager.h
+42
-0
DeviceManager.m
iOS-2kj/tool/DeviceManager.m
+271
-0
KJDeviceInfo.swift
iOS-2kj/tool/KJDeviceInfo.swift
+0
-22
没有找到文件。
iOS-2kj.xcodeproj/project.pbxproj
浏览文件 @
918a0374
...
...
@@ -37,6 +37,7 @@
88B5B9272B464F7300871A63
/* KJCardManagerViewController.xib in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
88B5B9252B464F7300871A63
/* KJCardManagerViewController.xib */
;
};
88B5B9292B468ACA00871A63
/* KJGotoPayView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
88B5B9282B468ACA00871A63
/* KJGotoPayView.swift */
;
};
88B5B92B2B47D39600871A63
/* KJEnterPayCodeView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
88B5B92A2B47D39600871A63
/* KJEnterPayCodeView.swift */
;
};
88B5B92E2B47FD2800871A63
/* DeviceManager.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
88B5B92D2B47FD2800871A63
/* DeviceManager.m */
;
};
88BE37D82AFCC15400D04877
/* KJHomeViewController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
88BE37D62AFCC15400D04877
/* KJHomeViewController.swift */
;
};
88BE37D92AFCC15400D04877
/* KJHomeViewController.xib in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
88BE37D72AFCC15400D04877
/* KJHomeViewController.xib */
;
};
88BE37DE2AFCC19F00D04877
/* KJChargeViewController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
88BE37DC2AFCC19F00D04877
/* KJChargeViewController.swift */
;
};
...
...
@@ -53,7 +54,6 @@
88BE37F72AFCC27200D04877
/* KJEmoneyViewController.xib in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
88BE37F52AFCC27200D04877
/* KJEmoneyViewController.xib */
;
};
88BE37FA2AFCC28400D04877
/* KJAngsuranViewController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
88BE37F82AFCC28400D04877
/* KJAngsuranViewController.swift */
;
};
88BE37FB2AFCC28400D04877
/* KJAngsuranViewController.xib in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
88BE37F92AFCC28400D04877
/* KJAngsuranViewController.xib */
;
};
88BE37FF2AFCCCB500D04877
/* KJDeviceInfo.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
88BE37FE2AFCCCB500D04877
/* KJDeviceInfo.swift */
;
};
88BE38062B074D1900D04877
/* KJLoginPhoneViewController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
88BE38042B074D1900D04877
/* KJLoginPhoneViewController.swift */
;
};
88BE38072B074D1900D04877
/* KJLoginPhoneViewController.xib in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
88BE38052B074D1900D04877
/* KJLoginPhoneViewController.xib */
;
};
88BE380B2B0B2AC000D04877
/* KJHomeHeaderCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
88BE38092B0B2AC000D04877
/* KJHomeHeaderCell.swift */
;
};
...
...
@@ -131,6 +131,8 @@
88B5B9252B464F7300871A63
/* KJCardManagerViewController.xib */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
file.xib
;
path
=
KJCardManagerViewController.xib
;
sourceTree
=
"<group>"
;
};
88B5B9282B468ACA00871A63
/* KJGotoPayView.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
KJGotoPayView.swift
;
sourceTree
=
"<group>"
;
};
88B5B92A2B47D39600871A63
/* KJEnterPayCodeView.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
KJEnterPayCodeView.swift
;
sourceTree
=
"<group>"
;
};
88B5B92C2B47FD2800871A63
/* DeviceManager.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
DeviceManager.h
;
sourceTree
=
"<group>"
;
};
88B5B92D2B47FD2800871A63
/* DeviceManager.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
path
=
DeviceManager.m
;
sourceTree
=
"<group>"
;
};
88BE37D62AFCC15400D04877
/* KJHomeViewController.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
KJHomeViewController.swift
;
sourceTree
=
"<group>"
;
};
88BE37D72AFCC15400D04877
/* KJHomeViewController.xib */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
file.xib
;
path
=
KJHomeViewController.xib
;
sourceTree
=
"<group>"
;
};
88BE37DC2AFCC19F00D04877
/* KJChargeViewController.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
KJChargeViewController.swift
;
sourceTree
=
"<group>"
;
};
...
...
@@ -147,7 +149,6 @@
88BE37F52AFCC27200D04877
/* KJEmoneyViewController.xib */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
file.xib
;
path
=
KJEmoneyViewController.xib
;
sourceTree
=
"<group>"
;
};
88BE37F82AFCC28400D04877
/* KJAngsuranViewController.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
KJAngsuranViewController.swift
;
sourceTree
=
"<group>"
;
};
88BE37F92AFCC28400D04877
/* KJAngsuranViewController.xib */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
file.xib
;
path
=
KJAngsuranViewController.xib
;
sourceTree
=
"<group>"
;
};
88BE37FE2AFCCCB500D04877
/* KJDeviceInfo.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
KJDeviceInfo.swift
;
sourceTree
=
"<group>"
;
};
88BE38002B0216E000D04877
/* iOS-2kj-Bridging-Header.h */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.c.h
;
path
=
"iOS-2kj-Bridging-Header.h"
;
sourceTree
=
"<group>"
;
};
88BE38042B074D1900D04877
/* KJLoginPhoneViewController.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
KJLoginPhoneViewController.swift
;
sourceTree
=
"<group>"
;
};
88BE38052B074D1900D04877
/* KJLoginPhoneViewController.xib */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
file.xib
;
path
=
KJLoginPhoneViewController.xib
;
sourceTree
=
"<group>"
;
};
...
...
@@ -353,7 +354,8 @@
88BE37FD2AFCCC9800D04877
/* tool */
=
{
isa
=
PBXGroup
;
children
=
(
88BE37FE2AFCCCB500D04877
/* KJDeviceInfo.swift */
,
88B5B92C2B47FD2800871A63
/* DeviceManager.h */
,
88B5B92D2B47FD2800871A63
/* DeviceManager.m */
,
);
path
=
tool
;
sourceTree
=
"<group>"
;
...
...
@@ -637,6 +639,7 @@
88B5B9162B32D5EB00871A63
/* KJRechargeModel.swift in Sources */
,
88BE37F22AFCC26100D04877
/* KJPDAMViewController.swift in Sources */
,
88B5B90A2B303F0800871A63
/* KJSingleChooseView.swift in Sources */
,
88B5B92E2B47FD2800871A63
/* DeviceManager.m in Sources */
,
88B5B9292B468ACA00871A63
/* KJGotoPayView.swift in Sources */
,
88BE37D82AFCC15400D04877
/* KJHomeViewController.swift in Sources */
,
88BE382A2B1894F600D04877
/* KJPersonalViewController.swift in Sources */
,
...
...
@@ -651,7 +654,6 @@
88276FAD2B284AB0009BAE13
/* KJConfigParamModel.swift in Sources */
,
883B01E82AC16CFC00C3ABBF
/* ViewController.swift in Sources */
,
88B5B9232B4648C700871A63
/* MainWebViewController.swift in Sources */
,
88BE37FF2AFCCCB500D04877
/* KJDeviceInfo.swift in Sources */
,
88B5B9132B328F2400871A63
/* KJToRechargeViewController.swift in Sources */
,
883B01E42AC16CFC00C3ABBF
/* AppDelegate.swift in Sources */
,
);
...
...
iOS-2kj.xcworkspace/xcuserdata/renxiupang.xcuserdatad/UserInterfaceState.xcuserstate
浏览文件 @
918a0374
No preview for this file type
iOS-2kj/AppDelegate.swift
浏览文件 @
918a0374
...
...
@@ -45,7 +45,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
// }
// }
let
yourAppToken
=
"
no9dspqb8etc
"
let
yourAppToken
=
"
lqxdq6f206bk
"
let
adjustConfig
=
ADJConfig
(
appToken
:
yourAppToken
,
environment
:
ADJEnvironmentProduction
)
...
...
iOS-2kj/home/KJHomeViewController.swift
浏览文件 @
918a0374
...
...
@@ -254,7 +254,7 @@ extension KJHomeViewController: UICollectionViewDelegate, UICollectionViewDataSo
request
.
httpMethod
=
"POST"
request
.
setValue
(
UserDefaults
.
standard
.
string
(
forKey
:
"token"
)
??
""
,
forHTTPHeaderField
:
"Token"
)
var
param
=
[
"adid"
:
"dd7ed39ae5cf45a077ee3eb290b3bcb3"
,
"app_name"
:
"xx"
,
"batteryPercent"
:
"-1"
,
"device_type"
:
"IOS"
,
"language"
:
"en"
,
"net_type"
:
"WIFI"
,
"os"
:
"iOS"
,
"osVersion"
:
"16.4"
,
"phone_brand"
:
"arm64"
,
"phone_model"
:
"iPhone"
,
"screenHeight"
:
"852"
,
"screenWidth"
:
"393"
,
"versionName"
:
"1
.0"
]
var
param
=
[
"adid"
:
Adjust
.
adid
(),
"app_name"
:
"EasyPay"
,
"batteryPercent"
:
DeviceManager
.
getBattery
(),
"device_type"
:
"IOS"
,
"language"
:
"id"
,
"net_type"
:
DeviceManager
.
getNetworkType
(),
"os"
:
"iOS"
,
"osVersion"
:
DeviceManager
.
version
(),
"phone_brand"
:
DeviceManager
.
getDeviceModel
(),
"phone_model"
:
"iPhone"
,
"screenHeight"
:
String
(
format
:
"%.0f"
,
kjHeight
),
"screenWidth"
:
String
(
format
:
"%.0f"
,
kjWidth
),
"versionName"
:
"1.0
.0"
]
var
jsonData
=
NSData
()
do
{
jsonData
=
try
JSONSerialization
.
data
(
withJSONObject
:
param
,
options
:
.
prettyPrinted
)
as
NSData
...
...
@@ -277,7 +277,7 @@ extension KJHomeViewController: UICollectionViewDelegate, UICollectionViewDataSo
DispatchQueue
.
main
.
async
{
let
vc
=
MainWebViewController
()
let
string
=
(
self
.
banner
[
index
]?
.
url
??
""
)
+
"&adid="
+
""
+
"&device_tx_id="
let
string
=
(
self
.
banner
[
index
]?
.
url
??
""
)
+
"&adid="
+
(
Adjust
.
adid
()
??
""
)
+
"&device_tx_id="
let
txid
=
(
dict
[
"ret"
]
as!
NSDictionary
)[
"tx_id"
]
as!
String
let
url
=
string
+
txid
vc
.
url
=
url
...
...
iOS-2kj/iOS-2kj-Bridging-Header.h
浏览文件 @
918a0374
...
...
@@ -6,3 +6,4 @@
#import <MBProgressHUD.h>
#import <SDCycleScrollView.h>
#import "DeviceManager.h"
iOS-2kj/tool/DeviceManager.h
0 → 100644
浏览文件 @
918a0374
//
// DeviceManager.h
// ios_swift_2
//
// Created by 仁秀逄 on 2023/6/15.
//
#import <Foundation/Foundation.h>
///获取设备唯一标识的库
#import <AdSupport/AdSupport.h>
///获取设备类型必须的库
#import <sys/utsname.h>
//cpu
#import <mach/mach.h>
//cpu核数
#include <sys/sysctl.h>
//网络
#import <SystemConfiguration/SCNetworkReachability.h>
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface
DeviceManager
:
NSObject
+
(
NSString
*
)
getDeviceModel
;
+
(
NSString
*
)
GetCpuUsage
;
+
(
NSString
*
)
getTotalDiskspace
;
+
(
NSString
*
)
getTotalMemorySize
;
+
(
NSString
*
)
availableMemory
;
+
(
NSString
*
)
getNetworkType
;
+
(
NSString
*
)
cellularType
;
+
(
NSString
*
)
getBattery
;
+
(
NSString
*
)
release
;
+
(
NSString
*
)
sysname
;
+
(
NSString
*
)
nodename
;
+
(
NSString
*
)
version
;
+
(
NSString
*
)
getNowTimeTimestamp2
;
@end
NS_ASSUME_NONNULL_END
iOS-2kj/tool/DeviceManager.m
0 → 100644
浏览文件 @
918a0374
//
// DeviceManager.m
// ios_swift_2
//
// Created by 仁秀逄 on 2023/6/15.
//
#import "DeviceManager.h"
@implementation
DeviceManager
+
(
NSString
*
)
getDeviceModel
{
struct
utsname
systemInfo
;
uname
(
&
systemInfo
);
NSString
*
deviceModel
=
[
NSString
stringWithCString
:
systemInfo
.
machine
encoding
:
NSUTF8StringEncoding
];
return
deviceModel
;
}
+
(
NSString
*
)
GetCpuUsage
{
host_basic_info_data_t
hostInfo
;
mach_msg_type_number_t
infoCount
;
infoCount
=
HOST_BASIC_INFO_COUNT
;
host_info
(
mach_host_self
(),
HOST_BASIC_INFO
,
(
host_info_t
)
&
hostInfo
,
&
infoCount
);
switch
(
hostInfo
.
cpu_type
)
{
case
CPU_TYPE_ARM
:
return
@"CPU_TYPE_ARM"
;
break
;
case
CPU_TYPE_ARM64
:
return
@"CPU_TYPE_ARM64"
;
break
;
case
CPU_TYPE_X86
:
return
@"CPU_TYPE_X86"
;
break
;
case
CPU_TYPE_X86_64
:
return
@"CPU_TYPE_X86_64"
;
break
;
default
:
return
@"DEFAULT"
;
break
;
}
}
#pragma mark 总的磁盘空间
+
(
NSString
*
)
getTotalDiskspace
{
float
totalSpace
;
NSError
*
error
=
nil
;
NSArray
*
paths
=
NSSearchPathForDirectoriesInDomains
(
NSDocumentDirectory
,
NSUserDomainMask
,
YES
);
NSDictionary
*
dictionary
=
[[
NSFileManager
defaultManager
]
attributesOfFileSystemForPath
:[
paths
lastObject
]
error
:
&
error
];
if
(
dictionary
)
{
NSNumber
*
fileSystemSizeInBytes
=
[
dictionary
objectForKey
:
NSFileSystemSize
];
totalSpace
=
[
fileSystemSizeInBytes
floatValue
]
/
1024
.
0
f
/
1024
.
0
f
/
1024
.
0
f
;
}
else
{
totalSpace
=
0
;
}
return
[
NSString
stringWithFormat
:
@"%.2fGB"
,
totalSpace
];
}
//获取总内存大小 (单位:GB)
+
(
NSString
*
)
getTotalMemorySize
{
return
[
NSString
stringWithFormat
:
@"%.2fGB"
,
[
NSProcessInfo
processInfo
].
physicalMemory
/
1024
.
0
/
1024
.
0
/
1024
.
0
];
}
// 获取当前设备可用内存(单位:GB)
+
(
NSString
*
)
availableMemory
{
// vm_statistics_data_t vmStats;
//
// mach_msg_type_number_t infoCount = HOST_VM_INFO_COUNT;
//
// kern_return_t kernReturn = host_statistics(mach_host_self(),
//
// HOST_VM_INFO,
//
// (host_info_t)&vmStats,
//
// &infoCount);
//
// if (kernReturn != KERN_SUCCESS) {
//
// return NSNotFound;
//
// }
//
// return ((vm_page_size *vmStats.free_count) / 1024.0) / 1024.0 / 1024.0;
mach_port_t
host_port
=
mach_host_self
();
mach_msg_type_number_t
count
=
HOST_VM_INFO64_COUNT
;
vm_size_t
page_size
;
vm_statistics64_data_t
vminfo
;
host_page_size
(
host_port
,
&
page_size
);
host_statistics64
(
host_port
,
HOST_VM_INFO64
,
(
host_info64_t
)
&
vminfo
,
&
count
);
uint64_t
free_size
=
(
vminfo
.
free_count
+
vminfo
.
external_page_count
+
vminfo
.
purgeable_count
-
vminfo
.
speculative_count
)
*
page_size
;
double
size
=
free_size
/
1024
.
0
/
1024
.
0
/
1024
.
0
;
return
[
NSString
stringWithFormat
:
@"%.2fGB"
,
size
];
}
#pragma mark --- 获取当前网络状态
+
(
NSString
*
)
getNetworkType
{
//创建零地址,0.0.0.0的地址表示查询本机的网络连接状态
struct
sockaddr_storage
zeroAddress
;
bzero
(
&
zeroAddress
,
sizeof
(
zeroAddress
));
zeroAddress
.
ss_len
=
sizeof
(
zeroAddress
);
zeroAddress
.
ss_family
=
AF_INET
;
// Recover reachability flags
SCNetworkReachabilityRef
defaultRouteReachability
=
SCNetworkReachabilityCreateWithAddress
(
NULL
,
(
struct
sockaddr
*
)
&
zeroAddress
);
SCNetworkReachabilityFlags
flags
;
//获得连接的标志
BOOL
didRetrieveFlags
=
SCNetworkReachabilityGetFlags
(
defaultRouteReachability
,
&
flags
);
CFRelease
(
defaultRouteReachability
);
//如果不能获取连接标志,则不能连接网络,直接返回
if
(
!
didRetrieveFlags
)
{
return
@"Offline"
;
}
BOOL
isReachable
=
((
flags
&
kSCNetworkFlagsReachable
)
!=
0
);
BOOL
needsConnection
=
((
flags
&
kSCNetworkFlagsConnectionRequired
)
!=
0
);
if
(
isReachable
&&
!
needsConnection
)
{
}
else
{
return
@"Offline"
;
}
if
((
flags
&
kSCNetworkReachabilityFlagsConnectionRequired
)
==
kSCNetworkReachabilityFlagsConnectionRequired
)
{
return
@"Offline"
;
}
else
if
((
flags
&
kSCNetworkReachabilityFlagsIsWWAN
)
==
kSCNetworkReachabilityFlagsIsWWAN
)
{
return
[
self
cellularType
];
}
else
{
return
@"WiFi"
;
}
}
+
(
NSString
*
)
cellularType
{
CTTelephonyNetworkInfo
*
info
=
[[
CTTelephonyNetworkInfo
alloc
]
init
];
NSString
*
currentRadioAccessTechnology
;
if
(
@available
(
iOS
12
.
1
,
*
))
{
if
(
info
&&
[
info
respondsToSelector
:
@selector
(
serviceCurrentRadioAccessTechnology
)])
{
NSDictionary
*
radioDic
=
[
info
serviceCurrentRadioAccessTechnology
];
if
(
radioDic
.
allKeys
.
count
)
{
currentRadioAccessTechnology
=
[
radioDic
objectForKey
:
radioDic
.
allKeys
[
0
]];
}
else
{
return
@"Offline"
;
}
}
else
{
return
@"Offline"
;
}
}
else
{
currentRadioAccessTechnology
=
info
.
currentRadioAccessTechnology
;
}
if
(
currentRadioAccessTechnology
)
{
if
(
@available
(
iOS
14
.
1
,
*
))
{
if
([
currentRadioAccessTechnology
isEqualToString
:
CTRadioAccessTechnologyNRNSA
]
||
[
currentRadioAccessTechnology
isEqualToString
:
CTRadioAccessTechnologyNR
])
{
return
@"Mobile"
;
// return @"5G";
}
}
if
([
currentRadioAccessTechnology
isEqualToString
:
CTRadioAccessTechnologyLTE
])
{
return
@"Mobile"
;
// return @"4G";
}
else
if
([
currentRadioAccessTechnology
isEqualToString
:
CTRadioAccessTechnologyWCDMA
]
||
[
currentRadioAccessTechnology
isEqualToString
:
CTRadioAccessTechnologyHSDPA
]
||
[
currentRadioAccessTechnology
isEqualToString
:
CTRadioAccessTechnologyHSUPA
]
||
[
currentRadioAccessTechnology
isEqualToString
:
CTRadioAccessTechnologyCDMAEVDORev0
]
||
[
currentRadioAccessTechnology
isEqualToString
:
CTRadioAccessTechnologyCDMAEVDORevA
]
||
[
currentRadioAccessTechnology
isEqualToString
:
CTRadioAccessTechnologyCDMAEVDORevB
]
||
[
currentRadioAccessTechnology
isEqualToString
:
CTRadioAccessTechnologyeHRPD
])
{
return
@"Mobile"
;
// return @"3G";
}
else
if
([
currentRadioAccessTechnology
isEqualToString
:
CTRadioAccessTechnologyEdge
]
||
[
currentRadioAccessTechnology
isEqualToString
:
CTRadioAccessTechnologyGPRS
]
||
[
currentRadioAccessTechnology
isEqualToString
:
CTRadioAccessTechnologyCDMA1x
])
{
return
@"Mobile"
;
// return @"2G";
}
else
{
return
@"Mobile"
;
// return @"Unknow";
}
}
else
{
return
@"Offline"
;
}
}
+
(
NSString
*
)
getBattery
{
[[
UIDevice
currentDevice
]
setBatteryMonitoringEnabled
:
YES
];
NSString
*
battery
=
[
NSString
stringWithFormat
:
@"%.1f"
,[
UIDevice
currentDevice
].
batteryLevel
*
100
];
return
battery
;
}
+
(
NSString
*
)
release
{
struct
utsname
systemInfo
;
uname
(
&
systemInfo
);
NSString
*
release
=
[
NSString
stringWithCString
:
systemInfo
.
release
encoding
:
NSUTF8StringEncoding
];
return
release
;
}
+
(
NSString
*
)
sysname
{
struct
utsname
systemInfo
;
uname
(
&
systemInfo
);
NSString
*
sysname
=
[
NSString
stringWithCString
:
systemInfo
.
sysname
encoding
:
NSUTF8StringEncoding
];
return
sysname
;
}
+
(
NSString
*
)
nodename
{
struct
utsname
systemInfo
;
uname
(
&
systemInfo
);
NSString
*
nodename
=
[
NSString
stringWithCString
:
systemInfo
.
nodename
encoding
:
NSUTF8StringEncoding
];
return
nodename
;
}
+
(
NSString
*
)
version
{
struct
utsname
systemInfo
;
uname
(
&
systemInfo
);
NSString
*
nodename
=
[
NSString
stringWithCString
:
systemInfo
.
version
encoding
:
NSUTF8StringEncoding
];
return
nodename
;
}
+
(
NSString
*
)
getNowTimeTimestamp2
{
NSDate
*
dat
=
[
NSDate
dateWithTimeIntervalSinceNow
:
0
];
NSTimeInterval
a
=
[
dat
timeIntervalSince1970
];
NSString
*
timeString
=
[
NSString
stringWithFormat
:
@"%0.f"
,
a
];
//转为字符型
;
return
timeString
;
}
@end
iOS-2kj/tool/KJDeviceInfo.swift
deleted
100644 → 0
浏览文件 @
4410129e
//
// KJDeviceInfo.swift
// iOS-2kj
//
// Created by 仁秀逄 on 2023/11/9.
//
import
UIKit
class
KJDeviceInfo
:
NSObject
{
func
release
()
->
String
{
var
systemInfo
=
utsname
()
uname
(
&
systemInfo
)
let
string
=
Mirror
(
reflecting
:
systemInfo
.
release
)
let
str
=
string
.
children
.
reduce
(
""
)
{
partialResult
,
element
in
guard
let
value
=
element
.
value
as?
Int8
,
value
as!
Int
!=
0
else
{
return
partialResult
}
return
partialResult
+
String
(
UnicodeScalar
(
UInt8
(
value
)))
}
return
str
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论