iOS System Utilities

iOS System Utilities

Released 3 years ago , Last update 8 months ago

System Utilties is a singleton class for acquiring everything about your device. Over 160 class methods for acquiring device specs, memory usage, disk usage, processes, network stats, live location details, SSID, CPU, IP addresses, MAC addresses, Bonjour services, AirPlay services and much more. Many details not available through any iOS API. Includes full source code and a working demo.

SystemUtilities is a singleton class of over 160 methods providing must-have or missing utilities acquiring all available information about your device. Some of the utilities included are querying running processes, memory usage, disk usage, live location details (current address, GPS signal level, latitude, longitude, altitude, speed) , Bonjour services, AirPlay services, device resolution, screen resolution, mirroring, MAC addresses WiFi SSID, WiFi BSSID, CPU, processor, network Tx and Rx, WiFi and WWAN Tx and Rx, Cell and IP Address, battery details, file utilities and device specifications.. For iPad, iPhone and iPod Touch.

Acquire location details and get notifications when location or current address changes. Acquire AirPlay and Bonjour services details and get notifications when the service information is acquired.

An invaluable collection of utilities providing a wealth of information much not readily available using the iOS SDK.

Using System Utilities in your app

Copy the installation zip SystemUtilities folder to your project and keep everything in the SystemUtilities folder. Then in your project import SystemUtiltiies.h and use the static methods to acquire desired details.

It's tested and works well on iOS7+

See Class Methods section below for the full lists of available methods.

4.3
  • 5 3
  • 4 0
  • 3 0
  • 2 1
  • 1 0
4 Reviews Read Reviews

Pricing

14 day 14-day money-back guarantee

$19.99

Single App

  • Perpetual license

  • 1 application

  • Can distribute binary products only

  • Commercial use

  • 6 months support

$89.99

Developer

  • Perpetual license

  • Unlimited projects

  • Can distribute code and binary products

  • Commercial use

  • 12 months support

Supported OS and SDK Versions

  • ARC
  • Supported build target - iOS 6.0 / Mac OS 10.7 (Xcode 5.1, Apple LLVM compiler 3.2)
  • Earliest supported deployment target - iOS 6.0 / Mac OS 10.6
  • Earliest compatible deployment target - iOS 6.0 / Mac OS 10.6

