class DeviceAPI::IOS::IDevice

Namespace for all methods encapsulating idevice calls

Public Class Methods

devices() click to toggle source

Returns an array of hashes representing connected devices @return (Array) Hash containing serial and device name

# File lib/device_api/ios/idevice.rb, line 12
def self.devices
  result = execute_with_timeout_and_retry('idevice_id -l')

  raise IDeviceCommandError.new(result.stderr) if result.exit != 0

  lines = result.stdout.split("\n")
  results = {}

  lines.each do |ln|
    if /[0-9a-zA-Z].*/.match(ln)
      results[ln] = execute_with_timeout_and_retry("ideviceinfo -u #{ln} -k DeviceName").stdout.strip
    end
  end
  results
end
get_props(device_id) click to toggle source

Returns a Hash containing properties of the specified device using idevice_id. @param device_id uuid of the device @return (Hash) key value pair of properties

# File lib/device_api/ios/idevice.rb, line 41
def self.get_props(device_id)
  result = execute("ideviceinfo -u '#{device_id}'")

  raise IDeviceCommandError.new(result.stderr) if result.exit != 0

  result = result.stdout
  props = {}
  unless result.start_with?('Usage:')
    prop_list = result.split("\n")
    prop_list.each do |line|
      matches = line.scan(/(.*): (.*)/)
      prop_name, prop_value = matches[0]
      props[prop_name.strip] = prop_value.strip
    end
  end

  props
end
trusted?(device_id) click to toggle source

Check to see if device has trusted the computer @param device_id uuid of the device @return true if the device returns information to ideviceinfo, otherwise false

# File lib/device_api/ios/idevice.rb, line 31
def self.trusted?(device_id)
  result = execute("ideviceinfo -u '#{device_id}'")

  lines = result.stdout.split("\n")
  result.exit == 0 and lines.length > 0 and not lines[0].match('Usage')
end