update
This commit is contained in:
393
Pods/CocoaDebug/Sources/Core/CocoaDebug+Extensions.swift
generated
Normal file
393
Pods/CocoaDebug/Sources/Core/CocoaDebug+Extensions.swift
generated
Normal file
@@ -0,0 +1,393 @@
|
||||
//
|
||||
// Example
|
||||
// man
|
||||
//
|
||||
// Created by man 11/11/2018.
|
||||
// Copyright © 2020 man. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
extension Dictionary {
|
||||
///JSON/Form format conversion
|
||||
func dictionaryToFormString() -> String? {
|
||||
var array = [String]()
|
||||
|
||||
for (key, value) in self {
|
||||
array.append(String(describing: key) + "=" + String(describing: value))
|
||||
}
|
||||
if array.count > 0 {
|
||||
return array.joined(separator: "&")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
extension String {
|
||||
///JSON/Form format conversion
|
||||
func formStringToDictionary() -> [String: Any]? {
|
||||
var dictionary = [String: Any]()
|
||||
let array = self.components(separatedBy: "&")
|
||||
|
||||
for str in array {
|
||||
let arr = str.components(separatedBy: "=")
|
||||
if arr.count == 2 {
|
||||
dictionary.updateValue(arr[1], forKey: arr[0])
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
if dictionary.count > 0 {
|
||||
return dictionary
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
//MARK: - *********************************************************************
|
||||
|
||||
extension Data {
|
||||
func dataToDictionary() -> [String: Any]? {
|
||||
do {
|
||||
return try JSONSerialization.jsonObject(with: self, options: []) as? [String : Any]
|
||||
} catch {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
extension Dictionary {
|
||||
func dictionaryToData() -> Data? {
|
||||
do {
|
||||
return try JSONSerialization.data(withJSONObject: self, options: .prettyPrinted)
|
||||
} catch {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
extension Data {
|
||||
func dataToString() -> String? {
|
||||
return String(bytes: self, encoding: .utf8)
|
||||
}
|
||||
}
|
||||
|
||||
extension String {
|
||||
func stringToData() -> Data? {
|
||||
return self.data(using: .utf8)
|
||||
}
|
||||
}
|
||||
|
||||
//MARK: - *********************************************************************
|
||||
|
||||
extension String {
|
||||
func stringToDictionary() -> [String: Any]? {
|
||||
return self.stringToData()?.dataToDictionary()
|
||||
}
|
||||
}
|
||||
|
||||
extension Dictionary {
|
||||
func dictionaryToString() -> String? {
|
||||
return self.dictionaryToData()?.dataToString()
|
||||
}
|
||||
}
|
||||
|
||||
extension String {
|
||||
func jsonStringToPrettyJsonString() -> String? {
|
||||
return self.stringToDictionary()?.dictionaryToString()
|
||||
}
|
||||
}
|
||||
|
||||
extension String {
|
||||
func isValidURL() -> Bool {
|
||||
if let url = URL(string: self) {
|
||||
return UIApplication.shared.canOpenURL(url)
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
extension String {
|
||||
func isValidJsonString() -> Bool {
|
||||
if let _ = self.stringToDictionary() {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
extension String {
|
||||
func isValidFormString() -> Bool {
|
||||
if let _ = self.formStringToDictionary() {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
extension String {
|
||||
func jsonStringToFormString() -> String? {
|
||||
return self.stringToDictionary()?.dictionaryToFormString()
|
||||
}
|
||||
}
|
||||
|
||||
extension String {
|
||||
func formStringToJsonString() -> String? {
|
||||
return self.formStringToDictionary()?.dictionaryToString()
|
||||
}
|
||||
}
|
||||
|
||||
extension String {
|
||||
func formStringToData() -> Data? {
|
||||
return self.formStringToDictionary()?.dictionaryToData()
|
||||
}
|
||||
}
|
||||
|
||||
extension Data {
|
||||
func formDataToDictionary() -> [String: Any]? {
|
||||
return self.dataToString()?.formStringToDictionary()
|
||||
}
|
||||
}
|
||||
|
||||
extension Data {
|
||||
func dataToPrettyPrintString() -> String? {
|
||||
//1.pretty json
|
||||
if let str = self.dataToDictionary()?.dictionaryToString() {
|
||||
return str
|
||||
} else {
|
||||
//2.protobuf
|
||||
// if let message = try? GPBMessage.parse(from: self) {
|
||||
// if message.serializedSize() > 0 {
|
||||
// return message.description
|
||||
// } else {
|
||||
// //3.utf-8 string
|
||||
// return String(data: self, encoding: .utf8)
|
||||
// }
|
||||
// } else {
|
||||
//3.utf-8 string
|
||||
return String(data: self, encoding: .utf8)
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//MARK: - *********************************************************************
|
||||
|
||||
//https://gist.github.com/arshad/de147c42d7b3063ef7bc
|
||||
///Color
|
||||
extension String {
|
||||
var hexColor: UIColor {
|
||||
let hex = trimmingCharacters(in: CharacterSet.alphanumerics.inverted)
|
||||
var int = UInt32()
|
||||
Scanner(string: hex).scanHexInt32(&int)
|
||||
var a, r, g, b: UInt32
|
||||
switch hex.count {
|
||||
case 3: // RGB (12-bit)
|
||||
(a, r, g, b) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17)
|
||||
case 6: // RGB (24-bit)
|
||||
(a, r, g, b) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF)
|
||||
case 8: // ARGB (32-bit)
|
||||
(a, r, g, b) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF)
|
||||
default:
|
||||
return .clear
|
||||
}
|
||||
return UIColor(red: CGFloat(r) / 255, green: CGFloat(g) / 255, blue: CGFloat(b) / 255, alpha: CGFloat(a) / 255)
|
||||
}
|
||||
}
|
||||
|
||||
extension UIView {
|
||||
func addCorner(roundingCorners: UIRectCorner, cornerSize: CGSize) {
|
||||
let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: roundingCorners, cornerRadii: cornerSize)
|
||||
let cornerLayer = CAShapeLayer()
|
||||
cornerLayer.frame = bounds
|
||||
cornerLayer.path = path.cgPath
|
||||
self.layer.mask = cornerLayer
|
||||
}
|
||||
}
|
||||
|
||||
//extension NSObject {
|
||||
// func dispatch_main_async_safe(callback: @escaping ()->Void ) {
|
||||
// if Thread.isMainThread {
|
||||
// callback()
|
||||
// } else {
|
||||
// DispatchQueue.main.async( execute: {
|
||||
// callback()
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
//https://stackoverflow.com/questions/26244293/scrolltorowatindexpath-with-uitableview-does-not-work
|
||||
///tableView
|
||||
extension UITableView {
|
||||
func tableViewScrollToBottom(animated: Bool) {
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(1)) {
|
||||
let numberOfSections = self.numberOfSections
|
||||
let numberOfRows = self.numberOfRows(inSection: numberOfSections-1)
|
||||
|
||||
if numberOfRows > 0 {
|
||||
let indexPath = IndexPath(row: numberOfRows-1, section: (numberOfSections-1))
|
||||
self.scrollToRow(at: indexPath, at: .bottom, animated: animated)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func tableViewScrollToIndex(index: Int, animated: Bool) {
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(1)) {
|
||||
self.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: animated)
|
||||
}
|
||||
}
|
||||
|
||||
func tableViewScrollToHeader(animated: Bool) {
|
||||
self.scrollRectToVisible(CGRect(x: 0, y: 0, width: 1, height: 1), animated: animated)
|
||||
}
|
||||
|
||||
func reloadData(completion: @escaping () -> ()) {
|
||||
UIView.animate(withDuration: 0, animations: { self.reloadData()})
|
||||
{_ in completion() }
|
||||
}
|
||||
}
|
||||
|
||||
///shake
|
||||
extension UIWindow {
|
||||
|
||||
private static var _cocoadebugShakeProperty = [String:Bool]()
|
||||
|
||||
var cocoadebugShakeProperty:Bool {
|
||||
get {
|
||||
let tmpAddress = String(format: "%p", unsafeBitCast(self, to: Int.self))
|
||||
return UIWindow._cocoadebugShakeProperty[tmpAddress] ?? false
|
||||
}
|
||||
set(newValue) {
|
||||
let tmpAddress = String(format: "%p", unsafeBitCast(self, to: Int.self))
|
||||
UIWindow._cocoadebugShakeProperty[tmpAddress] = newValue
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
open override var canBecomeFirstResponder: Bool {
|
||||
return true
|
||||
}
|
||||
|
||||
open override func motionBegan(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
|
||||
super.motionBegan(motion, with: event)
|
||||
|
||||
self.cocoadebugShakeProperty = true
|
||||
|
||||
if CocoaDebugSettings.shared.responseShake == false {return}
|
||||
if motion == .motionShake {
|
||||
if CocoaDebugSettings.shared.visible == true { return }
|
||||
CocoaDebugSettings.shared.showBubbleAndWindow = !CocoaDebugSettings.shared.showBubbleAndWindow
|
||||
}
|
||||
}
|
||||
|
||||
open override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
|
||||
super.motionEnded(motion, with: event)
|
||||
|
||||
if self.cocoadebugShakeProperty == true {
|
||||
self.cocoadebugShakeProperty = false
|
||||
return
|
||||
}
|
||||
|
||||
if CocoaDebugSettings.shared.responseShake == false {return}
|
||||
if motion == .motionShake {
|
||||
if CocoaDebugSettings.shared.visible == true { return }
|
||||
CocoaDebugSettings.shared.showBubbleAndWindow = !CocoaDebugSettings.shared.showBubbleAndWindow
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///CocoaDebug
|
||||
extension CocoaDebug {
|
||||
|
||||
///init
|
||||
static func initializationMethod(serverURL: String? = nil, ignoredURLs: [String]? = nil, onlyURLs: [String]? = nil, ignoredPrefixLogs: [String]? = nil, onlyPrefixLogs: [String]? = nil, additionalViewController: UIViewController? = nil, emailToRecipients: [String]? = nil, emailCcRecipients: [String]? = nil, mainColor: String? = nil, protobufTransferMap: [String: [String]]? = nil)
|
||||
{
|
||||
if serverURL == nil {
|
||||
CocoaDebugSettings.shared.serverURL = ""
|
||||
} else {
|
||||
CocoaDebugSettings.shared.serverURL = serverURL
|
||||
}
|
||||
|
||||
if ignoredURLs == nil {
|
||||
CocoaDebugSettings.shared.ignoredURLs = []
|
||||
} else {
|
||||
CocoaDebugSettings.shared.ignoredURLs = ignoredURLs
|
||||
}
|
||||
if onlyURLs == nil {
|
||||
CocoaDebugSettings.shared.onlyURLs = []
|
||||
} else {
|
||||
CocoaDebugSettings.shared.onlyURLs = onlyURLs
|
||||
}
|
||||
|
||||
if ignoredPrefixLogs == nil {
|
||||
CocoaDebugSettings.shared.ignoredPrefixLogs = []
|
||||
} else {
|
||||
CocoaDebugSettings.shared.ignoredPrefixLogs = ignoredPrefixLogs
|
||||
}
|
||||
if onlyPrefixLogs == nil {
|
||||
CocoaDebugSettings.shared.onlyPrefixLogs = []
|
||||
} else {
|
||||
CocoaDebugSettings.shared.onlyPrefixLogs = onlyPrefixLogs
|
||||
}
|
||||
|
||||
if CocoaDebugSettings.shared.firstIn == nil {//first launch
|
||||
CocoaDebugSettings.shared.firstIn = ""
|
||||
CocoaDebugSettings.shared.showBubbleAndWindow = true
|
||||
} else {//not first launch
|
||||
CocoaDebugSettings.shared.showBubbleAndWindow = CocoaDebugSettings.shared.showBubbleAndWindow
|
||||
}
|
||||
|
||||
CocoaDebugSettings.shared.visible = false
|
||||
CocoaDebugSettings.shared.logSearchWordNormal = nil
|
||||
CocoaDebugSettings.shared.logSearchWordRN = nil
|
||||
CocoaDebugSettings.shared.logSearchWordWeb = nil
|
||||
CocoaDebugSettings.shared.networkSearchWord = nil
|
||||
CocoaDebugSettings.shared.protobufTransferMap = protobufTransferMap
|
||||
CocoaDebugSettings.shared.additionalViewController = additionalViewController
|
||||
|
||||
var _ = _OCLogStoreManager.shared()
|
||||
CocoaDebugSettings.shared.responseShake = true
|
||||
|
||||
//share via email
|
||||
CocoaDebugSettings.shared.emailToRecipients = emailToRecipients
|
||||
CocoaDebugSettings.shared.emailCcRecipients = emailCcRecipients
|
||||
|
||||
//color
|
||||
CocoaDebugSettings.shared.mainColor = mainColor ?? "#42d459"
|
||||
|
||||
//slow animations
|
||||
CocoaDebugSettings.shared.slowAnimations = false
|
||||
|
||||
//log
|
||||
let enableLogMonitoring = UserDefaults.standard.bool(forKey: "enableLogMonitoring_CocoaDebug")
|
||||
if enableLogMonitoring == false {
|
||||
_SwiftLogHelper.shared.enable = false
|
||||
// _OCLogHelper.shared()?.enable = false
|
||||
} else {
|
||||
_SwiftLogHelper.shared.enable = true
|
||||
// _OCLogHelper.shared()?.enable = true
|
||||
}
|
||||
|
||||
//network
|
||||
let disableNetworkMonitoring = UserDefaults.standard.bool(forKey: "disableNetworkMonitoring_CocoaDebug")
|
||||
if disableNetworkMonitoring == true {
|
||||
_NetworkHelper.shared().disable()
|
||||
} else {
|
||||
_NetworkHelper.shared().enable()
|
||||
}
|
||||
}
|
||||
|
||||
///deinit
|
||||
static func deinitializationMethod() {
|
||||
WindowHelper.shared.disable()
|
||||
_NetworkHelper.shared().disable()
|
||||
_SwiftLogHelper.shared.enable = false
|
||||
// _OCLogHelper.shared()?.enable = false
|
||||
CrashLogger.shared.enable = false
|
||||
CocoaDebugSettings.shared.responseShake = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
40
Pods/CocoaDebug/Sources/Core/CocoaDebug.h
generated
Normal file
40
Pods/CocoaDebug/Sources/Core/CocoaDebug.h
generated
Normal file
@@ -0,0 +1,40 @@
|
||||
//
|
||||
// Example
|
||||
// man
|
||||
//
|
||||
// Created by man 11/11/2018.
|
||||
// Copyright © 2020 man. All rights reserved.
|
||||
//
|
||||
|
||||
#import "CocoaDebug.h"
|
||||
#import "CocoaDebugTool.h"
|
||||
#import "CocoaDebugDeviceInfo.h"
|
||||
#import "NSObject+CocoaDebug.h"
|
||||
|
||||
#import "_fishhook.h"
|
||||
#import "_FileInfo.h"
|
||||
#import "_Swizzling.h"
|
||||
#import "_ObjcLog.h"
|
||||
#import "_Sandboxer.h"
|
||||
#import "_HttpModel.h"
|
||||
#import "_OCLogModel.h"
|
||||
#import "_OCLogHelper.h"
|
||||
#import "_NetworkHelper.h"
|
||||
#import "_HttpDatasource.h"
|
||||
#import "_ImageResources.h"
|
||||
#import "_OCLoggerFormat.h"
|
||||
#import "_RunloopMonitor.h"
|
||||
#import "_BacktraceLogger.h"
|
||||
#import "_ImageController.h"
|
||||
#import "_SandboxerHelper.h"
|
||||
#import "_CanonicalRequest.h"
|
||||
#import "_Sandboxer-Header.h"
|
||||
#import "_FileTableViewCell.h"
|
||||
#import "_OCLogStoreManager.h"
|
||||
#import "_DebugConsoleLabel.h"
|
||||
#import "_CustomHTTPProtocol.h"
|
||||
#import "_CacheStoragePolicy.h"
|
||||
#import "_QNSURLSessionDemux.h"
|
||||
#import "GPBMessage+CocoaDebug.h"
|
||||
#import "_FilePreviewController.h"
|
||||
#import "_DirectoryContentsTableViewController.h"
|
||||
65
Pods/CocoaDebug/Sources/Core/CocoaDebug.swift
generated
Normal file
65
Pods/CocoaDebug/Sources/Core/CocoaDebug.swift
generated
Normal file
@@ -0,0 +1,65 @@
|
||||
//
|
||||
// Example
|
||||
// man
|
||||
//
|
||||
// Created by man 11/11/2018.
|
||||
// Copyright © 2020 man. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
|
||||
@objc public class CocoaDebug : NSObject {
|
||||
|
||||
///if the captured URLs contain server URL, CocoaDebug set server URL bold font to be marked. Not mark when this value is nil. Default value is `nil`.
|
||||
@objc public static var serverURL: String? = nil
|
||||
///set the URLs which should not been captured, CocoaDebug capture all URLs when the value is nil. Default value is `nil`.
|
||||
@objc public static var ignoredURLs: [String]? = nil
|
||||
///set the URLs which are only been captured, CocoaDebug capture all URLs when the value is nil. Default value is `nil`.
|
||||
@objc public static var onlyURLs: [String]? = nil
|
||||
///set the prefix Logs which should not been captured, CocoaDebug capture all Logs when the value is nil. Default value is `nil`.
|
||||
@objc public static var ignoredPrefixLogs: [String]? = nil
|
||||
///set the prefix Logs which are only been captured, CocoaDebug capture all Logs when the value is nil. Default value is `nil`.
|
||||
@objc public static var onlyPrefixLogs: [String]? = nil
|
||||
///add an additional UIViewController as child controller of CocoaDebug's main UITabBarController. Default value is `nil`.
|
||||
@objc public static var additionalViewController: UIViewController? = nil
|
||||
///set the initial recipients to include in the email’s “To” field when share via email. Default value is `nil`.
|
||||
@objc public static var emailToRecipients: [String]? = nil
|
||||
///set the initial recipients to include in the email’s “Cc” field when share via email. Default value is `nil`.
|
||||
@objc public static var emailCcRecipients: [String]? = nil
|
||||
///set CocoaDebug's main color with hexadecimal format. Default value is `#42d459`.
|
||||
@objc public static var mainColor: String = "#42d459"
|
||||
///protobuf url and response class transfer map. Default value is `nil`.
|
||||
@objc public static var protobufTransferMap: [String: [String]]? = nil
|
||||
|
||||
//MARK: - CocoaDebug enable
|
||||
@objc public static func enable() {
|
||||
initializationMethod(serverURL: serverURL, ignoredURLs: ignoredURLs, onlyURLs: onlyURLs, ignoredPrefixLogs: ignoredPrefixLogs, onlyPrefixLogs: onlyPrefixLogs, additionalViewController: additionalViewController, emailToRecipients: emailToRecipients, emailCcRecipients: emailCcRecipients, mainColor: mainColor, protobufTransferMap: protobufTransferMap)
|
||||
}
|
||||
|
||||
//MARK: - CocoaDebug disable
|
||||
@objc public static func disable() {
|
||||
deinitializationMethod()
|
||||
}
|
||||
|
||||
//MARK: - hide Bubble
|
||||
@objc public static func hideBubble() {
|
||||
CocoaDebugSettings.shared.showBubbleAndWindow = false
|
||||
}
|
||||
|
||||
//MARK: - show Bubble
|
||||
@objc public static func showBubble() {
|
||||
CocoaDebugSettings.shared.showBubbleAndWindow = true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//MARK: - override Swift `print` method
|
||||
public func print<T>(file: String = #file, function: String = #function, line: Int = #line, _ message: T, color: UIColor = .white) {
|
||||
Swift.print(message)
|
||||
_SwiftLogHelper.shared.handleLog(file: file, function: function, line: line, message: message, color: color)
|
||||
}
|
||||
|
||||
|
||||
|
||||
37
Pods/CocoaDebug/Sources/Core/CocoaDebugDeviceInfo.h
generated
Normal file
37
Pods/CocoaDebug/Sources/Core/CocoaDebugDeviceInfo.h
generated
Normal file
@@ -0,0 +1,37 @@
|
||||
//
|
||||
// Example
|
||||
// man
|
||||
//
|
||||
// Created by man 11/11/2018.
|
||||
// Copyright © 2020 man. All rights reserved.
|
||||
//
|
||||
// https://github.com/maybeliu/MBDeviceTool_OC
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface CocoaDebugDeviceInfo : NSObject
|
||||
|
||||
@property (nonatomic, assign, readonly) CGSize resolution;
|
||||
|
||||
@property (nonatomic, copy, readonly) NSString *systemType;
|
||||
@property (nonatomic, copy, readonly) NSString *userName;
|
||||
@property (nonatomic, copy, readonly) NSString *systemVersion;
|
||||
@property (nonatomic, copy, readonly) NSString *deviceModel;
|
||||
@property (nonatomic, copy, readonly) NSString *deviceUUID;
|
||||
@property (nonatomic, copy, readonly) NSString *userPhoneName;
|
||||
@property (nonatomic, copy, readonly) NSString *deviceName;
|
||||
@property (nonatomic, copy, readonly) NSString *getPlatformString;
|
||||
@property (nonatomic, copy, readonly) NSString *localizedModel;
|
||||
@property (nonatomic, copy, readonly) NSString *appVersion;
|
||||
@property (nonatomic, copy, readonly) NSString *appBuiltVersion;
|
||||
@property (nonatomic, copy, readonly) NSString *appBundleID ;
|
||||
@property (nonatomic, copy, readonly) NSString *appBundleName ;
|
||||
|
||||
+ (instancetype)sharedInstance;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
89
Pods/CocoaDebug/Sources/Core/CocoaDebugDeviceInfo.m
generated
Normal file
89
Pods/CocoaDebug/Sources/Core/CocoaDebugDeviceInfo.m
generated
Normal file
@@ -0,0 +1,89 @@
|
||||
//
|
||||
// CocoaDebug
|
||||
// liman
|
||||
//
|
||||
// Created by liman 02/02/2023.
|
||||
// Copyright © 2023 liman. All rights reserved.
|
||||
//
|
||||
|
||||
#import "CocoaDebugDeviceInfo.h"
|
||||
#import "sys/utsname.h"
|
||||
#import "_DeviceUtil.h"
|
||||
|
||||
@implementation CocoaDebugDeviceInfo
|
||||
|
||||
+ (instancetype)sharedInstance {
|
||||
|
||||
static CocoaDebugDeviceInfo *sharedInstance;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
sharedInstance = [[CocoaDebugDeviceInfo alloc] init];
|
||||
});
|
||||
return sharedInstance;
|
||||
}
|
||||
|
||||
- (NSString *)systemType {
|
||||
|
||||
return [[UIDevice currentDevice] systemName];
|
||||
}
|
||||
|
||||
- (NSString *)userName {
|
||||
|
||||
return [[UIDevice currentDevice] name];
|
||||
}
|
||||
|
||||
- (NSString *)systemVersion {
|
||||
|
||||
return [[UIDevice currentDevice] systemVersion];
|
||||
}
|
||||
|
||||
- (NSString *)deviceModel {
|
||||
|
||||
return [[UIDevice currentDevice] model];
|
||||
}
|
||||
|
||||
- (NSString *)deviceUUID {
|
||||
|
||||
return [[[UIDevice currentDevice] identifierForVendor] UUIDString];
|
||||
}
|
||||
|
||||
- (NSString *)deviceName {
|
||||
struct utsname systemInfo;
|
||||
uname(&systemInfo);
|
||||
NSString *code = [NSString stringWithCString:systemInfo.machine
|
||||
encoding:NSUTF8StringEncoding];
|
||||
return code;
|
||||
}
|
||||
|
||||
|
||||
- (NSString *)getPlatformString {
|
||||
return [[_DeviceUtil new] hardwareSimpleDescription];
|
||||
}
|
||||
|
||||
- (NSString *)localizedModel {
|
||||
return [[UIDevice currentDevice] localizedModel];
|
||||
}
|
||||
|
||||
- (NSString *)appVersion {
|
||||
return [[NSBundle mainBundle] infoDictionary][@"CFBundleShortVersionString"];
|
||||
}
|
||||
|
||||
- (NSString *)appBuiltVersion {
|
||||
return [[NSBundle mainBundle] infoDictionary][@"CFBundleVersion"];
|
||||
}
|
||||
|
||||
- (NSString *)appBundleID {
|
||||
NSString *bundleID = [[NSBundle mainBundle] bundleIdentifier];
|
||||
return bundleID;
|
||||
}
|
||||
|
||||
- (NSString *)appBundleName {
|
||||
NSString *bundleName = [[NSBundle mainBundle] objectForInfoDictionaryKey:(__bridge NSString *)kCFBundleNameKey];
|
||||
return bundleName;
|
||||
}
|
||||
|
||||
- (CGSize)resolution {
|
||||
return CGSizeMake([UIScreen mainScreen].bounds.size.width * [[UIScreen mainScreen] scale], [UIScreen mainScreen].bounds.size.height * [[UIScreen mainScreen] scale]);
|
||||
}
|
||||
|
||||
@end
|
||||
277
Pods/CocoaDebug/Sources/Core/CocoaDebugSettings.swift
generated
Normal file
277
Pods/CocoaDebug/Sources/Core/CocoaDebugSettings.swift
generated
Normal file
@@ -0,0 +1,277 @@
|
||||
//
|
||||
// Example
|
||||
// man
|
||||
//
|
||||
// Created by man 11/11/2018.
|
||||
// Copyright © 2020 man. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
@objc public class CocoaDebugSettings: NSObject {
|
||||
|
||||
@objc public static let shared = CocoaDebugSettings()
|
||||
|
||||
@objc public var slowAnimations: Bool = false {
|
||||
didSet {
|
||||
if slowAnimations == false {
|
||||
UIApplication.shared.windows.first?.layer.speed = 1;
|
||||
} else {
|
||||
UIApplication.shared.windows.first?.layer.speed = 0.1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@objc public var responseShake: Bool = false {
|
||||
didSet {
|
||||
UserDefaults.standard.set(responseShake, forKey: "responseShake_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
|
||||
@objc public var firstIn: String? = nil {
|
||||
didSet {
|
||||
UserDefaults.standard.set(firstIn, forKey: "firstIn_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var enableCrashRecording: Bool = false {
|
||||
didSet {
|
||||
UserDefaults.standard.set(enableCrashRecording, forKey: "enableCrashRecording_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
|
||||
if enableCrashRecording == true {
|
||||
CrashLogger.shared.enable = true
|
||||
} else {
|
||||
CrashLogger.shared.enable = false
|
||||
CrashStoreManager.shared.resetCrashs()
|
||||
}
|
||||
}
|
||||
}
|
||||
@objc public var enableUIBlockingMonitoring: Bool = false {
|
||||
didSet {
|
||||
UserDefaults.standard.set(enableUIBlockingMonitoring, forKey: "enableUIBlockingMonitoring_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var enableWKWebViewMonitoring: Bool = false {
|
||||
didSet {
|
||||
UserDefaults.standard.set(enableWKWebViewMonitoring, forKey: "enableWKWebViewMonitoring_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var enableLogMonitoring: Bool = false {
|
||||
didSet {
|
||||
UserDefaults.standard.set(enableLogMonitoring, forKey: "enableLogMonitoring_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var disableNetworkMonitoring: Bool = false {
|
||||
didSet {
|
||||
UserDefaults.standard.set(disableNetworkMonitoring, forKey: "disableNetworkMonitoring_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var enableRNMonitoring: Bool = false {
|
||||
didSet {
|
||||
UserDefaults.standard.set(enableRNMonitoring, forKey: "enableRNMonitoring_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var enableMemoryLeaksMonitoring_ViewController: Bool = false {
|
||||
didSet {
|
||||
UserDefaults.standard.set(enableMemoryLeaksMonitoring_ViewController, forKey: "enableMemoryLeaksMonitoring_UIViewController_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var enableMemoryLeaksMonitoring_View: Bool = false {
|
||||
didSet {
|
||||
UserDefaults.standard.set(enableMemoryLeaksMonitoring_View, forKey: "enableMemoryLeaksMonitoring_UIView_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var enableMemoryLeaksMonitoring_MemberVariables: Bool = false {
|
||||
didSet {
|
||||
UserDefaults.standard.set(enableMemoryLeaksMonitoring_MemberVariables, forKey: "enableMemoryLeaksMonitoring_MemberVariables_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var visible: Bool = false {
|
||||
didSet {
|
||||
UserDefaults.standard.set(visible, forKey: "visible_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var showBubbleAndWindow: Bool = false {
|
||||
didSet {
|
||||
UserDefaults.standard.set(showBubbleAndWindow, forKey: "showBubbleAndWindow_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
|
||||
let x = WindowHelper.shared.vc.bubble.frame.origin.x
|
||||
let width = WindowHelper.shared.vc.bubble.frame.size.width
|
||||
|
||||
if showBubbleAndWindow == true
|
||||
{
|
||||
if x > UIScreen.main.bounds.size.width/2 {
|
||||
WindowHelper.shared.vc.bubble.frame.origin.x = UIScreen.main.bounds.size.width - width/8*8.25
|
||||
} else {
|
||||
WindowHelper.shared.vc.bubble.frame.origin.x = -width + width/8*8.25
|
||||
}
|
||||
WindowHelper.shared.enable()
|
||||
}
|
||||
else
|
||||
{
|
||||
if x > UIScreen.main.bounds.size.width/2 {
|
||||
WindowHelper.shared.vc.bubble.frame.origin.x = UIScreen.main.bounds.size.width
|
||||
} else {
|
||||
WindowHelper.shared.vc.bubble.frame.origin.x = -width
|
||||
}
|
||||
WindowHelper.shared.disable()
|
||||
}
|
||||
}
|
||||
}
|
||||
@objc public var serverURL: String? = nil {
|
||||
didSet {
|
||||
UserDefaults.standard.set(serverURL, forKey: "serverURL_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var tabBarSelectItem: Int {
|
||||
didSet {
|
||||
UserDefaults.standard.set(tabBarSelectItem, forKey: "tabBarSelectItem_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var logSelectIndex: Int {
|
||||
didSet {
|
||||
UserDefaults.standard.set(logSelectIndex, forKey: "logSelectIndex_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var networkLastIndex: Int {
|
||||
didSet {
|
||||
UserDefaults.standard.set(networkLastIndex, forKey: "networkLastIndex_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var bubbleFrameX: Float {
|
||||
didSet {
|
||||
UserDefaults.standard.set(bubbleFrameX, forKey: "bubbleFrameX_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var bubbleFrameY: Float {
|
||||
didSet {
|
||||
UserDefaults.standard.set(bubbleFrameY, forKey: "bubbleFrameY_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var logSearchWordNormal: String? = nil {
|
||||
didSet {
|
||||
UserDefaults.standard.set(logSearchWordNormal, forKey: "logSearchWordNormal_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var logSearchWordRN: String? = nil {
|
||||
didSet {
|
||||
UserDefaults.standard.set(logSearchWordRN, forKey: "logSearchWordRN_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var logSearchWordWeb: String? = nil {
|
||||
didSet {
|
||||
UserDefaults.standard.set(logSearchWordWeb, forKey: "logSearchWordWeb_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var networkSearchWord: String? = nil {
|
||||
didSet {
|
||||
UserDefaults.standard.set(networkSearchWord, forKey: "networkSearchWord_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
}
|
||||
}
|
||||
@objc public var mainColor: String {
|
||||
didSet {
|
||||
UserDefaults.standard.set(mainColor, forKey: "mainColor_CocoaDebug")
|
||||
UserDefaults.standard.synchronize()
|
||||
_NetworkHelper.shared().mainColor = mainColor.hexColor
|
||||
}
|
||||
}
|
||||
@objc public var additionalViewController: UIViewController? = nil
|
||||
|
||||
//share via email
|
||||
@objc public var emailToRecipients: [String]? = nil
|
||||
@objc public var emailCcRecipients: [String]? = nil
|
||||
|
||||
//objc
|
||||
|
||||
@objc public var ignoredURLs: [String]? = nil {
|
||||
didSet {
|
||||
_NetworkHelper.shared().ignoredURLs = ignoredURLs
|
||||
}
|
||||
}
|
||||
@objc public var onlyURLs: [String]? = nil {
|
||||
didSet {
|
||||
_NetworkHelper.shared().onlyURLs = onlyURLs
|
||||
}
|
||||
}
|
||||
|
||||
@objc public var ignoredPrefixLogs: [String]? = nil {
|
||||
didSet {
|
||||
_NetworkHelper.shared().ignoredPrefixLogs = ignoredPrefixLogs
|
||||
}
|
||||
}
|
||||
@objc public var onlyPrefixLogs: [String]? = nil {
|
||||
didSet {
|
||||
_NetworkHelper.shared().onlyPrefixLogs = onlyPrefixLogs
|
||||
}
|
||||
}
|
||||
|
||||
//protobuf
|
||||
@objc public var protobufTransferMap: [String: [String]]? = nil {
|
||||
didSet {
|
||||
_NetworkHelper.shared().protobufTransferMap = protobufTransferMap
|
||||
}
|
||||
}
|
||||
|
||||
private override init() {
|
||||
responseShake = UserDefaults.standard.bool(forKey: "responseShake_CocoaDebug")
|
||||
firstIn = UserDefaults.standard.string(forKey: "firstIn_CocoaDebug")
|
||||
serverURL = UserDefaults.standard.string(forKey: "serverURL_CocoaDebug")
|
||||
visible = UserDefaults.standard.bool(forKey: "visible_CocoaDebug")
|
||||
showBubbleAndWindow = UserDefaults.standard.bool(forKey: "showBubbleAndWindow_CocoaDebug")
|
||||
enableCrashRecording = UserDefaults.standard.bool(forKey: "enableCrashRecording_CocoaDebug")
|
||||
enableUIBlockingMonitoring = UserDefaults.standard.bool(forKey: "enableUIBlockingMonitoring_CocoaDebug")
|
||||
enableWKWebViewMonitoring = UserDefaults.standard.bool(forKey: "enableWKWebViewMonitoring_CocoaDebug")
|
||||
enableLogMonitoring = UserDefaults.standard.bool(forKey: "enableLogMonitoring_CocoaDebug")
|
||||
disableNetworkMonitoring = UserDefaults.standard.bool(forKey: "disableNetworkMonitoring_CocoaDebug")
|
||||
enableRNMonitoring = UserDefaults.standard.bool(forKey: "enableRNMonitoring_CocoaDebug")
|
||||
tabBarSelectItem = UserDefaults.standard.integer(forKey: "tabBarSelectItem_CocoaDebug")
|
||||
logSelectIndex = UserDefaults.standard.integer(forKey: "logSelectIndex_CocoaDebug")
|
||||
networkLastIndex = UserDefaults.standard.integer(forKey: "networkLastIndex_CocoaDebug")
|
||||
bubbleFrameX = UserDefaults.standard.float(forKey: "bubbleFrameX_CocoaDebug")
|
||||
bubbleFrameY = UserDefaults.standard.float(forKey: "bubbleFrameY_CocoaDebug")
|
||||
logSearchWordNormal = UserDefaults.standard.string(forKey: "logSearchWordNormal_CocoaDebug")
|
||||
logSearchWordRN = UserDefaults.standard.string(forKey: "logSearchWordRN_CocoaDebug")
|
||||
logSearchWordWeb = UserDefaults.standard.string(forKey: "logSearchWordWeb_CocoaDebug")
|
||||
networkSearchWord = UserDefaults.standard.string(forKey: "networkSearchWord_CocoaDebug")
|
||||
mainColor = UserDefaults.standard.string(forKey: "mainColor_CocoaDebug") ?? "#42d459"
|
||||
|
||||
|
||||
//objc
|
||||
|
||||
ignoredURLs = _NetworkHelper.shared().ignoredURLs
|
||||
onlyURLs = _NetworkHelper.shared().onlyURLs
|
||||
|
||||
ignoredPrefixLogs = _NetworkHelper.shared().ignoredPrefixLogs
|
||||
onlyPrefixLogs = _NetworkHelper.shared().onlyPrefixLogs
|
||||
|
||||
//protobuf
|
||||
protobufTransferMap = _NetworkHelper.shared().protobufTransferMap
|
||||
|
||||
//Memory
|
||||
enableMemoryLeaksMonitoring_ViewController = UserDefaults.standard.bool(forKey: "enableMemoryLeaksMonitoring_UIViewController_CocoaDebug")
|
||||
enableMemoryLeaksMonitoring_View = UserDefaults.standard.bool(forKey: "enableMemoryLeaksMonitoring_UIView_CocoaDebug")
|
||||
enableMemoryLeaksMonitoring_MemberVariables = UserDefaults.standard.bool(forKey: "enableMemoryLeaksMonitoring_MemberVariables_CocoaDebug")
|
||||
}
|
||||
}
|
||||
51
Pods/CocoaDebug/Sources/Core/_AutoLaunch.m
generated
Normal file
51
Pods/CocoaDebug/Sources/Core/_AutoLaunch.m
generated
Normal file
@@ -0,0 +1,51 @@
|
||||
//
|
||||
// Example
|
||||
// man
|
||||
//
|
||||
// Created by man 11/11/2018.
|
||||
// Copyright © 2020 man. All rights reserved.
|
||||
//
|
||||
|
||||
static const char *kPropertyKey = "kApplicationDidFinishLaunching_CocoaDebug_Key";
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <objc/runtime.h>
|
||||
#import "_NetworkHelper.h"
|
||||
|
||||
@interface NSObject (CocoaDebugAutoLaunch)
|
||||
|
||||
@property (nonatomic, assign) BOOL cocoadebug_applicationDidFinishLaunching;
|
||||
|
||||
@end
|
||||
|
||||
@implementation NSObject (CocoaDebugAutoLaunch)
|
||||
|
||||
#pragma mark - load
|
||||
+ (void)load {
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(cocoadebug_applicationDidFinishLaunchingNotification:) name:UIApplicationDidFinishLaunchingNotification object:nil];
|
||||
}
|
||||
|
||||
#pragma mark - notification
|
||||
- (void)cocoadebug_applicationDidFinishLaunchingNotification:(NSNotification *)notification {
|
||||
if (self.cocoadebug_applicationDidFinishLaunching) {return;}
|
||||
self.cocoadebug_applicationDidFinishLaunching = YES;
|
||||
|
||||
Class CocoaDebug = NSClassFromString(@"_TtC10CocoaDebug10CocoaDebug");
|
||||
if (CocoaDebug) {
|
||||
[[CocoaDebug class] performSelector:@selector(enable)];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - getter setter
|
||||
- (BOOL)cocoadebug_applicationDidFinishLaunching {
|
||||
NSNumber *number = objc_getAssociatedObject(self, kPropertyKey);
|
||||
return [number boolValue];
|
||||
}
|
||||
|
||||
- (void)setCocoadebug_applicationDidFinishLaunching:(BOOL)applicationDidFinishLaunching {
|
||||
NSNumber *number = [NSNumber numberWithBool:applicationDidFinishLaunching];
|
||||
objc_setAssociatedObject(self, kPropertyKey, number, OBJC_ASSOCIATION_RETAIN);
|
||||
}
|
||||
|
||||
@end
|
||||
325
Pods/CocoaDebug/Sources/Core/_DeviceUtil+Constant.h
generated
Normal file
325
Pods/CocoaDebug/Sources/Core/_DeviceUtil+Constant.h
generated
Normal file
@@ -0,0 +1,325 @@
|
||||
//
|
||||
// CocoaDebug
|
||||
// liman
|
||||
//
|
||||
// Created by liman 02/02/2023.
|
||||
// Copyright © 2023 liman. All rights reserved.
|
||||
//
|
||||
|
||||
typedef NS_ENUM(NSUInteger, Hardware) {
|
||||
|
||||
|
||||
IPHONE_2G,
|
||||
IPHONE_3G,
|
||||
IPHONE_3GS,
|
||||
IPHONE_4,
|
||||
IPHONE_4_CDMA,
|
||||
IPHONE_4S,
|
||||
IPHONE_5,
|
||||
IPHONE_5_CDMA_GSM,
|
||||
IPHONE_5C,
|
||||
IPHONE_5C_CDMA_GSM,
|
||||
IPHONE_5S,
|
||||
IPHONE_5S_CDMA_GSM,
|
||||
IPHONE_6_PLUS,
|
||||
IPHONE_6,
|
||||
IPHONE_6S,
|
||||
IPHONE_6S_PLUS,
|
||||
IPHONE_SE,
|
||||
IPHONE_7,
|
||||
IPHONE_7_PLUS,
|
||||
IPHONE_7_GSM,
|
||||
IPHONE_7_PLUS_GSM,
|
||||
IPHONE_8_CN,
|
||||
IPHONE_8_PLUS_CN,
|
||||
IPHONE_X_CN,
|
||||
IPHONE_8,
|
||||
IPHONE_8_PLUS,
|
||||
IPHONE_X,
|
||||
IPHONE_XS,
|
||||
IPHONE_XS_MAX,
|
||||
IPHONE_XS_MAX_CN,
|
||||
IPHONE_XR,
|
||||
IPHONE_11,
|
||||
IPHONE_11_PRO,
|
||||
IPHONE_11_PRO_MAX,
|
||||
IPHONE_SE_2G,
|
||||
IPHONE_12_MINI,
|
||||
IPHONE_12,
|
||||
IPHONE_12_PRO,
|
||||
IPHONE_12_PRO_MAX,
|
||||
IPHONE_13_PRO,
|
||||
IPHONE_13_PRO_MAX,
|
||||
IPHONE_13_MINI,
|
||||
IPHONE_13,
|
||||
IPHONE_SE_3G,
|
||||
IPHONE_14,
|
||||
IPHONE_14_PLUS,
|
||||
IPHONE_14_PRO,
|
||||
IPHONE_14_PRO_MAX,
|
||||
|
||||
IPOD_TOUCH_1G,
|
||||
IPOD_TOUCH_2G,
|
||||
IPOD_TOUCH_3G,
|
||||
IPOD_TOUCH_4G,
|
||||
IPOD_TOUCH_5G,
|
||||
IPOD_TOUCH_6G,
|
||||
IPOD_TOUCH_7G,
|
||||
|
||||
IPAD,
|
||||
IPAD_3G,
|
||||
IPAD_2_WIFI,
|
||||
IPAD_2,
|
||||
IPAD_2_CDMA,
|
||||
IPAD_MINI_WIFI,
|
||||
IPAD_MINI,
|
||||
IPAD_MINI_WIFI_CDMA,
|
||||
IPAD_3_WIFI,
|
||||
IPAD_3_WIFI_CDMA,
|
||||
IPAD_3,
|
||||
IPAD_4_WIFI,
|
||||
IPAD_4,
|
||||
IPAD_4_GSM_CDMA,
|
||||
IPAD_AIR_WIFI,
|
||||
IPAD_AIR_WIFI_GSM,
|
||||
IPAD_AIR_WIFI_CDMA,
|
||||
IPAD_MINI_RETINA_WIFI,
|
||||
IPAD_MINI_RETINA_WIFI_CDMA,
|
||||
IPAD_MINI_RETINA_WIFI_CELLULAR_CN,
|
||||
IPAD_MINI_3_WIFI,
|
||||
IPAD_MINI_3_WIFI_CELLULAR,
|
||||
IPAD_MINI_3_WIFI_CELLULAR_CN,
|
||||
IPAD_MINI_4_WIFI,
|
||||
IPAD_MINI_4_WIFI_CELLULAR,
|
||||
IPAD_AIR_2_WIFI,
|
||||
IPAD_AIR_2_WIFI_CELLULAR,
|
||||
IPAD_5_WIFI,
|
||||
IPAD_5_WIFI_CELLULAR,
|
||||
IPAD_PRO_97_WIFI,
|
||||
IPAD_PRO_97_WIFI_CELLULAR,
|
||||
IPAD_PRO_WIFI,
|
||||
IPAD_PRO_WIFI_CELLULAR,
|
||||
IPAD_PRO_2G_WIFI,
|
||||
IPAD_7_WIFI,
|
||||
IPAD_7_WIFI_CELLULAR,
|
||||
IPAD_PRO_2G_WIFI_CELLULAR,
|
||||
IPAD_PRO_105_WIFI,
|
||||
IPAD_PRO_105_WIFI_CELLULAR,
|
||||
IPAD_6_WIFI,
|
||||
IPAD_6_WIFI_CELLULAR,
|
||||
IPAD_PRO_11_2G_WIFI_CELLULAR,
|
||||
IPAD_PRO_11_WIFI,
|
||||
IPAD_PRO_4G_WIFI,
|
||||
IPAD_PRO_11_1TB_WIFI,
|
||||
IPAD_PRO_11_WIFI_CELLULAR,
|
||||
IPAD_PRO_11_1TB_WIFI_CELLULAR,
|
||||
IPAD_PRO_3G_WIFI,
|
||||
IPAD_PRO_3G_1TB_WIFI,
|
||||
IPAD_PRO_3G_WIFI_CELLULAR,
|
||||
IPAD_PRO_4G_WIFI_CELLULAR,
|
||||
IPAD_PRO_3G_1TB_WIFI_CELLULAR,
|
||||
IPAD_PRO_11_2G_WIFI,
|
||||
IPAD_MINI_5_WIFI,
|
||||
IPAD_MINI_5_WIFI_CELLULAR,
|
||||
IPAD_AIR_3_WIFI,
|
||||
IPAD_AIR_3_WIFI_CELLULAR,
|
||||
IPAD_9_WIFI,
|
||||
IPAD_9_WIFI_CELLULAR,
|
||||
IPAD_PRO_5_WIFI_CELLULAR,
|
||||
IPAD_AIR_4_WIFI,
|
||||
IPAD_AIR_5_WIFI,
|
||||
IPAD_AIR_5_WIFI_CELLULAR,
|
||||
IPAD_AIR_4_WIFI_CELLULAR,
|
||||
IPAD_PRO_11_3_WIFI,
|
||||
IPAD_PRO_11_3_WIFI_CELLULAR,
|
||||
IPAD_PRO_5_WIFI,
|
||||
IPAD_MINI_6_WIFI,
|
||||
IPAD_MINI_6_WIFI_CELLULAR,
|
||||
|
||||
APPLE_WATCH_38,
|
||||
APPLE_WATCH_42,
|
||||
APPLE_WATCH_SERIES_2_38,
|
||||
APPLE_WATCH_SERIES_2_42,
|
||||
APPLE_WATCH_SERIES_1_38,
|
||||
APPLE_WATCH_SERIES_1_42,
|
||||
APPLE_WATCH_SERIES_3_38_CELLULAR,
|
||||
APPLE_WATCH_SERIES_3_42_CELLULAR,
|
||||
APPLE_WATCH_SERIES_3_38,
|
||||
APPLE_WATCH_SERIES_3_42,
|
||||
APPLE_WATCH_SERIES_4_40,
|
||||
APPLE_WATCH_SERIES_4_44,
|
||||
APPLE_WATCH_SERIES_4_40_CELLULAR,
|
||||
APPLE_WATCH_SERIES_4_44_CELLULAR,
|
||||
APPLE_WATCH_SERIES_5_40,
|
||||
APPLE_WATCH_SERIES_5_44,
|
||||
APPLE_WATCH_SERIES_5_40_CELLULAR,
|
||||
APPLE_WATCH_SERIES_5_44_CELLULAR,
|
||||
|
||||
APPLE_TV_1G,
|
||||
APPLE_TV_2G,
|
||||
APPLE_TV_3G,
|
||||
APPLE_TV_3_2G,
|
||||
APPLE_TV_4G,
|
||||
APPLE_TV_4K,
|
||||
|
||||
SIMULATOR,
|
||||
UNKNOWN
|
||||
};
|
||||
|
||||
extern NSString* const AppleTV1_1;
|
||||
extern NSString* const AppleTV2_1;
|
||||
extern NSString* const AppleTV3_1;
|
||||
extern NSString* const AppleTV3_2;
|
||||
extern NSString* const AppleTV5_3;
|
||||
extern NSString* const AppleTV6_2;
|
||||
extern NSString* const Watch1_1;
|
||||
extern NSString* const Watch1_2;
|
||||
extern NSString* const Watch2_3;
|
||||
extern NSString* const Watch2_4;
|
||||
extern NSString* const Watch2_6;
|
||||
extern NSString* const Watch2_7;
|
||||
extern NSString* const Watch3_1;
|
||||
extern NSString* const Watch3_2;
|
||||
extern NSString* const Watch3_3;
|
||||
extern NSString* const Watch3_4;
|
||||
extern NSString* const Watch4_1;
|
||||
extern NSString* const Watch4_2;
|
||||
extern NSString* const Watch4_3;
|
||||
extern NSString* const Watch4_4;
|
||||
extern NSString* const Watch5_1;
|
||||
extern NSString* const Watch5_2;
|
||||
extern NSString* const Watch5_3;
|
||||
extern NSString* const Watch5_4;
|
||||
extern NSString* const i386_Simulator;
|
||||
extern NSString* const iPad1_1;
|
||||
extern NSString* const iPad1_2;
|
||||
extern NSString* const iPad11_1;
|
||||
extern NSString* const iPad11_2;
|
||||
extern NSString* const iPad11_3;
|
||||
extern NSString* const iPad11_4;
|
||||
extern NSString* const iPad12_1;
|
||||
extern NSString* const iPad12_2;
|
||||
extern NSString* const iPad13_1;
|
||||
extern NSString* const iPad13_10;
|
||||
extern NSString* const iPad13_11;
|
||||
extern NSString* const iPad13_16;
|
||||
extern NSString* const iPad13_17;
|
||||
extern NSString* const iPad13_2;
|
||||
extern NSString* const iPad13_4;
|
||||
extern NSString* const iPad13_5;
|
||||
extern NSString* const iPad13_6;
|
||||
extern NSString* const iPad13_7;
|
||||
extern NSString* const iPad13_8;
|
||||
extern NSString* const iPad13_9;
|
||||
extern NSString* const iPad14_1;
|
||||
extern NSString* const iPad14_2;
|
||||
extern NSString* const iPad2_1;
|
||||
extern NSString* const iPad2_2;
|
||||
extern NSString* const iPad2_3;
|
||||
extern NSString* const iPad2_4;
|
||||
extern NSString* const iPad2_5;
|
||||
extern NSString* const iPad2_6;
|
||||
extern NSString* const iPad2_7;
|
||||
extern NSString* const iPad3_1;
|
||||
extern NSString* const iPad3_2;
|
||||
extern NSString* const iPad3_3;
|
||||
extern NSString* const iPad3_4;
|
||||
extern NSString* const iPad3_5;
|
||||
extern NSString* const iPad3_6;
|
||||
extern NSString* const iPad4_1;
|
||||
extern NSString* const iPad4_2;
|
||||
extern NSString* const iPad4_3;
|
||||
extern NSString* const iPad4_4;
|
||||
extern NSString* const iPad4_5;
|
||||
extern NSString* const iPad4_6;
|
||||
extern NSString* const iPad4_7;
|
||||
extern NSString* const iPad4_8;
|
||||
extern NSString* const iPad4_9;
|
||||
extern NSString* const iPad5_1;
|
||||
extern NSString* const iPad5_2;
|
||||
extern NSString* const iPad5_3;
|
||||
extern NSString* const iPad5_4;
|
||||
extern NSString* const iPad6_11;
|
||||
extern NSString* const iPad6_12;
|
||||
extern NSString* const iPad6_3;
|
||||
extern NSString* const iPad6_4;
|
||||
extern NSString* const iPad6_7;
|
||||
extern NSString* const iPad6_8;
|
||||
extern NSString* const iPad7_1;
|
||||
extern NSString* const iPad7_11;
|
||||
extern NSString* const iPad7_12;
|
||||
extern NSString* const iPad7_2;
|
||||
extern NSString* const iPad7_3;
|
||||
extern NSString* const iPad7_4;
|
||||
extern NSString* const iPad7_5;
|
||||
extern NSString* const iPad7_6;
|
||||
extern NSString* const iPad8_1;
|
||||
extern NSString* const iPad8_10;
|
||||
extern NSString* const iPad8_11;
|
||||
extern NSString* const iPad8_12;
|
||||
extern NSString* const iPad8_2;
|
||||
extern NSString* const iPad8_3;
|
||||
extern NSString* const iPad8_4;
|
||||
extern NSString* const iPad8_5;
|
||||
extern NSString* const iPad8_6;
|
||||
extern NSString* const iPad8_7;
|
||||
extern NSString* const iPad8_8;
|
||||
extern NSString* const iPad8_9;
|
||||
extern NSString* const iPhone1_1;
|
||||
extern NSString* const iPhone1_2;
|
||||
extern NSString* const iPhone10_1;
|
||||
extern NSString* const iPhone10_2;
|
||||
extern NSString* const iPhone10_3;
|
||||
extern NSString* const iPhone10_4;
|
||||
extern NSString* const iPhone10_5;
|
||||
extern NSString* const iPhone10_6;
|
||||
extern NSString* const iPhone11_2;
|
||||
extern NSString* const iPhone11_4;
|
||||
extern NSString* const iPhone11_6;
|
||||
extern NSString* const iPhone11_8;
|
||||
extern NSString* const iPhone12_1;
|
||||
extern NSString* const iPhone12_3;
|
||||
extern NSString* const iPhone12_5;
|
||||
extern NSString* const iPhone12_8;
|
||||
extern NSString* const iPhone13_1;
|
||||
extern NSString* const iPhone13_2;
|
||||
extern NSString* const iPhone13_3;
|
||||
extern NSString* const iPhone13_4;
|
||||
extern NSString* const iPhone14_2;
|
||||
extern NSString* const iPhone14_3;
|
||||
extern NSString* const iPhone14_4;
|
||||
extern NSString* const iPhone14_5;
|
||||
extern NSString* const iPhone14_6;
|
||||
extern NSString* const iPhone14_7;
|
||||
extern NSString* const iPhone14_8;
|
||||
extern NSString* const iPhone15_2;
|
||||
extern NSString* const iPhone15_3;
|
||||
extern NSString* const iPhone2_1;
|
||||
extern NSString* const iPhone3_1;
|
||||
extern NSString* const iPhone3_2;
|
||||
extern NSString* const iPhone3_3;
|
||||
extern NSString* const iPhone4_1;
|
||||
extern NSString* const iPhone5_1;
|
||||
extern NSString* const iPhone5_2;
|
||||
extern NSString* const iPhone5_3;
|
||||
extern NSString* const iPhone5_4;
|
||||
extern NSString* const iPhone6_1;
|
||||
extern NSString* const iPhone6_2;
|
||||
extern NSString* const iPhone7_1;
|
||||
extern NSString* const iPhone7_2;
|
||||
extern NSString* const iPhone8_1;
|
||||
extern NSString* const iPhone8_2;
|
||||
extern NSString* const iPhone8_4;
|
||||
extern NSString* const iPhone9_1;
|
||||
extern NSString* const iPhone9_2;
|
||||
extern NSString* const iPhone9_3;
|
||||
extern NSString* const iPhone9_4;
|
||||
extern NSString* const iPod1_1;
|
||||
extern NSString* const iPod2_1;
|
||||
extern NSString* const iPod3_1;
|
||||
extern NSString* const iPod4_1;
|
||||
extern NSString* const iPod5_1;
|
||||
extern NSString* const iPod7_1;
|
||||
extern NSString* const iPod9_1;
|
||||
extern NSString* const x86_64_Simulator;
|
||||
|
||||
334
Pods/CocoaDebug/Sources/Core/_DeviceUtil+Constant.m
generated
Normal file
334
Pods/CocoaDebug/Sources/Core/_DeviceUtil+Constant.m
generated
Normal file
@@ -0,0 +1,334 @@
|
||||
//
|
||||
// CocoaDebug
|
||||
// liman
|
||||
//
|
||||
// Created by liman 02/02/2023.
|
||||
// Copyright © 2023 liman. All rights reserved.
|
||||
//
|
||||
|
||||
#import "_DeviceUtil.h"
|
||||
|
||||
NSString* const AppleTV1_1 = @"AppleTV1,1";
|
||||
NSString* const AppleTV2_1 = @"AppleTV2,1";
|
||||
NSString* const AppleTV3_1 = @"AppleTV3,1";
|
||||
NSString* const AppleTV3_2 = @"AppleTV3,2";
|
||||
NSString* const AppleTV5_3 = @"AppleTV5,3";
|
||||
NSString* const AppleTV6_2 = @"AppleTV6,2";
|
||||
NSString* const Watch1_1 = @"Watch1,1";
|
||||
NSString* const Watch1_2 = @"Watch1,2";
|
||||
NSString* const Watch2_3 = @"Watch2,3";
|
||||
NSString* const Watch2_4 = @"Watch2,4";
|
||||
NSString* const Watch2_6 = @"Watch2,6";
|
||||
NSString* const Watch2_7 = @"Watch2,7";
|
||||
NSString* const Watch3_1 = @"Watch3,1";
|
||||
NSString* const Watch3_2 = @"Watch3,2";
|
||||
NSString* const Watch3_3 = @"Watch3,3";
|
||||
NSString* const Watch3_4 = @"Watch3,4";
|
||||
NSString* const Watch4_1 = @"Watch4,1";
|
||||
NSString* const Watch4_2 = @"Watch4,2";
|
||||
NSString* const Watch4_3 = @"Watch4,3";
|
||||
NSString* const Watch4_4 = @"Watch4,4";
|
||||
NSString* const Watch5_1 = @"Watch5,1";
|
||||
NSString* const Watch5_2 = @"Watch5,2";
|
||||
NSString* const Watch5_3 = @"Watch5,3";
|
||||
NSString* const Watch5_4 = @"Watch5,4";
|
||||
NSString* const i386_Simulator = @"i386";
|
||||
NSString* const iPad1_1 = @"iPad1,1";
|
||||
NSString* const iPad1_2 = @"iPad1,2";
|
||||
NSString* const iPad11_1 = @"iPad11,1";
|
||||
NSString* const iPad11_2 = @"iPad11,2";
|
||||
NSString* const iPad11_3 = @"iPad11,3";
|
||||
NSString* const iPad11_4 = @"iPad11,4";
|
||||
NSString* const iPad12_1 = @"iPad12,1";
|
||||
NSString* const iPad12_2 = @"iPad12,2";
|
||||
NSString* const iPad13_1 = @"iPad13,1";
|
||||
NSString* const iPad13_10 = @"iPad13,10";
|
||||
NSString* const iPad13_11 = @"iPad13,11";
|
||||
NSString* const iPad13_16 = @"iPad13,16";
|
||||
NSString* const iPad13_17 = @"iPad13,17";
|
||||
NSString* const iPad13_2 = @"iPad13,2";
|
||||
NSString* const iPad13_4 = @"iPad13,4";
|
||||
NSString* const iPad13_5 = @"iPad13,5";
|
||||
NSString* const iPad13_6 = @"iPad13,6";
|
||||
NSString* const iPad13_7 = @"iPad13,7";
|
||||
NSString* const iPad13_8 = @"iPad13,8";
|
||||
NSString* const iPad13_9 = @"iPad13,9";
|
||||
NSString* const iPad14_1 = @"iPad14,1";
|
||||
NSString* const iPad14_2 = @"iPad14,2";
|
||||
NSString* const iPad2_1 = @"iPad2,1";
|
||||
NSString* const iPad2_2 = @"iPad2,2";
|
||||
NSString* const iPad2_3 = @"iPad2,3";
|
||||
NSString* const iPad2_4 = @"iPad2,4";
|
||||
NSString* const iPad2_5 = @"iPad2,5";
|
||||
NSString* const iPad2_6 = @"iPad2,6";
|
||||
NSString* const iPad2_7 = @"iPad2,7";
|
||||
NSString* const iPad3_1 = @"iPad3,1";
|
||||
NSString* const iPad3_2 = @"iPad3,2";
|
||||
NSString* const iPad3_3 = @"iPad3,3";
|
||||
NSString* const iPad3_4 = @"iPad3,4";
|
||||
NSString* const iPad3_5 = @"iPad3,5";
|
||||
NSString* const iPad3_6 = @"iPad3,6";
|
||||
NSString* const iPad4_1 = @"iPad4,1";
|
||||
NSString* const iPad4_2 = @"iPad4,2";
|
||||
NSString* const iPad4_3 = @"iPad4,3";
|
||||
NSString* const iPad4_4 = @"iPad4,4";
|
||||
NSString* const iPad4_5 = @"iPad4,5";
|
||||
NSString* const iPad4_6 = @"iPad4,6";
|
||||
NSString* const iPad4_7 = @"iPad4,7";
|
||||
NSString* const iPad4_8 = @"iPad4,8";
|
||||
NSString* const iPad4_9 = @"iPad4,9";
|
||||
NSString* const iPad5_1 = @"iPad5,1";
|
||||
NSString* const iPad5_2 = @"iPad5,2";
|
||||
NSString* const iPad5_3 = @"iPad5,3";
|
||||
NSString* const iPad5_4 = @"iPad5,4";
|
||||
NSString* const iPad6_11 = @"iPad6,11";
|
||||
NSString* const iPad6_12 = @"iPad6,12";
|
||||
NSString* const iPad6_3 = @"iPad6,3";
|
||||
NSString* const iPad6_4 = @"iPad6,4";
|
||||
NSString* const iPad6_7 = @"iPad6,7";
|
||||
NSString* const iPad6_8 = @"iPad6,8";
|
||||
NSString* const iPad7_1 = @"iPad7,1";
|
||||
NSString* const iPad7_11 = @"iPad7,11";
|
||||
NSString* const iPad7_12 = @"iPad7,12";
|
||||
NSString* const iPad7_2 = @"iPad7,2";
|
||||
NSString* const iPad7_3 = @"iPad7,3";
|
||||
NSString* const iPad7_4 = @"iPad7,4";
|
||||
NSString* const iPad7_5 = @"iPad7,5";
|
||||
NSString* const iPad7_6 = @"iPad7,6";
|
||||
NSString* const iPad8_1 = @"iPad8,1";
|
||||
NSString* const iPad8_10 = @"iPad8,10";
|
||||
NSString* const iPad8_11 = @"iPad8,11";
|
||||
NSString* const iPad8_12 = @"iPad8,12";
|
||||
NSString* const iPad8_2 = @"iPad8,2";
|
||||
NSString* const iPad8_3 = @"iPad8,3";
|
||||
NSString* const iPad8_4 = @"iPad8,4";
|
||||
NSString* const iPad8_5 = @"iPad8,5";
|
||||
NSString* const iPad8_6 = @"iPad8,6";
|
||||
NSString* const iPad8_7 = @"iPad8,7";
|
||||
NSString* const iPad8_8 = @"iPad8,8";
|
||||
NSString* const iPad8_9 = @"iPad8,9";
|
||||
NSString* const iPhone1_1 = @"iPhone1,1";
|
||||
NSString* const iPhone1_2 = @"iPhone1,2";
|
||||
NSString* const iPhone10_1 = @"iPhone10,1";
|
||||
NSString* const iPhone10_2 = @"iPhone10,2";
|
||||
NSString* const iPhone10_3 = @"iPhone10,3";
|
||||
NSString* const iPhone10_4 = @"iPhone10,4";
|
||||
NSString* const iPhone10_5 = @"iPhone10,5";
|
||||
NSString* const iPhone10_6 = @"iPhone10,6";
|
||||
NSString* const iPhone11_2 = @"iPhone11,2";
|
||||
NSString* const iPhone11_4 = @"iPhone11,4";
|
||||
NSString* const iPhone11_6 = @"iPhone11,6";
|
||||
NSString* const iPhone11_8 = @"iPhone11,8";
|
||||
NSString* const iPhone12_1 = @"iPhone12,1";
|
||||
NSString* const iPhone12_3 = @"iPhone12,3";
|
||||
NSString* const iPhone12_5 = @"iPhone12,5";
|
||||
NSString* const iPhone12_8 = @"iPhone12,8";
|
||||
NSString* const iPhone13_1 = @"iPhone13,1";
|
||||
NSString* const iPhone13_2 = @"iPhone13,2";
|
||||
NSString* const iPhone13_3 = @"iPhone13,3";
|
||||
NSString* const iPhone13_4 = @"iPhone13,4";
|
||||
NSString* const iPhone14_2 = @"iPhone14,2";
|
||||
NSString* const iPhone14_3 = @"iPhone14,3";
|
||||
NSString* const iPhone14_4 = @"iPhone14,4";
|
||||
NSString* const iPhone14_5 = @"iPhone14,5";
|
||||
NSString* const iPhone14_6 = @"iPhone14,6";
|
||||
NSString* const iPhone14_7 = @"iPhone14,7";
|
||||
NSString* const iPhone14_8 = @"iPhone14,8";
|
||||
NSString* const iPhone15_2 = @"iPhone15,2";
|
||||
NSString* const iPhone15_3 = @"iPhone15,3";
|
||||
NSString* const iPhone2_1 = @"iPhone2,1";
|
||||
NSString* const iPhone3_1 = @"iPhone3,1";
|
||||
NSString* const iPhone3_2 = @"iPhone3,2";
|
||||
NSString* const iPhone3_3 = @"iPhone3,3";
|
||||
NSString* const iPhone4_1 = @"iPhone4,1";
|
||||
NSString* const iPhone5_1 = @"iPhone5,1";
|
||||
NSString* const iPhone5_2 = @"iPhone5,2";
|
||||
NSString* const iPhone5_3 = @"iPhone5,3";
|
||||
NSString* const iPhone5_4 = @"iPhone5,4";
|
||||
NSString* const iPhone6_1 = @"iPhone6,1";
|
||||
NSString* const iPhone6_2 = @"iPhone6,2";
|
||||
NSString* const iPhone7_1 = @"iPhone7,1";
|
||||
NSString* const iPhone7_2 = @"iPhone7,2";
|
||||
NSString* const iPhone8_1 = @"iPhone8,1";
|
||||
NSString* const iPhone8_2 = @"iPhone8,2";
|
||||
NSString* const iPhone8_4 = @"iPhone8,4";
|
||||
NSString* const iPhone9_1 = @"iPhone9,1";
|
||||
NSString* const iPhone9_2 = @"iPhone9,2";
|
||||
NSString* const iPhone9_3 = @"iPhone9,3";
|
||||
NSString* const iPhone9_4 = @"iPhone9,4";
|
||||
NSString* const iPod1_1 = @"iPod1,1";
|
||||
NSString* const iPod2_1 = @"iPod2,1";
|
||||
NSString* const iPod3_1 = @"iPod3,1";
|
||||
NSString* const iPod4_1 = @"iPod4,1";
|
||||
NSString* const iPod5_1 = @"iPod5,1";
|
||||
NSString* const iPod7_1 = @"iPod7,1";
|
||||
NSString* const iPod9_1 = @"iPod9,1";
|
||||
NSString* const x86_64_Simulator = @"x86_64";
|
||||
|
||||
|
||||
@implementation _DeviceUtil (Constant)
|
||||
|
||||
- (Hardware)hardware {
|
||||
NSString *hardware = [self hardwareString];
|
||||
if ([hardware isEqualToString:AppleTV1_1]) return APPLE_TV_1G;
|
||||
if ([hardware isEqualToString:AppleTV2_1]) return APPLE_TV_2G;
|
||||
if ([hardware isEqualToString:AppleTV3_1]) return APPLE_TV_3G;
|
||||
if ([hardware isEqualToString:AppleTV3_2]) return APPLE_TV_3_2G;
|
||||
if ([hardware isEqualToString:AppleTV5_3]) return APPLE_TV_4G;
|
||||
if ([hardware isEqualToString:AppleTV6_2]) return APPLE_TV_4K;
|
||||
if ([hardware isEqualToString:Watch1_1]) return APPLE_WATCH_38;
|
||||
if ([hardware isEqualToString:Watch1_2]) return APPLE_WATCH_42;
|
||||
if ([hardware isEqualToString:Watch2_3]) return APPLE_WATCH_SERIES_2_38;
|
||||
if ([hardware isEqualToString:Watch2_4]) return APPLE_WATCH_SERIES_2_42;
|
||||
if ([hardware isEqualToString:Watch2_6]) return APPLE_WATCH_SERIES_1_38;
|
||||
if ([hardware isEqualToString:Watch2_7]) return APPLE_WATCH_SERIES_1_42;
|
||||
if ([hardware isEqualToString:Watch3_1]) return APPLE_WATCH_SERIES_3_38_CELLULAR;
|
||||
if ([hardware isEqualToString:Watch3_2]) return APPLE_WATCH_SERIES_3_42_CELLULAR;
|
||||
if ([hardware isEqualToString:Watch3_3]) return APPLE_WATCH_SERIES_3_38;
|
||||
if ([hardware isEqualToString:Watch3_4]) return APPLE_WATCH_SERIES_3_42;
|
||||
if ([hardware isEqualToString:Watch4_1]) return APPLE_WATCH_SERIES_4_40;
|
||||
if ([hardware isEqualToString:Watch4_2]) return APPLE_WATCH_SERIES_4_44;
|
||||
if ([hardware isEqualToString:Watch4_3]) return APPLE_WATCH_SERIES_4_40_CELLULAR;
|
||||
if ([hardware isEqualToString:Watch4_4]) return APPLE_WATCH_SERIES_4_44_CELLULAR;
|
||||
if ([hardware isEqualToString:Watch5_1]) return APPLE_WATCH_SERIES_5_40;
|
||||
if ([hardware isEqualToString:Watch5_2]) return APPLE_WATCH_SERIES_5_44;
|
||||
if ([hardware isEqualToString:Watch5_3]) return APPLE_WATCH_SERIES_5_40_CELLULAR;
|
||||
if ([hardware isEqualToString:Watch5_4]) return APPLE_WATCH_SERIES_5_44_CELLULAR;
|
||||
if ([hardware isEqualToString:i386_Simulator]) return SIMULATOR;
|
||||
if ([hardware isEqualToString:iPad1_1]) return IPAD;
|
||||
if ([hardware isEqualToString:iPad1_2]) return IPAD_3G;
|
||||
if ([hardware isEqualToString:iPad11_1]) return IPAD_MINI_5_WIFI;
|
||||
if ([hardware isEqualToString:iPad11_2]) return IPAD_MINI_5_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad11_3]) return IPAD_AIR_3_WIFI;
|
||||
if ([hardware isEqualToString:iPad11_4]) return IPAD_AIR_3_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad12_1]) return IPAD_9_WIFI;
|
||||
if ([hardware isEqualToString:iPad12_2]) return IPAD_9_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad13_1]) return IPAD_AIR_4_WIFI;
|
||||
if ([hardware isEqualToString:iPad13_10]) return IPAD_PRO_5_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad13_11]) return IPAD_PRO_5_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad13_16]) return IPAD_AIR_5_WIFI;
|
||||
if ([hardware isEqualToString:iPad13_17]) return IPAD_AIR_5_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad13_2]) return IPAD_AIR_4_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad13_4]) return IPAD_PRO_11_3_WIFI;
|
||||
if ([hardware isEqualToString:iPad13_5]) return IPAD_AIR_4_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad13_6]) return IPAD_PRO_11_3_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad13_7]) return IPAD_PRO_11_3_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad13_8]) return IPAD_PRO_5_WIFI;
|
||||
if ([hardware isEqualToString:iPad13_9]) return IPAD_PRO_5_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad14_1]) return IPAD_MINI_6_WIFI;
|
||||
if ([hardware isEqualToString:iPad14_2]) return IPAD_MINI_6_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad2_1]) return IPAD_2_WIFI;
|
||||
if ([hardware isEqualToString:iPad2_2]) return IPAD_2;
|
||||
if ([hardware isEqualToString:iPad2_3]) return IPAD_2_CDMA;
|
||||
if ([hardware isEqualToString:iPad2_4]) return IPAD_2;
|
||||
if ([hardware isEqualToString:iPad2_5]) return IPAD_MINI_WIFI;
|
||||
if ([hardware isEqualToString:iPad2_6]) return IPAD_MINI;
|
||||
if ([hardware isEqualToString:iPad2_7]) return IPAD_MINI_WIFI_CDMA;
|
||||
if ([hardware isEqualToString:iPad3_1]) return IPAD_3_WIFI;
|
||||
if ([hardware isEqualToString:iPad3_2]) return IPAD_3_WIFI_CDMA;
|
||||
if ([hardware isEqualToString:iPad3_3]) return IPAD_3;
|
||||
if ([hardware isEqualToString:iPad3_4]) return IPAD_4_WIFI;
|
||||
if ([hardware isEqualToString:iPad3_5]) return IPAD_4;
|
||||
if ([hardware isEqualToString:iPad3_6]) return IPAD_4_GSM_CDMA;
|
||||
if ([hardware isEqualToString:iPad4_1]) return IPAD_AIR_WIFI;
|
||||
if ([hardware isEqualToString:iPad4_2]) return IPAD_AIR_WIFI_GSM;
|
||||
if ([hardware isEqualToString:iPad4_3]) return IPAD_AIR_WIFI_CDMA;
|
||||
if ([hardware isEqualToString:iPad4_4]) return IPAD_MINI_RETINA_WIFI;
|
||||
if ([hardware isEqualToString:iPad4_5]) return IPAD_MINI_RETINA_WIFI_CDMA;
|
||||
if ([hardware isEqualToString:iPad4_6]) return IPAD_MINI_RETINA_WIFI_CELLULAR_CN;
|
||||
if ([hardware isEqualToString:iPad4_7]) return IPAD_MINI_3_WIFI;
|
||||
if ([hardware isEqualToString:iPad4_8]) return IPAD_MINI_3_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad4_9]) return IPAD_MINI_3_WIFI_CELLULAR_CN;
|
||||
if ([hardware isEqualToString:iPad5_1]) return IPAD_MINI_4_WIFI;
|
||||
if ([hardware isEqualToString:iPad5_2]) return IPAD_MINI_4_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad5_3]) return IPAD_AIR_2_WIFI;
|
||||
if ([hardware isEqualToString:iPad5_4]) return IPAD_AIR_2_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad6_11]) return IPAD_5_WIFI;
|
||||
if ([hardware isEqualToString:iPad6_12]) return IPAD_5_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad6_3]) return IPAD_PRO_97_WIFI;
|
||||
if ([hardware isEqualToString:iPad6_4]) return IPAD_PRO_97_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad6_7]) return IPAD_PRO_WIFI;
|
||||
if ([hardware isEqualToString:iPad6_8]) return IPAD_PRO_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad7_1]) return IPAD_PRO_2G_WIFI;
|
||||
if ([hardware isEqualToString:iPad7_11]) return IPAD_7_WIFI;
|
||||
if ([hardware isEqualToString:iPad7_12]) return IPAD_7_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad7_2]) return IPAD_PRO_2G_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad7_3]) return IPAD_PRO_105_WIFI;
|
||||
if ([hardware isEqualToString:iPad7_4]) return IPAD_PRO_105_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad7_5]) return IPAD_6_WIFI;
|
||||
if ([hardware isEqualToString:iPad7_6]) return IPAD_6_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad8_1]) return IPAD_PRO_11_WIFI;
|
||||
if ([hardware isEqualToString:iPad8_10]) return IPAD_PRO_11_2G_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad8_11]) return IPAD_PRO_4G_WIFI;
|
||||
if ([hardware isEqualToString:iPad8_12]) return IPAD_PRO_4G_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad8_2]) return IPAD_PRO_11_1TB_WIFI;
|
||||
if ([hardware isEqualToString:iPad8_3]) return IPAD_PRO_11_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad8_4]) return IPAD_PRO_11_1TB_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad8_5]) return IPAD_PRO_3G_WIFI;
|
||||
if ([hardware isEqualToString:iPad8_6]) return IPAD_PRO_3G_1TB_WIFI;
|
||||
if ([hardware isEqualToString:iPad8_7]) return IPAD_PRO_3G_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad8_8]) return IPAD_PRO_3G_1TB_WIFI_CELLULAR;
|
||||
if ([hardware isEqualToString:iPad8_9]) return IPAD_PRO_11_2G_WIFI;
|
||||
if ([hardware isEqualToString:iPhone1_1]) return IPHONE_2G;
|
||||
if ([hardware isEqualToString:iPhone1_2]) return IPHONE_3G;
|
||||
if ([hardware isEqualToString:iPhone10_1]) return IPHONE_8_CN;
|
||||
if ([hardware isEqualToString:iPhone10_2]) return IPHONE_8_PLUS_CN;
|
||||
if ([hardware isEqualToString:iPhone10_3]) return IPHONE_X_CN;
|
||||
if ([hardware isEqualToString:iPhone10_4]) return IPHONE_8;
|
||||
if ([hardware isEqualToString:iPhone10_5]) return IPHONE_8_PLUS;
|
||||
if ([hardware isEqualToString:iPhone10_6]) return IPHONE_X;
|
||||
if ([hardware isEqualToString:iPhone11_2]) return IPHONE_XS;
|
||||
if ([hardware isEqualToString:iPhone11_4]) return IPHONE_XS_MAX;
|
||||
if ([hardware isEqualToString:iPhone11_6]) return IPHONE_XS_MAX_CN;
|
||||
if ([hardware isEqualToString:iPhone11_8]) return IPHONE_XR;
|
||||
if ([hardware isEqualToString:iPhone12_1]) return IPHONE_11;
|
||||
if ([hardware isEqualToString:iPhone12_3]) return IPHONE_11_PRO;
|
||||
if ([hardware isEqualToString:iPhone12_5]) return IPHONE_11_PRO_MAX;
|
||||
if ([hardware isEqualToString:iPhone12_8]) return IPHONE_SE_2G;
|
||||
if ([hardware isEqualToString:iPhone13_1]) return IPHONE_12_MINI;
|
||||
if ([hardware isEqualToString:iPhone13_2]) return IPHONE_12;
|
||||
if ([hardware isEqualToString:iPhone13_3]) return IPHONE_12_PRO;
|
||||
if ([hardware isEqualToString:iPhone13_4]) return IPHONE_12_PRO_MAX;
|
||||
if ([hardware isEqualToString:iPhone14_2]) return IPHONE_13_PRO;
|
||||
if ([hardware isEqualToString:iPhone14_3]) return IPHONE_13_PRO_MAX;
|
||||
if ([hardware isEqualToString:iPhone14_4]) return IPHONE_13_MINI;
|
||||
if ([hardware isEqualToString:iPhone14_5]) return IPHONE_13;
|
||||
if ([hardware isEqualToString:iPhone14_6]) return IPHONE_SE_3G;
|
||||
if ([hardware isEqualToString:iPhone14_7]) return IPHONE_14;
|
||||
if ([hardware isEqualToString:iPhone14_8]) return IPHONE_14_PLUS;
|
||||
if ([hardware isEqualToString:iPhone15_2]) return IPHONE_14_PRO;
|
||||
if ([hardware isEqualToString:iPhone15_3]) return IPHONE_14_PRO_MAX;
|
||||
if ([hardware isEqualToString:iPhone2_1]) return IPHONE_3GS;
|
||||
if ([hardware isEqualToString:iPhone3_1]) return IPHONE_4;
|
||||
if ([hardware isEqualToString:iPhone3_2]) return IPHONE_4;
|
||||
if ([hardware isEqualToString:iPhone3_3]) return IPHONE_4_CDMA;
|
||||
if ([hardware isEqualToString:iPhone4_1]) return IPHONE_4S;
|
||||
if ([hardware isEqualToString:iPhone5_1]) return IPHONE_5;
|
||||
if ([hardware isEqualToString:iPhone5_2]) return IPHONE_5_CDMA_GSM;
|
||||
if ([hardware isEqualToString:iPhone5_3]) return IPHONE_5C;
|
||||
if ([hardware isEqualToString:iPhone5_4]) return IPHONE_5C_CDMA_GSM;
|
||||
if ([hardware isEqualToString:iPhone6_1]) return IPHONE_5S;
|
||||
if ([hardware isEqualToString:iPhone6_2]) return IPHONE_5S_CDMA_GSM;
|
||||
if ([hardware isEqualToString:iPhone7_1]) return IPHONE_6_PLUS;
|
||||
if ([hardware isEqualToString:iPhone7_2]) return IPHONE_6;
|
||||
if ([hardware isEqualToString:iPhone8_1]) return IPHONE_6S;
|
||||
if ([hardware isEqualToString:iPhone8_2]) return IPHONE_6S_PLUS;
|
||||
if ([hardware isEqualToString:iPhone8_4]) return IPHONE_SE;
|
||||
if ([hardware isEqualToString:iPhone9_1]) return IPHONE_7;
|
||||
if ([hardware isEqualToString:iPhone9_2]) return IPHONE_7_PLUS;
|
||||
if ([hardware isEqualToString:iPhone9_3]) return IPHONE_7_GSM;
|
||||
if ([hardware isEqualToString:iPhone9_4]) return IPHONE_7_PLUS_GSM;
|
||||
if ([hardware isEqualToString:iPod1_1]) return IPOD_TOUCH_1G;
|
||||
if ([hardware isEqualToString:iPod2_1]) return IPOD_TOUCH_2G;
|
||||
if ([hardware isEqualToString:iPod3_1]) return IPOD_TOUCH_3G;
|
||||
if ([hardware isEqualToString:iPod4_1]) return IPOD_TOUCH_4G;
|
||||
if ([hardware isEqualToString:iPod5_1]) return IPOD_TOUCH_5G;
|
||||
if ([hardware isEqualToString:iPod7_1]) return IPOD_TOUCH_6G;
|
||||
if ([hardware isEqualToString:iPod9_1]) return IPOD_TOUCH_7G;
|
||||
if ([hardware isEqualToString:x86_64_Simulator]) return SIMULATOR;
|
||||
|
||||
NSLog(@"This is a device which is not listed in this category. Please visit https://github.com/InderKumarRathore/DeviceUtil and add a comment there.");
|
||||
NSLog(@"Your device hardware string is: %@", hardware);
|
||||
return UNKNOWN;
|
||||
}
|
||||
@end
|
||||
55
Pods/CocoaDebug/Sources/Core/_DeviceUtil.h
generated
Normal file
55
Pods/CocoaDebug/Sources/Core/_DeviceUtil.h
generated
Normal file
@@ -0,0 +1,55 @@
|
||||
//
|
||||
// CocoaDebug
|
||||
// liman
|
||||
//
|
||||
// Created by liman 02/02/2023.
|
||||
// Copyright © 2023 liman. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "_DeviceUtil+Constant.h"
|
||||
|
||||
/// Enum of the different Apple's device platforms
|
||||
typedef NS_ENUM(NSUInteger, Platform) {
|
||||
iPhone,
|
||||
iPodTouch,
|
||||
iPad,
|
||||
AppleTV,
|
||||
AppleWatch,
|
||||
Unknown
|
||||
};
|
||||
|
||||
|
||||
@interface _DeviceUtil : NSObject
|
||||
|
||||
/// This method returns the hardware type
|
||||
- (NSString*)hardwareString;
|
||||
|
||||
/// This method returns the Platform enum depending upon hardware string
|
||||
- (Platform)platform;
|
||||
|
||||
|
||||
|
||||
/// This method returns the readable description of hardware string
|
||||
- (NSString*)hardwareDescription;
|
||||
|
||||
/// This method returns the readable simple description of hardware string
|
||||
- (NSString*)hardwareSimpleDescription;
|
||||
|
||||
/// This method returns the hardware number not actual but logically. e.g. if the hardware string is 5,1 then hardware number would be 5.1
|
||||
- (float)hardwareNumber;
|
||||
|
||||
/// This method returns if we are running in the simulator
|
||||
- (BOOL)isSimulator;
|
||||
|
||||
/// This method returns the resolution for still image that can be received from back camera of the current device. Resolution returned for image oriented landscape right.
|
||||
- (CGSize)backCameraStillImageResolutionInPixels;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@interface _DeviceUtil (Constant)
|
||||
|
||||
/// This method returns the Hardware enum depending upon hardware string
|
||||
- (Hardware)hardware;
|
||||
@end
|
||||
849
Pods/CocoaDebug/Sources/Core/_DeviceUtil.m
generated
Normal file
849
Pods/CocoaDebug/Sources/Core/_DeviceUtil.m
generated
Normal file
@@ -0,0 +1,849 @@
|
||||
//
|
||||
// CocoaDebug
|
||||
// liman
|
||||
//
|
||||
// Created by liman 02/02/2023.
|
||||
// Copyright © 2023 liman. All rights reserved.
|
||||
//
|
||||
|
||||
#import "_DeviceUtil.h"
|
||||
#import "_DeviceUtil+Constant.h"
|
||||
#include <sys/sysctl.h>
|
||||
|
||||
@implementation _DeviceUtil {
|
||||
NSDictionary *deviceList;
|
||||
}
|
||||
|
||||
- (instancetype)init
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
deviceList = @{
|
||||
@"AppleTV1,1" : @{
|
||||
@"name": @"Apple TV 1G",
|
||||
@"version": @"1.1",
|
||||
},
|
||||
@"AppleTV2,1" : @{
|
||||
@"name": @"Apple TV 2G",
|
||||
@"version": @"2.1",
|
||||
},
|
||||
@"AppleTV3,1" : @{
|
||||
@"name": @"Apple TV 2012",
|
||||
@"version": @"3.1",
|
||||
},
|
||||
@"AppleTV3,2" : @{
|
||||
@"name": @"Apple TV 2013",
|
||||
@"version": @"3.2",
|
||||
},
|
||||
@"AppleTV5,3" : @{
|
||||
@"name": @"Apple TV 4G",
|
||||
@"version": @"5.3",
|
||||
},
|
||||
@"AppleTV6,2" : @{
|
||||
@"name": @"Apple TV 4K",
|
||||
@"version": @"6.2",
|
||||
},
|
||||
@"Watch1,1" : @{
|
||||
@"name": @"Apple Watch (38 mm)",
|
||||
@"version": @"1.1",
|
||||
},
|
||||
@"Watch1,2" : @{
|
||||
@"name": @"Apple Watch (42 mm)",
|
||||
@"version": @"1.2",
|
||||
},
|
||||
@"Watch2,3" : @{
|
||||
@"name": @"Apple Watch Series 2 (38 mm)",
|
||||
@"version": @"2.3",
|
||||
},
|
||||
@"Watch2,4" : @{
|
||||
@"name": @"Apple Watch Series 2 (42 mm)",
|
||||
@"version": @"2.4",
|
||||
},
|
||||
@"Watch2,6" : @{
|
||||
@"name": @"Apple Watch Series 1 (38 mm)",
|
||||
@"version": @"2.6",
|
||||
},
|
||||
@"Watch2,7" : @{
|
||||
@"name": @"Apple Watch Series 1 (42 mm)",
|
||||
@"version": @"2.7",
|
||||
},
|
||||
@"Watch3,1" : @{
|
||||
@"name": @"Apple Watch Series 3 (38 mm/Cellular)",
|
||||
@"version": @"3.1",
|
||||
},
|
||||
@"Watch3,2" : @{
|
||||
@"name": @"Apple Watch Series 3 (42 mm/Cellular)",
|
||||
@"version": @"3.2",
|
||||
},
|
||||
@"Watch3,3" : @{
|
||||
@"name": @"Apple Watch Series 3 (38 mm)",
|
||||
@"version": @"3.3",
|
||||
},
|
||||
@"Watch3,4" : @{
|
||||
@"name": @"Apple Watch Series 3 (42 mm)",
|
||||
@"version": @"3.4",
|
||||
},
|
||||
@"Watch4,1" : @{
|
||||
@"name": @"Apple Watch Series 4 (40 mm)",
|
||||
@"version": @"4.1",
|
||||
},
|
||||
@"Watch4,2" : @{
|
||||
@"name": @"Apple Watch Series 4 (44 mm)",
|
||||
@"version": @"4.2",
|
||||
},
|
||||
@"Watch4,3" : @{
|
||||
@"name": @"Apple Watch Series 4 (40 mm/Cellular)",
|
||||
@"version": @"4.3",
|
||||
},
|
||||
@"Watch4,4" : @{
|
||||
@"name": @"Apple Watch Series 4 (44 mm/Cellular)",
|
||||
@"version": @"4.4",
|
||||
},
|
||||
@"Watch5,1" : @{
|
||||
@"name": @"Apple Watch Series 5 (40 mm)",
|
||||
@"version": @"5.1",
|
||||
},
|
||||
@"Watch5,2" : @{
|
||||
@"name": @"Apple Watch Series 5 (44 mm)",
|
||||
@"version": @"5.2",
|
||||
},
|
||||
@"Watch5,3" : @{
|
||||
@"name": @"Apple Watch Series 5 (40 mm/Cellular)",
|
||||
@"version": @"5.3",
|
||||
},
|
||||
@"Watch5,4" : @{
|
||||
@"name": @"Apple Watch Series 5 (44 mm/Cellular)",
|
||||
@"version": @"5.4",
|
||||
},
|
||||
@"i386" : @{
|
||||
@"name": @"Simulator",
|
||||
@"version": @"-1",
|
||||
},
|
||||
@"iPad1,1" : @{
|
||||
@"name": @"iPad (WiFi)",
|
||||
@"version": @"1.1",
|
||||
},
|
||||
@"iPad1,2" : @{
|
||||
@"name": @"iPad 3G",
|
||||
@"version": @"1.2",
|
||||
},
|
||||
@"iPad11,1" : @{
|
||||
@"name": @"iPad mini 5 (Wi-Fi Only)",
|
||||
@"version": @"11.1",
|
||||
},
|
||||
@"iPad11,2" : @{
|
||||
@"name": @"iPad mini 5 (Wi-Fi/Cellular)",
|
||||
@"version": @"11.2",
|
||||
},
|
||||
@"iPad11,3" : @{
|
||||
@"name": @"iPad Air 3 (Wi-Fi)",
|
||||
@"version": @"11.3",
|
||||
},
|
||||
@"iPad11,4" : @{
|
||||
@"name": @"iPad Air 3 (Wi-Fi + Cellular)",
|
||||
@"version": @"11.4",
|
||||
},
|
||||
@"iPad12,1" : @{
|
||||
@"name": @"iPad 9 (Wi-Fi)",
|
||||
@"version": @"12.1",
|
||||
},
|
||||
@"iPad12,2" : @{
|
||||
@"name": @"iPad 9 (Wi-Fi + Cellular)",
|
||||
@"version": @"12.2",
|
||||
},
|
||||
@"iPad13,1" : @{
|
||||
@"name": @"iPad Air 4 (Wi-Fi)",
|
||||
@"version": @"13.1",
|
||||
},
|
||||
@"iPad13,10" : @{
|
||||
@"name": @"iPad Pro 12.9\" 5th Gen (Wi-Fi + Cellular)",
|
||||
@"version": @"13.1",
|
||||
},
|
||||
@"iPad13,11" : @{
|
||||
@"name": @"iPad Pro 12.9\" 5th Gen (Wi-Fi + Cellular)",
|
||||
@"version": @"13.11",
|
||||
},
|
||||
@"iPad13,16" : @{
|
||||
@"name": @"iPad Air 5th Gen (Wi-Fi)",
|
||||
@"version": @"13.16",
|
||||
},
|
||||
@"iPad13,17" : @{
|
||||
@"name": @"iPad Air 5th Gen (Wi-Fi + Cellular)",
|
||||
@"version": @"13.17",
|
||||
},
|
||||
@"iPad13,2" : @{
|
||||
@"name": @"iPad Air 4 (Wi-Fi + Cellular)",
|
||||
@"version": @"13.2",
|
||||
},
|
||||
@"iPad13,4" : @{
|
||||
@"name": @"iPad Pro 11\" 3rd Gen (Wi-Fi)",
|
||||
@"version": @"13.4",
|
||||
},
|
||||
@"iPad13,5" : @{
|
||||
@"name": @"iPad Pro 11\" 3rd Gen (Wi-Fi + Cellular)",
|
||||
@"version": @"13.5",
|
||||
},
|
||||
@"iPad13,6" : @{
|
||||
@"name": @"iPad Pro 11\" 3rd Gen (Wi-Fi + Cellular)",
|
||||
@"version": @"13.6",
|
||||
},
|
||||
@"iPad13,7" : @{
|
||||
@"name": @"iPad Pro 11\" 3rd Gen (Wi-Fi + Cellular)",
|
||||
@"version": @"13.7",
|
||||
},
|
||||
@"iPad13,8" : @{
|
||||
@"name": @"iPad Pro 12.9\" 5th Gen (Wi-Fi)",
|
||||
@"version": @"13.8",
|
||||
},
|
||||
@"iPad13,9" : @{
|
||||
@"name": @"iPad Pro 12.9\" 5th Gen (Wi-Fi + Cellular)",
|
||||
@"version": @"13.9",
|
||||
},
|
||||
@"iPad14,1" : @{
|
||||
@"name": @"iPad Mini 6 (Wi-Fi)",
|
||||
@"version": @"14.1",
|
||||
},
|
||||
@"iPad14,2" : @{
|
||||
@"name": @"iPad Mini 6 (Wi-Fi + Cellular)",
|
||||
@"version": @"14.2",
|
||||
},
|
||||
@"iPad2,1" : @{
|
||||
@"name": @"iPad 2 (WiFi)",
|
||||
@"version": @"2.1",
|
||||
},
|
||||
@"iPad2,2" : @{
|
||||
@"name": @"iPad 2 (GSM)",
|
||||
@"version": @"2.2",
|
||||
},
|
||||
@"iPad2,3" : @{
|
||||
@"name": @"iPad 2 (CDMA)",
|
||||
@"version": @"2.3",
|
||||
},
|
||||
@"iPad2,4" : @{
|
||||
@"name": @"iPad 2 (WiFi Rev. A)",
|
||||
@"version": @"2.4",
|
||||
},
|
||||
@"iPad2,5" : @{
|
||||
@"name": @"iPad Mini (WiFi)",
|
||||
@"version": @"2.5",
|
||||
},
|
||||
@"iPad2,6" : @{
|
||||
@"name": @"iPad Mini (GSM)",
|
||||
@"version": @"2.6",
|
||||
},
|
||||
@"iPad2,7" : @{
|
||||
@"name": @"iPad Mini (CDMA)",
|
||||
@"version": @"2.7",
|
||||
},
|
||||
@"iPad3,1" : @{
|
||||
@"name": @"iPad 3 (WiFi)",
|
||||
@"version": @"3.1",
|
||||
},
|
||||
@"iPad3,2" : @{
|
||||
@"name": @"iPad 3 (CDMA)",
|
||||
@"version": @"3.2",
|
||||
},
|
||||
@"iPad3,3" : @{
|
||||
@"name": @"iPad 3 (Global)",
|
||||
@"version": @"3.3",
|
||||
},
|
||||
@"iPad3,4" : @{
|
||||
@"name": @"iPad 4 (WiFi)",
|
||||
@"version": @"3.4",
|
||||
},
|
||||
@"iPad3,5" : @{
|
||||
@"name": @"iPad 4 (CDMA)",
|
||||
@"version": @"3.5",
|
||||
},
|
||||
@"iPad3,6" : @{
|
||||
@"name": @"iPad 4 (Global)",
|
||||
@"version": @"3.6",
|
||||
},
|
||||
@"iPad4,1" : @{
|
||||
@"name": @"iPad Air (WiFi)",
|
||||
@"version": @"4.1",
|
||||
},
|
||||
@"iPad4,2" : @{
|
||||
@"name": @"iPad Air (WiFi+GSM)",
|
||||
@"version": @"4.2",
|
||||
},
|
||||
@"iPad4,3" : @{
|
||||
@"name": @"iPad Air (WiFi+CDMA)",
|
||||
@"version": @"4.3",
|
||||
},
|
||||
@"iPad4,4" : @{
|
||||
@"name": @"iPad Mini Retina (WiFi)",
|
||||
@"version": @"4.4",
|
||||
},
|
||||
@"iPad4,5" : @{
|
||||
@"name": @"iPad Mini Retina (WiFi+CDMA)",
|
||||
@"version": @"4.5",
|
||||
},
|
||||
@"iPad4,6" : @{
|
||||
@"name": @"iPad Mini Retina (Wi-Fi + Cellular CN)",
|
||||
@"version": @"4.6",
|
||||
},
|
||||
@"iPad4,7" : @{
|
||||
@"name": @"iPad Mini 3 (Wi-Fi)",
|
||||
@"version": @"4.7",
|
||||
},
|
||||
@"iPad4,8" : @{
|
||||
@"name": @"iPad Mini 3 (Wi-Fi + Cellular)",
|
||||
@"version": @"4.8",
|
||||
},
|
||||
@"iPad4,9" : @{
|
||||
@"name": @"iPad mini 3 (Wi-Fi/Cellular, China)",
|
||||
@"version": @"4.9",
|
||||
},
|
||||
@"iPad5,1" : @{
|
||||
@"name": @"iPad mini 4 (Wi-Fi Only)",
|
||||
@"version": @"5.1",
|
||||
},
|
||||
@"iPad5,2" : @{
|
||||
@"name": @"iPad mini 4 (Wi-Fi/Cellular)",
|
||||
@"version": @"5.2",
|
||||
},
|
||||
@"iPad5,3" : @{
|
||||
@"name": @"iPad Air 2 (Wi-Fi)",
|
||||
@"version": @"5.3",
|
||||
},
|
||||
@"iPad5,4" : @{
|
||||
@"name": @"iPad Air 2 (Wi-Fi + Cellular)",
|
||||
@"version": @"5.4",
|
||||
},
|
||||
@"iPad6,11" : @{
|
||||
@"name": @"9.7-inch iPad (Wi-Fi)",
|
||||
@"version": @"6.11",
|
||||
},
|
||||
@"iPad6,12" : @{
|
||||
@"name": @"9.7-inch iPad (Wi-Fi + Cellular)",
|
||||
@"version": @"6.12",
|
||||
},
|
||||
@"iPad6,3" : @{
|
||||
@"name": @"iPad Pro 9.7-inch (Wi-Fi Only)",
|
||||
@"version": @"6.3",
|
||||
},
|
||||
@"iPad6,4" : @{
|
||||
@"name": @"iPad Pro 9.7-inch (Wi-Fi + Cellular)",
|
||||
@"version": @"6.4",
|
||||
},
|
||||
@"iPad6,7" : @{
|
||||
@"name": @"iPad Pro (Wi-Fi Only)",
|
||||
@"version": @"6.7",
|
||||
},
|
||||
@"iPad6,8" : @{
|
||||
@"name": @"iPad Pro (Wi-Fi/Cellular)",
|
||||
@"version": @"6.8",
|
||||
},
|
||||
@"iPad7,1" : @{
|
||||
@"name": @"iPad Pro 12.9-Inch (Wi-Fi Only - 2nd Gen)",
|
||||
@"version": @"7.1",
|
||||
},
|
||||
@"iPad7,11" : @{
|
||||
@"name": @"iPad 10.2-Inch 7th Gen (Wi-Fi Only)",
|
||||
@"version": @"7.11",
|
||||
},
|
||||
@"iPad7,12" : @{
|
||||
@"name": @"iPad 10.2-Inch 7th Gen (Wi-Fi/Cellular Only)",
|
||||
@"version": @"7.12",
|
||||
},
|
||||
@"iPad7,2" : @{
|
||||
@"name": @"iPad Pro 12.9-Inch (Wi-Fi/Cell - 2nd Gen)",
|
||||
@"version": @"7.2",
|
||||
},
|
||||
@"iPad7,3" : @{
|
||||
@"name": @"iPad Pro 10.5-Inch (Wi-Fi Only)",
|
||||
@"version": @"7.3",
|
||||
},
|
||||
@"iPad7,4" : @{
|
||||
@"name": @"iPad Pro 10.5-Inch (Wi-Fi/Cellular)",
|
||||
@"version": @"7.4",
|
||||
},
|
||||
@"iPad7,5" : @{
|
||||
@"name": @"iPad 9.7-Inch 6th Gen (Wi-Fi Only)",
|
||||
@"version": @"7.5",
|
||||
},
|
||||
@"iPad7,6" : @{
|
||||
@"name": @"iPad 9.7-Inch 6th Gen (Wi-Fi/Cellular)",
|
||||
@"version": @"7.6",
|
||||
},
|
||||
@"iPad8,1" : @{
|
||||
@"name": @"iPad Pro 11-Inch (Wi-Fi Only)",
|
||||
@"version": @"8.1",
|
||||
},
|
||||
@"iPad8,10" : @{
|
||||
@"name": @"iPad Pro 11-Inch (Wi-Fi/Cellular - 2nd Gen)",
|
||||
@"version": @"8.1",
|
||||
},
|
||||
@"iPad8,11" : @{
|
||||
@"name": @"iPad Pro 12.9-Inch 1TB (Wi-Fi Only - 4th Gen)",
|
||||
@"version": @"8.109999999999999",
|
||||
},
|
||||
@"iPad8,12" : @{
|
||||
@"name": @"iPad Pro 12.9-Inch (Wi-Fi/Cell - 4th Gen)",
|
||||
@"version": @"8.800000000000001",
|
||||
},
|
||||
@"iPad8,2" : @{
|
||||
@"name": @"iPad Pro 11-Inch 1TB (Wi-Fi Only)",
|
||||
@"version": @"8.199999999999999",
|
||||
},
|
||||
@"iPad8,3" : @{
|
||||
@"name": @"iPad Pro 11-Inch (Wi-Fi/Cellular)",
|
||||
@"version": @"8.300000000000001",
|
||||
},
|
||||
@"iPad8,4" : @{
|
||||
@"name": @"iPad Pro 11-Inch 1TB (Wi-Fi/Cellular)",
|
||||
@"version": @"8.4",
|
||||
},
|
||||
@"iPad8,5" : @{
|
||||
@"name": @"iPad Pro 12.9-Inch (Wi-Fi Only - 3rd Gen)",
|
||||
@"version": @"8.5",
|
||||
},
|
||||
@"iPad8,6" : @{
|
||||
@"name": @"iPad Pro 12.9-Inch 1TB (Wi-Fi Only - 3rd Gen)",
|
||||
@"version": @"8.6",
|
||||
},
|
||||
@"iPad8,7" : @{
|
||||
@"name": @"iPad Pro 12.9-Inch (Wi-Fi/Cell - 3rd Gen)",
|
||||
@"version": @"8.699999999999999",
|
||||
},
|
||||
@"iPad8,8" : @{
|
||||
@"name": @"iPad Pro 12.9-Inch 1TB (Wi-Fi/Cell - 3rd Gen)",
|
||||
@"version": @"8.800000000000001",
|
||||
},
|
||||
@"iPad8,9" : @{
|
||||
@"name": @"iPad Pro 11-Inch (Wi-Fi Only - 2nd Gen)",
|
||||
@"version": @"8.9",
|
||||
},
|
||||
@"iPhone1,1" : @{
|
||||
@"name": @"iPhone 2G",
|
||||
@"version": @"1.1",
|
||||
},
|
||||
@"iPhone1,2" : @{
|
||||
@"name": @"iPhone 3G",
|
||||
@"version": @"1.2",
|
||||
},
|
||||
@"iPhone10,1" : @{
|
||||
@"name": @"iPhone 8",
|
||||
@"version": @"10.1",
|
||||
},
|
||||
@"iPhone10,2" : @{
|
||||
@"name": @"iPhone 8 Plus",
|
||||
@"version": @"10.2",
|
||||
},
|
||||
@"iPhone10,3" : @{
|
||||
@"name": @"iPhone X",
|
||||
@"version": @"10.3",
|
||||
},
|
||||
@"iPhone10,4" : @{
|
||||
@"name": @"iPhone 8",
|
||||
@"version": @"10.4",
|
||||
},
|
||||
@"iPhone10,5" : @{
|
||||
@"name": @"iPhone 8 Plus",
|
||||
@"version": @"10.5",
|
||||
},
|
||||
@"iPhone10,6" : @{
|
||||
@"name": @"iPhone X",
|
||||
@"version": @"10.6",
|
||||
},
|
||||
@"iPhone11,2" : @{
|
||||
@"name": @"iPhone XS",
|
||||
@"version": @"11.2",
|
||||
},
|
||||
@"iPhone11,4" : @{
|
||||
@"name": @"iPhone XS Max",
|
||||
@"version": @"11.4",
|
||||
},
|
||||
@"iPhone11,6" : @{
|
||||
@"name": @"iPhone XS Max China",
|
||||
@"version": @"11.6",
|
||||
},
|
||||
@"iPhone11,8" : @{
|
||||
@"name": @"iPhone XR",
|
||||
@"version": @"11.8",
|
||||
},
|
||||
@"iPhone12,1" : @{
|
||||
@"name": @"iPhone 11",
|
||||
@"version": @"12.1",
|
||||
},
|
||||
@"iPhone12,3" : @{
|
||||
@"name": @"iPhone 11 Pro",
|
||||
@"version": @"12.3",
|
||||
},
|
||||
@"iPhone12,5" : @{
|
||||
@"name": @"iPhone 11 Pro Max",
|
||||
@"version": @"12.5",
|
||||
},
|
||||
@"iPhone12,8" : @{
|
||||
@"name": @"iPhone SE (2 Gen)",
|
||||
@"version": @"12.8",
|
||||
},
|
||||
@"iPhone13,1" : @{
|
||||
@"name": @"iPhone 12 mini",
|
||||
@"version": @"13.1",
|
||||
},
|
||||
@"iPhone13,2" : @{
|
||||
@"name": @"iPhone 12",
|
||||
@"version": @"13.2",
|
||||
},
|
||||
@"iPhone13,3" : @{
|
||||
@"name": @"iPhone 12 Pro",
|
||||
@"version": @"13.3",
|
||||
},
|
||||
@"iPhone13,4" : @{
|
||||
@"name": @"iPhone 12 Pro Max",
|
||||
@"version": @"13.4",
|
||||
},
|
||||
@"iPhone14,2" : @{
|
||||
@"name": @"iPhone 13 Pro",
|
||||
@"version": @"14.2",
|
||||
},
|
||||
@"iPhone14,3" : @{
|
||||
@"name": @"iPhone 13 Pro Max",
|
||||
@"version": @"14.3",
|
||||
},
|
||||
@"iPhone14,4" : @{
|
||||
@"name": @"iPhone 13 mini",
|
||||
@"version": @"14.4",
|
||||
},
|
||||
@"iPhone14,5" : @{
|
||||
@"name": @"iPhone 13",
|
||||
@"version": @"14.5",
|
||||
},
|
||||
@"iPhone14,6" : @{
|
||||
@"name": @"iPhone SE (3 Gen)",
|
||||
@"version": @"14.6",
|
||||
},
|
||||
@"iPhone14,7" : @{
|
||||
@"name": @"iPhone 14",
|
||||
@"version": @"14.7",
|
||||
},
|
||||
@"iPhone14,8" : @{
|
||||
@"name": @"iPhone 14 Plus",
|
||||
@"version": @"14.8",
|
||||
},
|
||||
@"iPhone15,2" : @{
|
||||
@"name": @"iPhone 14 Pro",
|
||||
@"version": @"15.2",
|
||||
},
|
||||
@"iPhone15,3" : @{
|
||||
@"name": @"iPhone 14 Pro Max",
|
||||
@"version": @"15.3",
|
||||
},
|
||||
@"iPhone2,1" : @{
|
||||
@"name": @"iPhone 3GS",
|
||||
@"version": @"2.1",
|
||||
},
|
||||
@"iPhone3,1" : @{
|
||||
@"name": @"iPhone 4 (GSM)",
|
||||
@"version": @"3.1",
|
||||
},
|
||||
@"iPhone3,2" : @{
|
||||
@"name": @"iPhone 4 (GSM Rev. A)",
|
||||
@"version": @"3.2",
|
||||
},
|
||||
@"iPhone3,3" : @{
|
||||
@"name": @"iPhone 4 (CDMA)",
|
||||
@"version": @"3.3",
|
||||
},
|
||||
@"iPhone4,1" : @{
|
||||
@"name": @"iPhone 4S",
|
||||
@"version": @"4.1",
|
||||
},
|
||||
@"iPhone5,1" : @{
|
||||
@"name": @"iPhone 5 (GSM)",
|
||||
@"version": @"5.1",
|
||||
},
|
||||
@"iPhone5,2" : @{
|
||||
@"name": @"iPhone 5 (Global)",
|
||||
@"version": @"5.2",
|
||||
},
|
||||
@"iPhone5,3" : @{
|
||||
@"name": @"iPhone 5c (GSM)",
|
||||
@"version": @"5.3",
|
||||
},
|
||||
@"iPhone5,4" : @{
|
||||
@"name": @"iPhone 5c (Global)",
|
||||
@"version": @"5.4",
|
||||
},
|
||||
@"iPhone6,1" : @{
|
||||
@"name": @"iPhone 5s (GSM)",
|
||||
@"version": @"6.1",
|
||||
},
|
||||
@"iPhone6,2" : @{
|
||||
@"name": @"iPhone 5s (Global)",
|
||||
@"version": @"6.2",
|
||||
},
|
||||
@"iPhone7,1" : @{
|
||||
@"name": @"iPhone 6 Plus",
|
||||
@"version": @"7.1",
|
||||
},
|
||||
@"iPhone7,2" : @{
|
||||
@"name": @"iPhone 6",
|
||||
@"version": @"7.2",
|
||||
},
|
||||
@"iPhone8,1" : @{
|
||||
@"name": @"iPhone 6s",
|
||||
@"version": @"8.1",
|
||||
},
|
||||
@"iPhone8,2" : @{
|
||||
@"name": @"iPhone 6s Plus",
|
||||
@"version": @"8.199999999999999",
|
||||
},
|
||||
@"iPhone8,4" : @{
|
||||
@"name": @"iPhone SE",
|
||||
@"version": @"8.4",
|
||||
},
|
||||
@"iPhone9,1" : @{
|
||||
@"name": @"iPhone 7",
|
||||
@"version": @"9.1",
|
||||
},
|
||||
@"iPhone9,2" : @{
|
||||
@"name": @"iPhone 7 Plus",
|
||||
@"version": @"9.199999999999999",
|
||||
},
|
||||
@"iPhone9,3" : @{
|
||||
@"name": @"iPhone 7",
|
||||
@"version": @"9.300000000000001",
|
||||
},
|
||||
@"iPhone9,4" : @{
|
||||
@"name": @"iPhone 7 Plus",
|
||||
@"version": @"9.4",
|
||||
},
|
||||
@"iPod1,1" : @{
|
||||
@"name": @"iPod Touch (1 Gen)",
|
||||
@"version": @"1.1",
|
||||
},
|
||||
@"iPod2,1" : @{
|
||||
@"name": @"iPod Touch (2 Gen)",
|
||||
@"version": @"2.1",
|
||||
},
|
||||
@"iPod3,1" : @{
|
||||
@"name": @"iPod Touch (3 Gen)",
|
||||
@"version": @"3.1",
|
||||
},
|
||||
@"iPod4,1" : @{
|
||||
@"name": @"iPod Touch (4 Gen)",
|
||||
@"version": @"4.1",
|
||||
},
|
||||
@"iPod5,1" : @{
|
||||
@"name": @"iPod Touch (5 Gen)",
|
||||
@"version": @"5.1",
|
||||
},
|
||||
@"iPod7,1" : @{
|
||||
@"name": @"iPod Touch (6 Gen)",
|
||||
@"version": @"7.1",
|
||||
},
|
||||
@"iPod9,1" : @{
|
||||
@"name": @"iPod Touch (7 Gen)",
|
||||
@"version": @"9.1",
|
||||
},
|
||||
@"x86_64" : @{
|
||||
@"name": @"Simulator",
|
||||
@"version": @"-1",
|
||||
},
|
||||
};
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (NSString*)nativeHardwareString {
|
||||
int name[] = {CTL_HW,HW_MACHINE};
|
||||
size_t size = 100;
|
||||
sysctl(name, 2, NULL, &size, NULL, 0); // getting size of answer
|
||||
char *hw_machine = malloc(size);
|
||||
|
||||
sysctl(name, 2, hw_machine, &size, NULL, 0);
|
||||
NSString *hardware = [NSString stringWithUTF8String:hw_machine];
|
||||
free(hw_machine);
|
||||
|
||||
return hardware;
|
||||
}
|
||||
|
||||
- (NSString*)hardwareString {
|
||||
NSString *hardware = [self nativeHardwareString];
|
||||
|
||||
// Check if the hardware is simulator
|
||||
if ([hardware isEqualToString:i386_Simulator] || [hardware isEqualToString:x86_64_Simulator]) {
|
||||
NSString *deviceID = [[[NSProcessInfo processInfo] environment] objectForKey:@"SIMULATOR_MODEL_IDENTIFIER"];
|
||||
if (deviceID != nil) {
|
||||
hardware = deviceID;
|
||||
}
|
||||
}
|
||||
return hardware;
|
||||
}
|
||||
|
||||
/* This is another way of gtting the system info
|
||||
* For this you have to #import <sys/utsname.h>
|
||||
*/
|
||||
|
||||
/*
|
||||
NSString* machineName
|
||||
{
|
||||
struct utsname systemInfo;
|
||||
uname(&systemInfo);
|
||||
return [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/// This method returns the Platform enum depending upon hardware string
|
||||
///
|
||||
///
|
||||
/// - returns: `Platform` type of the device
|
||||
///
|
||||
- (Platform)platform {
|
||||
|
||||
NSString *hardware = [self hardwareString];
|
||||
|
||||
if ([hardware hasPrefix:@"iPhone"]) return iPhone;
|
||||
if ([hardware hasPrefix:@"iPod"]) return iPodTouch;
|
||||
if ([hardware hasPrefix:@"iPad"]) return iPad;
|
||||
if ([hardware hasPrefix:@"Watch"]) return AppleWatch;
|
||||
if ([hardware hasPrefix:@"AppleTV"]) return AppleTV;
|
||||
|
||||
return Unknown;
|
||||
}
|
||||
|
||||
- (Hardware)nativeHardware {
|
||||
NSString *hardware = [self nativeHardwareString];
|
||||
if ([hardware isEqualToString:i386_Simulator]) return SIMULATOR;
|
||||
if ([hardware isEqualToString:x86_64_Simulator]) return SIMULATOR;
|
||||
return [self hardware];
|
||||
}
|
||||
|
||||
- (NSString*)hardwareDescription {
|
||||
NSString *hardware = [self hardwareString];
|
||||
NSString *hardwareDescription = [[deviceList objectForKey:hardware] objectForKey:@"name"];
|
||||
if (hardwareDescription) {
|
||||
return hardwareDescription;
|
||||
}
|
||||
else {
|
||||
//log message that your device is not present in the list
|
||||
[self logMessage:hardware];
|
||||
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString*)hardwareSimpleDescription {
|
||||
NSString *hardwareDescription = [self hardwareDescription];
|
||||
if (hardwareDescription == nil) {
|
||||
return nil;
|
||||
}
|
||||
NSError *error = nil;
|
||||
// this expression matches all strings between round brackets (e.g (Wifi), (GSM)) except the pattern "[0-9]+ Gen"
|
||||
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\((?![0-9]+ Gen).*\\)" options:NSRegularExpressionCaseInsensitive error:&error];
|
||||
NSString *hardwareSimpleDescription = [regex stringByReplacingMatchesInString:hardwareDescription options:0 range:NSMakeRange(0, [hardwareDescription length]) withTemplate:@""];
|
||||
if (error) {
|
||||
return nil;
|
||||
} else {
|
||||
return hardwareSimpleDescription;
|
||||
}
|
||||
}
|
||||
|
||||
- (float)hardwareNumber {
|
||||
NSString *hardware = [self hardwareString];
|
||||
float version = [[[deviceList objectForKey:hardware] objectForKey:@"version"] floatValue];
|
||||
if (version != 0.0f) {
|
||||
return version;
|
||||
}
|
||||
else {
|
||||
//log message that your device is not present in the list
|
||||
[self logMessage:hardware];
|
||||
|
||||
return 200.0f; //device might be new one of missing one so returning 200.0f
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)isSimulator {
|
||||
return [self nativeHardware] == SIMULATOR;
|
||||
}
|
||||
|
||||
- (CGSize)backCameraStillImageResolutionInPixels {
|
||||
switch ([self hardware]) {
|
||||
case IPHONE_2G:
|
||||
case IPHONE_3G:
|
||||
return CGSizeMake(1600, 1200);
|
||||
|
||||
case IPHONE_3GS:
|
||||
return CGSizeMake(2048, 1536);
|
||||
|
||||
case IPHONE_4:
|
||||
case IPHONE_4_CDMA:
|
||||
case IPAD_3_WIFI:
|
||||
case IPAD_3_WIFI_CDMA:
|
||||
case IPAD_3:
|
||||
case IPAD_4_WIFI:
|
||||
case IPAD_4:
|
||||
case IPAD_4_GSM_CDMA:
|
||||
return CGSizeMake(2592, 1936);
|
||||
|
||||
case IPHONE_4S:
|
||||
case IPHONE_5:
|
||||
case IPHONE_5_CDMA_GSM:
|
||||
case IPHONE_5C:
|
||||
case IPHONE_5C_CDMA_GSM:
|
||||
case IPHONE_6:
|
||||
case IPHONE_6_PLUS:
|
||||
case IPOD_TOUCH_6G:
|
||||
case IPAD_AIR_2_WIFI:
|
||||
case IPAD_AIR_2_WIFI_CELLULAR:
|
||||
case IPHONE_6S:
|
||||
case IPHONE_6S_PLUS:
|
||||
case IPAD_MINI_4_WIFI:
|
||||
case IPAD_MINI_4_WIFI_CELLULAR:
|
||||
case IPAD_MINI_5_WIFI:
|
||||
case IPAD_MINI_5_WIFI_CELLULAR:
|
||||
case IPAD_AIR_3_WIFI:
|
||||
case IPAD_AIR_3_WIFI_CELLULAR:
|
||||
return CGSizeMake(3264, 2448);
|
||||
|
||||
case IPHONE_7:
|
||||
case IPHONE_7_GSM:
|
||||
case IPHONE_7_PLUS:
|
||||
case IPHONE_7_PLUS_GSM:
|
||||
case IPHONE_8:
|
||||
case IPHONE_8_CN:
|
||||
case IPHONE_8_PLUS:
|
||||
case IPHONE_8_PLUS_CN:
|
||||
case IPHONE_X:
|
||||
case IPHONE_X_CN:
|
||||
return CGSizeMake(4032, 3024);
|
||||
|
||||
case IPOD_TOUCH_4G:
|
||||
return CGSizeMake(960, 720);
|
||||
|
||||
case IPOD_TOUCH_5G:
|
||||
return CGSizeMake(2440, 1605);
|
||||
|
||||
case IPAD_2_WIFI:
|
||||
case IPAD_2:
|
||||
case IPAD_2_CDMA:
|
||||
return CGSizeMake(872, 720);
|
||||
|
||||
case IPAD_MINI_WIFI:
|
||||
case IPAD_MINI:
|
||||
case IPAD_MINI_WIFI_CDMA:
|
||||
return CGSizeMake(1820, 1304);
|
||||
|
||||
case IPAD_PRO_97_WIFI:
|
||||
case IPAD_PRO_97_WIFI_CELLULAR:
|
||||
return CGSizeMake(4032, 3024);
|
||||
|
||||
default:
|
||||
NSLog(@"We have no resolution for your device's camera listed in this category. Please, make photo with back camera of your device, get its resolution in pixels (via Preview Cmd+I for example) and add a comment to this repository (https://github.com/InderKumarRathore/DeviceUtil) on GitHub.com in format Device = Hpx x Wpx.");
|
||||
NSLog(@"Your device is: %@", [self hardwareDescription]);
|
||||
break;
|
||||
}
|
||||
return CGSizeZero;
|
||||
}
|
||||
|
||||
- (void)logMessage:(NSString *)hardware {
|
||||
NSLog(@"This is a device which is not listed in this category. Please visit https://github.com/InderKumarRathore/DeviceUtil and add a comment there.");
|
||||
NSLog(@"Your device hardware string is: %@", hardware);
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user