NOTE: 'Supported' means that the library has been tested with this version. 'Compatible' means that the library should work on this OS version (i.e. it doesn't rely on any unavailable SDK features) but is no longer being tested for compatibility and may require tweaking or bug fixes to run correctly.

Installation

To install SystemUtilities for your app, drag the all the files in the SystemUtilities folder to your app.

Required Frameworks and Libraries

Must include the following frameworks:

  • libresolv.dylib
  • AVFoundation
  • CoreFoundation
  • ExternalAccessory
  • CoreTelephony
  • MediaPlayer
  • Foundation
  • UIKit
  • CoreGraphics
  • CoreLocation
  • MobileCoreServices
  • Security
  • MapKit
  • MessageUI
  • SystemConfiguration
  • QuartzCore.

Usage

    // All methods provides are class methods and are called by using 
// e.g. NSString * processorInfo = [SystemUtilities getProcessorInfo];
// e.g. NSString * currentAddress = [SystemUtilities getCurrentAddressNotify:self]

// To use simply import the SystemUtilities.h file, call whichever methods you want, and find the information. // see Demo Example in Examples/Demo folder for full example and source code // Note: your app.plist (e.g. for this app:SystemUtilitiesDemo-Info.plist) must have // the following location-based entry if your app is running on iOS8+.
// Change the value to your message you want to appear when iOS8+ requests location access permission: // // key value // NSLocationWhenInUseUsageDescription - SystemUtilitiesDemo needs your permission to acquire location information. [SystemUtilities setAirPlayVerbose:FALSE]; // turn AirPlay services verbose mode on or off [SystemUtilities setBonjourVerbose:FALSE]; // turn Bonjour services verbose mode on or off [SystemUtilities setLocationVerbose:FALSE]; // turn location services verbose mode on or off [SystemUtilities sendAirPlayNotifications:self]; // request AirPlay Services notifications [SystemUtilities sendBonjourNotifications:self]; // request Bonjour Services notifications if ([SystemUtilities locationServicesAreEnabled]) { //CLLocation * currentLocation = [SystemUtilities getCurrentLocation]; //NSLog(@"Current location is %@", currentLocation); // get current address and want to be notified when current address changes... NSString * currentAddress = [SystemUtilities getCurrentAddressNotify:self]; if (currentAddress != nil) NSLog(@"Current address is '%@'. Requested notification when current address changes...", currentAddress); else NSLog(@"Current address is not known yet! Requested notification when current address changes..."); } CGRect rect = [[UIScreen mainScreen] bounds]; screenWidth = rect.size.width; screenHeight = rect.size.height; containerView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, screenWidth, screenHeight)]; containerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; containerView.contentSize = CGSizeMake(screenWidth, screenHeight*6); containerView.userInteractionEnabled = YES; containerView.scrollEnabled = YES; self.view = containerView; self.view.backgroundColor = [UIColor blackColor]; infoView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, screenWidth, screenHeight)]; infoView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; infoView.backgroundColor = [UIColor blackColor]; infoView.textColor = [UIColor yellowColor]; [self.view addSubview:infoView]; // see if device is an iPad... if ([SystemUtilities isRunningIPad]) { [infoView setFont:[UIFont systemFontOfSize:20]]; [self addToInfoView:nil result:@"Are running an iPad..." verbose:TRUE]; } else { [infoView setFont:[UIFont systemFontOfSize:14]]; [self addToInfoView:nil result:@"Are running iPhone or iPod Touch..." verbose:TRUE]; } BOOL onWifiNetwork = [SystemUtilities onWifiNetwork]; if (onWifiNetwork) [self addToInfoView:nil result:@"On WiFi network..." verbose:TRUE]; else [self addToInfoView:nil result:@"On Cell network..." verbose:TRUE]; // see if device is running Siri... BOOL hasSiri = [SystemUtilities hasSiri]; if (hasSiri) [self addToInfoView:nil result:@"Your device has Siri..." verbose:TRUE]; else [self addToInfoView:nil result:@"Your device does not have Siri..." verbose:TRUE]; BOOL hasTouchID = [SystemUtilities hasTouchID]; // see if device has TouchID... if (hasTouchID) [self addToInfoView:nil result:@"Your device has TouchID..." verbose:TRUE]; else [self addToInfoView:nil result:@"Your device does not have TouchID..." verbose:TRUE]; // get DNS Servers... NSString * dnsServers = [SystemUtilities getDNSServers]; [self addToInfoView:@"DNS Servers:" result:dnsServers verbose:TRUE]; // get device type... NSString * deviceType = [SystemUtilities getRealDeviceType]; [self addToInfoView:@"Device Type:" result:deviceType verbose:TRUE]; NSString * dimensionsStr = [ALHardware dimensions]; if (dimensionsStr == nil) dimensionsStr = @""; NSString * weightStr = [ALHardware weight]; if (weightStr == nil) weightStr = @""; NSLog(@"device dimensions %@ (%d X %d) weight is %@", dimensionsStr, [ALHardware screenWidth], [ALHardware screenHeight],weightStr); // get the IP address... NSString * ipAddress = [SystemUtilities getIPAddress]; NSLog(@"IP Address: ", ipAddress);
// get free disk space percentage... NSString * freeDiskSpaceAndPct = [SystemUtilities getFreeDiskSpaceAndPct];  
NSLog(@"Free Disk Space: ", freeDiskSpaceAndPct);

// get free memory...
NSString * freeMemory = [SystemUtilities getFreeMemoryStr];
 NSLog(@"Free Memory: ", freeMemory);

    // get total memory...
    NSString * totalMemory = [SystemUtilities getTotalMemoryStr];
    NSLog(@"Total Memory: ", totalMemory);
// get carrier information... NSString * carrierInfo = [SystemUtilities getCarrierInfo]; NSLog(@"Carrier Information: " , carrierInfo);
// get process information... NSString * processorInfo = [SystemUtilities getProcessorInfo]; NSLog(@"Process Information: ", processorInfo);
// get device uptime... NSString * uptimeString = [SystemUtilities getSystemUptime]; NSLog(@"Device Uptime: ", uptimeString);
// get the CPU frequency... NSString * cpuFrequency = [SystemUtilities getCPUFrequency]; NSLog(@"CPU Speed: ", cpuFrequency);
// get the Bus frequency... NSString * busFrequency = [SystemUtilities getBusFrequency]; NSLog(@"Bus Speed: ", busFrequency);
// get CPU usage... NSString * cpuUsage = [SystemUtilities getCPUUsageAsStr]; NSLog(@"CPU Usage: ", cpuUsage);
// get WIFi SSID... NSString * ssidString = [SystemUtilities getSSIDForWifi]; NSLog(@"WiFi SSID: ", ssidString);
// get screen resolution... NSString * screenResolutionString = [SystemUtilities getScreenResolution]; NSLog(@"Screen Resolution: ", screenResolutionString);
// see if mirroring is enabled... BOOL isMirroringSupported = [SystemUtilities isMirroringSupported]; if (isMirroringSupported) NSLog(@"Mirroring is supported");
else NSLog(@"Mirroring is not supported");
// Get network data counters NSArray * networkDataCounters = [SystemUtilities getNetworkDataCounters]; NSString * dStr = nil; unsigned int dValue = 0; if (networkDataCounters != nil && networkDataCounters.count > 0) { NSNumber * wifiSent = [networkDataCounters objectAtIndex:0]; NSNumber * wifiReceived = [networkDataCounters objectAtIndex:1]; NSNumber * wwanSent = [networkDataCounters objectAtIndex:2]; NSNumber * wwanReceived = [networkDataCounters objectAtIndex:3]; dValue = [wifiSent unsignedIntValue]; NSLog(@"WiFi Sent Bytes: %@", [SystemUtilities formatNumber4:dValue]);
dValue = [wifiReceived unsignedIntValue]; NSLog(@""WiFi Received Bytes: 
%@", [SystemUtilities formatNumber4:dValue]);
        
        dValue = [wwanSent unsignedIntValue];
        NSLog(@"WWAN Sent Bytes: %@", [SystemUtilities formatNumber4:dValue]);
dValue = [wwanReceived unsignedIntValue]; NSLog(@"WWAN Received Bytes: %@", [SystemUtilities formatNumber4:dValue]);
} BOOL on3G = [SystemUtilities on3GNetwork]; BOOL onWifi = [SystemUtilities onWifiNetwork]; if (onWifi) { NSString * ipWiFi = [SystemUtilities getIPAddressForWifi]; NSLog(@"on WiFi and the IP address:", ipWiFi);
} else if (on3G) { NSString * cellAddress = [SystemUtilities getCellAddress]; NSLog(@"on cell and the Cell address:", cellAddress);
} // Get process information NSMutableArray * processInfo = [SystemUtilities getProcessInfo]; int processCount = [processInfo count]; NSString * pStr = [NSString stringWithFormat:@"%d processes:", processCount]; NSLog(@"There are %@", pStr); [self addToInfoView2:processInfo verbose:FALSE]; }
// AirPlay callback you registered for notifications for above... - (void)didGetAirPlayServices:(NSMutableArray *)airPlayServicesNames summary:(NSString *)airPlayServicesStr { NSLog(@"AirPlay Services notification: %d AirPlay Services: %@", airPlayServicesNames.count, airPlayServicesStr); }
// Bonjour callback you regiustered for notiications for above... - (void)didGetBonjourServices:(NSMutableArray *)bonjourServiceNames summary:(NSString *)bonjourServicesStr { NSLog(@"Bonjour Services notification: %d Bonjour Services: %@", bonjourServiceNames.count, bonjourServicesStr); }

Example Project Demo

The demo example in the Examples/Demo folder demonstrates how you might implement using SystemUtilities.

The example is for iOS.

Class Methods

// System Utility Functions

// New methods for v5.3

+ (BOOL)isIOS8AndAbove;                          // check for if running iOS8+ and above

// new v5.3 (AirPlay, Bonjour and Location)

// AirPlay Services functions

+ (void)setAirPlayVerbose:(BOOL)verbose;         // turn AirPlay services verbose mode on
+ (int)getAirPlayServicesCount;
+ (NSMutableArray *)getAirPlayServicesNames;
+ (NSString *)getAirPlayServicesStr;
// end of AirPlay Services functions

// Bonjour services functions

+ (void)setBonjourVerbose:(BOOL)verbose;        // turn Bonjour services verbose mode on
+ (int)getBonjourServicesCount;
+ (NSMutableArray *)getBonjourServicesNames;
+ (NSString *)getBonjourServicesStr;
// end of Bonjour Services functions

// Location-based functions

+ (void)setLocationVerbose:(BOOL)verbose;        // turn location services verbose mode on
+ (void)sendAirPlayNotifications:(id<AirPlayUtilsDelegate>)airPlayDelegate;        
// request AirPlay Services notifications
+ (void)sendBonjourNotifications:(id<BonjourUtilsDelegate>)bonjourDelegate;   // request Bonjour Services notifications

+ (BOOL)locationServicesAreEnabled;              // are location-based services enabled
+ (BOOL)isGettingAddress;                        // determine whether is in process of getting address
+ (BOOL)isNewAddress;                            // determine whether current address is a new address

+ (CLLocationDistance)getDistanceFilter;         // get the distance filter being used by the Location Manager
+ (void)setDistanceFilter:(CLLocationDistance)distance;    // set the distance filter being used by the Location Manager
+ (CLLocationAccuracy)getDesiredAccuracy;        // get the desired accuracy being used by the Location Manager
+ (void)setDesiredAccuracy:(CLLocationAccuracy)accuracy;   // set the desired accuracy used by the Location Manager

+ (CLLocation *)getCurrentLocation;              // get the current location
+ (CLLocation *)getOldLocation;                  // get the old (previous) location
+ (BOOL)isSameLocation:(CLLocation *)location1 location2:(CLLocation*)location2;    // see if 2 locations are the same location

+ (CLLocationDistance)getDistanceBetween:(CLLocation *)fromLocation toLocation:(CLLocation *)toLocation;   // get distance between two locations
+ (NSString *)getFormattedDistanceBetween:(CLLocation *)fromLocation toLocation:(CLLocation *)toLocation;  // get distance between 2 locations formatted

+ (CLLocationCoordinate2D)getCurrentCoordinate;  // get the current location coordinate
+ (NSString *)getCurrentFormattedCoordinate;     // get the current location coordinate formatted (e.g. lat long)

+ (NSString *)getCurrentAddress;                 // get the current location address
+ (NSString *)getCurrentAddressNotify:(id<LocationUtilsDelegate>)locationDelegate;  // get current address and
                                             // notify 'locationDelegate' when address changes

+ (NSString *)getCurrentGPSSignal;               // get the current GPS Signal strength
+ (int)getCurrentGPSSignalAccuracy;              // get the current GPS Signal accuracy

+ (NSString *)getCurrentHeading;                 // current GPS heading
+ (int)getCurrentHeadingAccuracy;                // current heading accuracy

+ (float)getCurrentLatitude;                     // get current location latitude
+ (float)getCurrentLongitude;                    // get current location longitude
+ (float)getCurrentAltitude;                     // get current location altitude
+ (float)getCurrentSpeed;                        // get current location speed

+ (NSString *)getCurrentFormattedLatitude;       // get current location latitude formatted (e.g. 38 degrees 47' N)
+ (NSString *)getCurrentFormattedLongitude;      // get current location longitude formatted (e.g.  77 degrees 25' N)
+ (NSString *)getCurrentFormattedAltitude;       // get current location altitude formatted (e.g. 283.73 feet (86.48 m)
+ (NSString *)getCurrentFormattedSpeed;          // get current location speed formatted (e.g. 0 m/s (0 mph))

/ / end of Location-based functions


+ (BOOL)hasSiri;             // determine if device has Siri
+ (BOOL)hasTouchID;    // determine if device has TouchID

// NEW in 3.7

+ (CGFloat)getScreenBrightnes;      // get screen brightness (from 0.0 to 1.0)
// set screen brightness - value from 0.0 to 1.0
+ (BOOL)setScreenBrightness:(CGFloat)brightness;
//
// get the device resolution
//
// return UIDeviceResolution_Unknown          = 0
//        UIDeviceResolution_iPhoneStandard   = 1   iPhone 1,3,3GS Standard Display  (320x480px)
//        UIDeviceResolution_iPhoneRetina4    = 2   iPhone 4,4S Retina Display 3.5"  (640x960px)
//        UIDeviceResolution_iPhoneRetina5    = 3   iPhone 5 Retina Display 4"       (640x1136px)
//        UIDeviceResolution_iPadStandard     = 4   iPad 1,2,mini Standard Display   (1024x768px)
//        UIDeviceResolution_iPadRetina       = 5   iPad 3 Retina Display            (2048x1536px)
 + (UIDeviceResolution)getDeviceResolution;   
 + (NSString *)getDeviceResolutionStr:(BOOL)includeDeviceName;    // get the device resolution
 + (NSString *)getScreenResolution;   // get the screen resolution details
 + (CGRect)getScreenRect;             // get screen rect
 + (CGRect)getScreenAppRect;          // get screen appication rect
 + (int)getScreenWidth;               // get screen width
 + (int)getScreenHeight;              // get screen height
 + (CGFloat)getScreenScale;           // get screen scale
 + (BOOL)isScreenRetina;              // is screen retina.  TRUE = retina, else not retina.

//  end of NEW in 3.7

// formats text into lines of a max length with all lines being on word breaks
+ (NSMutableArray *)formatTextLine:(NSString *)text maxLength:(int)maxLength;

// get network data counters (WiFi and WWAN)
//
// return NSArray of 4 NSNumber unsigned int counters
//        [0] WiFi Sent, [1] WiFi Received, [2] WWAN Sent,  [3] WWAN Received
+ (NSArray *)getNetworkDataCounters;  

// General file utilities:

// determine if the file at the path exists
+ (BOOL)doesFileAtPathExist:(NSString *)path;

// determine if the file at the url exists
+ (BOOL)doesFileExist:(NSURL *)fileUrl;

// delete the file at the specified path
+ (BOOL)deleteFileAtPath:(NSString *)path;

// delete the file at the specified url
+ (BOOL)deleteFile:(NSURL *)fileUrl;

// Text to Speech methods:

// read specified text - include linebreaks for multiple lines and will speak each line
+ (BOOL)readText:(NSString *)text;

// read specified text - include linebreaks for multiple lines and will speak each line
// wait specifies whether to wait for the audio to be done playing
+ (BOOL)readText:(NSString *)text wait:(BOOL)wait;

// read specified text for single line
// wait specifies whether to wait for the audio to be done playing
+ (BOOL)readTextLine:(NSString *)text wait:(BOOL)wait;

// get the reading text language code (e.g. en, fr, es)
+ (NSString *)getReadingLocaleLanguageCode;

// get a description for the reading locale being used
+ (NSString *)getReadingLocaleDescription;

// get the locale used for reading text
// locale specifies the locale to use.  If nil then default of current locale used
+ (NSLocale *)getReadTextLocale;

// set the locale used for reading text
// locale specifies the locale to use.  If nil then default of current locale used
+ (void)setReadTextLocale:(NSLocale *)locale;

// get list of available
//
// return NSArray of localeIdentifiers (e.g. en, fr, es)
+ (NSArray *)getAvailableLocaleIdentifiers;

// read specified text - works best with single lines
//
// return file system path of the created audio file readtextfile.mp3 (default filename)
+ (NSString *)getAudioFileForText:(NSString *)text;

// read specified text - works best with single lines
// name specified name of output audio file (e.g. readtextfile.mp3)
//
// return file system path of the created audio file with your name
+ (NSString *)getAudioFileForText:(NSString *)text name:(NSString *)name;

// play audio file at specified path
// wait specifies whether to wait for the audio to be done playing
+ (BOOL)playAudioFileUsingPath:(NSString *)audioFilePath wait:(BOOL)wait;

// play audio file at specified URL
// wait specifies whether to wait for the audio to be done playing
+ (BOOL)playAudioFile:(NSURL *)audioFileUrl wait:(BOOL)wait;

+ (NSString *)getDeviceResolution:(BOOL)includeDeviceName;    // get the device resolution e.g. 'iPhone Retina 3.5", iPhone Retina 4", iPad Standard...'
// if includeDeviceName  FALSE returns 'Retina 3.5", Retina 4", Standard...' without device name
+ (NSString *)getScreenResolution;   // get the screen resolution details
+ (BOOL)isMirroringSupported;        // is mirroring supported and active.  TRUE = yes and active, FALSE - no
// END OF NEW

// NEW in version 2.0
+ (NSString *)getCPUUsageAsStr;        // CPU usage in string format
+ (NSString *)getCPUTimeCurrentThreadAsStr;  // CPU time for current thread in string format
+ (NSString *)getCPUTimeAllThreadsAsStr;     // CPU time for all threads in string format

// new in version 4.1
+ (NSString *)getDNSServers;         // get DNS Servers information
// end of new in version 4.1

+ (NSString *)getSSIDForWifi;            // get the WiFi SSID (network name)
+ (NSString *)getBSSIDForWifi;         // get the WiFi BSSID
+ (NSString *)getNetworkNameForWifi;   // get the WiFi network name (SSID)

+ (NSString *)getTxStr;                   // get network bytes sent as string
+ (NSString *)getNetworkTxStr;    // get network bytes sent as string
+ (NSString *)getRxStr;                   // get network bytes received as string
+ (NSString *)getNetworkRxStr;    // get network bytes received as string

+ (u_long)getNetworkTx;                // get network Tx bytes sent
+ (u_long)getNetworkBytesTransmitted;  // get network bytes sent
+ (u_long)getNetworkRx;                // get network Rx bytes received
+ (u_long)getNetworkBytesReceived;     // get network bytes received
// END OF NEW

+ (NSString *)getSystemUptime;    // system uptime in days, hours, minutes e.g. 1d 0h 7min

+ (NSString *)getProcessorInfo;   // procssor information including number of processors and number of processors active
+ (NSString *)getCPUFrequency;    // processor CPU speed (MHz)
+ (NSString *)getBusFrequency;    // processor BUS speed (MHz)

+ (NSString *)getAccessoryInfo;   // information on any accessories attach to the device

+ (NSString *)getCarrierInfo;     // phone carrier information including carrier name, carrier country and whether VOIP is allowed  
+ (NSString *)getCarrierName;     // phone carrier name
+ (NSString *)getCarrierMobileCountryCode;  // phone carrier mobile country code
+ (NSString *)getCarrierISOCountryCode;     // phone carrier ISO country code
+ (NSString *)getCarrierMobileNetworkCode;  // phone carrier mobile network code
+ (BOOL)doesCarrierAllowVOIP;     // whether phone carrier allows VOIP (Voice over IP)
+ (NSString * )getMCC_country:(NSString *)carrierMobileCountryCode;  // mobile country for mobile country code
+ (NSString *)getCountry:(NSString *)_countryCode;  // country for country code

+ (NSString *)getBatteryLevelInfo;  // battery level information including percent charges and whether plugged in and charging
+ (float)getBatteryLevel;           // battery level percentage charged

+ (NSString *)getUniqueIdentifier;  // unique identifier for the device

+ (NSString *)getModel;             // model of the device
+ (NSString *)getName;              // name identifying the device
+ (NSString *)getSystemName;        // name the operating system (OS) running on the device
+ (NSString *)getSystemVersion;     // current version of the operating system (OS)

+ (NSString *)getDeviceType;        // device type e.g. 'iPhone4,1' for 'iPhone 4' and 'iPad3,3' and 'New iPad'
+ (NSString *)getRealDeviceType;    // real device type e.g. 'iPhone4,1' real device type is 'iPhone 4'
+ (NSString *)getDeviceTypeAndReal; // device type and real device type e.g. 'iPhone 4,1 iPhone 4'

+ (BOOL)onWifiNetwork;               // Determine if on Wifi network.  TRUE - yes, FALSE - no
+ (BOOL)on3GNetwork;                 // Determine if on a 3G (or 4G) network,  TRUE - yes, FALSE - no
+ (NSMutableArray *)getMacAddresses; // MAC (Media Access Control) addresses    
+ (NSString *)getCellAddress;        // Cell phone IP address (on 4G, 3G etc. network.  Note: getMacAddresses must be called beore getCellAddress)
+ (NSString *)getIPAddress;          // Device IP address on 
+ (NSString *)getIPAddressForWifi;   // IP address for Wifi
+ (NSString *)getNetmaskForWifi;     // Network mask for Wifi
+ (NSString *)getBroadcastForWifi;   // Boardcast IP address or Wifi

+ (NSMutableArray *)getAppLog:(NSString *)_name verbose:(BOOL)_verbose;  // Application log for a specific application

+ (NSMutableArray *)getProcessInfo;   // Process information including PID (process ID), process name, PPID (paren process ID) and status
+ (int)getParentPID:(int)pid;         // PID (parent ID) for a PID (process ID)

+ (NSString *)getDiskSpace;           // Total disk space formatted
+ (NSString *)getFreeDiskSpace;       // Free disk space formatted
+ (NSString *)getFreeDiskSpaceAndPct; // Free disk and percent disk free formatted
+ (NSString *)getFreeDiskSpacePct;    // Disk space free percentage formatted
+ (NSString *)getFreeMemoryAndPct;    // Free memory and percent memory free formatted
+ (NSString *)getUsedMemoryPct;       // Used memory percentage formatted
+ (long long)getlDiskSpace;           // Total disk space
+ (long long)getlFreeDiskSpace;       // Free disk space

+ (double)getFreeMemory;              // Free memory
+ (double)getTotalMemory;             // Total memory
+ (double)getUsedMemory;              // Used memory
+ (double)getAvailableMemory;         // Available memory
+ (double)getActiveMemory;            // Active memory (used by running apps)
+ (double)getInActiveMemory;          // Inactive memory (recently used by apps no loger running)
+ (double)getWiredMemory;             // Wired memory (used by OS)
+ (double)getPurgableMemory;          // Puragable memory (can be freed)

+ (BOOL)isRunningIPad;                // Determine if device running iPad.  TRUE - running iPad, FALSE running iPhone, iPod Touch, ...
+ (BOOL)isIPhone;                     // Determine if device is an iPhone
+ (BOOL)isIPhone4;                    // Determine if device running is an iPhone 4
+ (BOOL)doesSupportMultitasking;      // Determine if device supports multitasking. TRUE - yes, FALSE - no
+ (BOOL)isProximitySensorAvailable;   // Determine if proximity sensor is available for the device.   TRUE - yes, FALSE - no

// utility method for loading country codes
+ (void)loadCodes;

+ (NSString *)formatBytes:(int)_number;
+ (NSString *)formatBytes2:(long long)_number;
+ (NSString *)formatBytes3:(u_long)_number;
+ (NSString *)formatDBytes:(double)_number;
+ (NSString *)formatNumber:(int)_number;
+ (NSString *)formatNumber2:(unsigned long long)_number;
+ (NSString *)formatNumber3:(unsigned long)_number;
+ (NSTimeInterval)uptime:(NSNumber **)days hours:(NSNumber **)hours mins:(NSNumber **)mins;

+ (NSString *)broadcastAddressForAddress:(NSString *)ipAddress withMask:(NSString *)netmask;
+ (NSString *)ipAddressForInterface:(NSString *)ifName;
+ (NSString *)ipAddressForWifi;
+ (NSString *)netmaskForInterface:(NSString *)ifName;
+ (NSString *)netmaskForWifi;
3 licenses, starting from From » $19.99 View Licenses

Get A Quote

What do you need?
  • Custom development
  • Integration
  • Customization / Reskinning
  • Consultation
When do you need it?
  • Soon
  • Next week
  • Next month
  • Anytime

Thanks for getting in touch!

Your quote details have been received and we'll get back to you soon.


Or enter your name and Email
  • UB Ulas Bilgenoglu 3 months ago
    Is it possible to get per application network usage with this library?
  • JP Jim Pickrell 6 months ago
    Does this give cpu speed? I have found in my own programming that the normal calls that should give you the cpu speed, don't work correctly. For some reason Apple doesn't want people to get the cpu speed. Does this product, with the latest iOS and Xcode, give the correct CPU speed? If it does, I will buy it. Thanks!
    • Thomas A. Markel Publisher 4 months ago
      use [SystemUtilities getCPUFrequency]. It turns out iOS has disabled getting the CPU frequency as not returns -1 So there is currently no way to get cpu speed!
  • Y Yikai 7 months ago
    will this tool measure real-time cpu frequency? I mean if iOS under clock the cpu frequency and the real-time frequency can be obtained with the tool.
    • Thomas A. Markel Publisher 4 months ago
      use [SystemUtilities getCPUFrequency] It turns out iOS has disabled getting the CPU frequency as not returns -1 So there is currently no way to get cpu frequency!