Class: DeviceAPI::IOS::Device

Inherits:
Device
  • Object
show all
Defined in:
lib/device_api/ios/device.rb

Overview

Namespace for the Device object.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Device

Returns a new instance of Device.



20
21
22
23
24
# File 'lib/device_api/ios/device.rb', line 20

def initialize(options = {})
  @qualifier = options[:qualifier]
  @serial = options[:serial] || options[:qualifier]
  @state = options[:state]
end

Instance Attribute Details

#qualifierObject

Returns the value of attribute qualifier.



15
16
17
# File 'lib/device_api/ios/device.rb', line 15

def qualifier
  @qualifier
end

Class Method Details

.create(options = {}) ⇒ Object



16
17
18
# File 'lib/device_api/ios/device.rb', line 16

def self.create options = {}
  self.new(options)
end

Instance Method Details

#device_classString

Return the device class - i.e. iPad, iPhone, etc

Returns:

  • (String)

    iOS device class



56
57
58
# File 'lib/device_api/ios/device.rb', line 56

def device_class
  get_prop('DeviceClass')
end

#imeiString

Get the IMEI number of the device

Returns:

  • (String)

    IMEI number of current device



68
69
70
# File 'lib/device_api/ios/device.rb', line 68

def imei
  get_prop('InternationalMobileEquipmentIdentity')
end

#install(ipa) ⇒ Boolean, Exception

Install a specified IPA

Parameters:

  • ipa (String)

    string containing path to the IPA to install

Returns:

  • (Boolean, Exception)

    true when the IPA installed successfully, otherwise an error is raised



93
94
95
96
97
98
99
100
# File 'lib/device_api/ios/device.rb', line 93

def install(ipa)
  fail StandardError, 'No IPA or app specified.', caller if ipa.empty?

  res = install_ipa(ipa)

  fail StandardError, res, caller unless res
  true
end

#ip_addressString

Get the IP Address from the device

Returns:

  • (String)

    IP Address of current device



80
81
82
# File 'lib/device_api/ios/device.rb', line 80

def ip_address
  IPAddress.address(serial)
end

#list_installed_packagesObject



122
123
124
# File 'lib/device_api/ios/device.rb', line 122

def list_installed_packages
  IDeviceInstaller.list_installed_packages(serial)
end

#modelString

Look up device model using the ios-devices gem - changing ‘iPad4,7’ to ‘iPad mini 3’

Returns:

  • (String)

    human readable model and version (where applicable)



44
45
46
# File 'lib/device_api/ios/device.rb', line 44

def model
  Ios::Devices.search(get_prop('ProductType')).name
end

#nameString

Look up device name - i.e. Bob’s iPhone

Returns:

  • (String)

    iOS device name



38
39
40
# File 'lib/device_api/ios/device.rb', line 38

def name
  IDeviceName.name(serial)
end

#rebootObject

Reboot the device



127
128
129
# File 'lib/device_api/ios/device.rb', line 127

def reboot
  restart
end

#restartObject



131
132
133
# File 'lib/device_api/ios/device.rb', line 131

def restart
  IDeviceDiagnostics.restart(serial)
end

#screenshot(args = {}) ⇒ Object

Capture screenshot on device



61
62
63
64
# File 'lib/device_api/ios/device.rb', line 61

def screenshot(args = {})
  args[:device_id] = serial
  IDeviceScreenshot.capture(args)
end

#statusString

Mapping of device status - used to provide a consistent status across platforms

Returns:

  • (String)

    common status string



28
29
30
31
32
33
34
# File 'lib/device_api/ios/device.rb', line 28

def status
  {
      'device' => :ok,
      'no device' => :dead,
      'offline' => :offline
  }[@state]
end

#trusted?Boolean

Has the ‘Trust this device’ dialog been accepted?

Returns:

  • (Boolean)

    true if the device is trusted, otherwise false



74
75
76
# File 'lib/device_api/ios/device.rb', line 74

def trusted?
  IDevice.trusted?(serial)
end

#typeSymbol

Return whether or not the device is a tablet or mobile

Returns:

  • (Symbol)

    :tablet or :mobile depending on device_class



114
115
116
117
118
119
120
# File 'lib/device_api/ios/device.rb', line 114

def type
  if device_class.downcase == 'ipad'
    :tablet
  else
    :mobile
  end
end

#uninstall(package_name) ⇒ Boolean, Exception

Uninstall a specified package

Parameters:

  • package_name (String)

    string containing name of package to uninstall

Returns:

  • (Boolean, Exception)

    true when the package is uninstalled successfully, otherwise an error is raised



105
106
107
108
109
110
# File 'lib/device_api/ios/device.rb', line 105

def uninstall(package_name)
  res = uninstall_package(package_name)

  fail StandardError, res, caller unless res
  true
end

#versionString

Returns the devices iOS version number - i.e. 8.2

Returns:

  • (String)

    iOS version number



50
51
52
# File 'lib/device_api/ios/device.rb', line 50

def version
  get_prop('ProductVersion')
end

#wifi_mac_addressString

Get the Wifi Mac address for the current device

Returns:

  • (String)

    Mac address of current device



86
87
88
# File 'lib/device_api/ios/device.rb', line 86

def wifi_mac_address
  get_prop('WiFiAddress')
end