Ice Touch 3.6.1 Feature Set

On this page:

Comparing Ice Touch and Ice

Ice Touch 3.6.1 is based on the Ice 3.6.1 release. See the Ice 3.6.1 Release Notes for more information on Ice.

Ice Touch and Ice provide the same API and implement the same Ice protocol. Here is a brief comparison of these two products:

FeatureIce TouchIce
C++, Objective-C(tick)(tick)
Java, JavaScript, PHP, Python, Ruby(error)(tick)
Ice transports: tcp, ssl, ws, wss, udp(tick)(tick)
Client libraries for IceGrid, IceStorm and Glacier2(tick)(tick)
Ice services (IceGrid, IceStorm etc.)(error)(tick)
Develop on OS X(tick)(tick)
Develop with Xcode and Ice Builder(tick)(tick)
Target OS X(tick)(tick)
Target iOS(tick)(error)
Static libraries(tick)(error)
Dynamic libraries(error)(tick)

Ice Touch language mappings

Ice Touch supports the following mappings:

Ice Touch limitations

Ice Touch currently lacks support for the Ice::Application and Ice::Service helper classes.

Ice Touch has limited support for:

  • SSL

    Ice Touch for OS X uses the Ice for C++ SSL protocol plug-in based on OS X Secure Transport. For iOS devices, Ice Touch SSL provides only a subset of this functionality. Ice Touch servers on iOS cannot authenticate SSL clients for instance. The IceSSL property reference provides complete details.

  • UDP
    On iOS, UDP requests do not transparently establish a cellular connection. 

Support for Ice Touch background applications

IceTouch supports VoIP applications as documented in Executing Code in the Background.

Follow these steps to ensure your application is correctly configured:

  • Add the voip flag to the UIBackgroundModes key of your application's Info.plist.
  • Set the configuration property Ice.Voip to 1 in your communicator configuration properties. As described in the Configuring Sockets for VoIP Usage, this causes the Ice run time to set the kCFStreamNetworkServiceType property to kCFStreamNetworkServiceTypeVoIP for all sockets.
  • Before moving your application to the background, call the setKeepAliveTimeout:handler: method to specify the frequency at which your application must be woken to maintain your service.

The sample application objective-c/IceTouch/iPhone/voip provides a demonstration of these steps.