class Spaceship::Portal::Device
Represents a device from the Apple Developer Portal
Attributes
@return (String
) The ID given from the developer portal. You'll probably not need it. @example
"XJXGVS46MW"
@return (String
) Model (can be nil) @example
'iPhone 6', 'iPhone 4 GSM'
@return (String
) The name of the device, must be 50 characters or less. @example
"Felix Krause's iPhone 6"
@return (String
) The platform of the device. This is probably always “ios” @example
"ios"
@return (String
) Status of the device. “c” for enabled devices, “r” for disabled devices. @example
"c"
@return (String
) The UDID of the device @example
"4c24a7ee5caaa4847f49aaab2d87483053f53b65"
Private Class Methods
@param mac [Bool] Fetches Mac devices if true @param include_disabled [Bool] Whether to include disable devices. false by default. @return (Array
) Returns all devices registered for this account
# File spaceship/lib/spaceship/portal/device.rb, line 60 def all(mac: false, include_disabled: false) client.devices(mac: mac, include_disabled: include_disabled).map { |device| self.factory(device) } end
@return (Array
) Returns all Apple TVs registered for this account
# File spaceship/lib/spaceship/portal/device.rb, line 65 def all_apple_tvs client.devices_by_class('tvOS').map { |device| self.factory(device) } end
@return (Array
) Returns all devices matching the provided profile_type
# File spaceship/lib/spaceship/portal/device.rb, line 100 def all_for_profile_type(profile_type) if profile_type.include?("tvOS") Spaceship::Portal::Device.all_apple_tvs elsif profile_type.include?("Mac") Spaceship::Portal::Device.all_macs else Spaceship::Portal::Device.all_ios_profile_devices end end
@return (Array
) Returns all devices that can be used for iOS profiles (all devices except TVs)
# File spaceship/lib/spaceship/portal/device.rb, line 95 def all_ios_profile_devices all.reject { |device| device.device_type == "tvOS" } end
@return (Array
) Returns all iPads registered for this account
# File spaceship/lib/spaceship/portal/device.rb, line 75 def all_ipads client.devices_by_class('ipad').map { |device| self.factory(device) } end
@return (Array
) Returns all iPhones registered for this account
# File spaceship/lib/spaceship/portal/device.rb, line 80 def all_iphones client.devices_by_class('iphone').map { |device| self.factory(device) } end
@return (Array
) Returns all iPods registered for this account
# File spaceship/lib/spaceship/portal/device.rb, line 85 def all_ipod_touches client.devices_by_class('ipod').map { |device| self.factory(device) } end
@return (Array
) Returns all Macs registered for this account
# File spaceship/lib/spaceship/portal/device.rb, line 90 def all_macs all(mac: true) end
@return (Array
) Returns all Watches registered for this account
# File spaceship/lib/spaceship/portal/device.rb, line 70 def all_watches client.devices_by_class('watch').map { |device| self.factory(device) } end
Register a new device to this account @param name (String
) (required): The name of the new device @param udid (String
) (required): The UDID of the new device @param mac (Bool) (optional): Pass Mac if device is a Mac @example
Spaceship.device.create!(name: "Felix Krause's iPhone 6", udid: "4c24a7ee5caaa4847f49aaab2d87483053f53b65")
@return (Device
): The newly created device
# File spaceship/lib/spaceship/portal/device.rb, line 145 def create!(name: nil, udid: nil, mac: false) # Check whether the user has passed in a UDID and a name unless udid && name raise "You cannot create a device without a device_id (UDID) and name" end raise "Device name must be 50 characters or less. \"#{name}\" has a #{name.length} character length." if name.length > 50 # Find the device by UDID, raise an exception if it already exists existing = self.find_by_udid(udid, mac: mac) return existing if existing # It is valid to have the same name for multiple devices device = client.create_device!(name, udid, mac: mac) # Update self with the new device self.new(device) end
@param mac [Bool] Searches for Macs if true @param include_disabled [Bool] Whether to include disable devices. false by default. @return (Device
) Find a device based on the ID of the device. Attention:
This is *not* the UDID. nil if no device was found.
# File spaceship/lib/spaceship/portal/device.rb, line 114 def find(device_id, mac: false, include_disabled: false) all(mac: mac, include_disabled: include_disabled).find do |device| device.id == device_id end end
@param mac [Bool] Searches for Macs if true @param include_disabled [Bool] Whether to include disable devices. false by default. @return (Device
) Find a device based on its name. nil if no device was found.
# File spaceship/lib/spaceship/portal/device.rb, line 132 def find_by_name(device_name, mac: false, include_disabled: false) all(mac: mac, include_disabled: include_disabled).find do |device| device.name == device_name end end
@param mac [Bool] Searches for Macs if true @param include_disabled [Bool] Whether to include disable devices. false by default. @return (Device
) Find a device based on the UDID of the device. nil if no device was found.
# File spaceship/lib/spaceship/portal/device.rb, line 123 def find_by_udid(device_udid, mac: false, include_disabled: false) all(mac: mac, include_disabled: include_disabled).find do |device| device.udid.casecmp(device_udid) == 0 end end
Private Instance Methods
Disable current device. This will invalidate all provisioning profiles that use this device.
# File spaceship/lib/spaceship/portal/device.rb, line 182 def disable! if enabled? client.disable_device!(self.id, self.udid, mac: self.platform == 'mac') # disable request doesn't return device json, so we assume that the new status is "r" if response succeeded self.status = "r" end end
# File spaceship/lib/spaceship/portal/device.rb, line 169 def disabled? return self.status == "r" end
Enable current device.
# File spaceship/lib/spaceship/portal/device.rb, line 174 def enable! unless enabled? attr = client.enable_device!(self.id, self.udid, mac: self.platform == 'mac') initialize(attr) end end
# File spaceship/lib/spaceship/portal/device.rb, line 165 def enabled? return self.status == "c" end