DeviceServiceDelegate allows your app to respond to each step of the connection and pairing processes, if needed. By default, a DeviceService’s ConnectableDevice is set as the delegate. Changing a DeviceService’s delegate will break the normal operation of Connect SDK and is discouraged. ConnectableDeviceDelegate provides proxy methods for all of the methods listed here.


- (void) deviceServiceConnectionRequired:(DeviceService *)service

If the DeviceService requires an active connection (websocket, pairing, etc) this method will be called.


  • service – DeviceService that requires connection
- (void) deviceServiceConnectionSuccess:(DeviceService *)service

After the connection has been successfully established, and after pairing (if applicable), this method will be called.


  • service – DeviceService that was successfully connected
- (void) deviceService:(DeviceService *)service capabilitiesAdded:(NSArray *)added removed:(NSArray *)removed

There are situations in which a DeviceService will update the capabilities it supports and propagate these changes to the DeviceService. Such situations include:

  • on discovery, DIALService will reach out to detect if certain apps are installed
  • on discovery, certain DeviceServices need to reach out for & region information

For more information on this particular method, see ConnectableDeviceDelegate’s connectableDevice:capabilitiesAdded:removed: method.


  • service – DeviceService that has experienced a change in capabilities
  • capabilitiesAdded: added – NSArray of capabilities that are new to the DeviceService
  • removed: removed – NSArray of capabilities that the DeviceService has lost
- (void) deviceService:(DeviceService *)service disconnectedWithError:(NSError *)error

This method will be called on any disconnection. If error is nil, then the connection was clean and likely triggered by the responsible DiscoveryProvider or by the user.


  • service – DeviceService that disconnected
  • disconnectedWithError: error – NSError with a description of any errors causing the disconnect. If this value is nil, then the disconnect was clean/expected.
- (void) deviceService:(DeviceService *)service didFailConnectWithError:(NSError *)error

Will be called if the DeviceService fails to establish a connection.


  • service – DeviceService which has failed to connect
  • didFailConnectWithError: error – NSError with a description of the failure
- (void) deviceService:(DeviceService *)service pairingRequiredOfType:(DeviceServicePairingType)pairingType withData:(id)pairingData

If the DeviceService requires pairing, valuable data will be passed to the delegate via this method.


  • service – DeviceService that requires pairing
  • pairingRequiredOfType: pairingType – DeviceServicePairingType that the DeviceService requires
  • withData: pairingData – Any object/data that might be required for the pairing process, will usually be nil
- (void) deviceServicePairingSuccess:(DeviceService *)service


  • service
- (void) deviceService:(DeviceService *)service pairingFailedWithError:(NSError *)error

If there is any error in pairing, this method will be called.


  • service – DeviceService that has failed to complete pairing
  • pairingFailedWithError: error – NSError with a description of the failure