Ice Touch 3.6.0 Release Notes

Ice Touch offers C++ and Objective-C Xcode SDKs for building iOS and OS X applications. Ice Touch 3.6.0 is based on Ice 3.6.0 and is the platform of choice if you are developing iOS apps or OS X applications with Xcode.

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, 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)

On this page:

 

New features in Ice Touch 3.6.0

This section outlines changes and improvements in this release that may affect the operation of your applications or have an impact on your source code.

Changes

  • Ice Touch is now fully in-sync with Ice:
    • The Ice Touch Objective-C mapping was moved to the ice repository.
    • The Ice Touch and Ice versions are now the same.
    • The preferred method to install Ice Touch is now through Homebrew.
  • Ice Touch is installed under /usr/local; it is no longer installed in /Library/Developer.
  • Previous versions of Ice Touch included a Xcode plug-in. This plug-in has been replaced by the Ice Builder for Xcode; this Ice Builder is a separate package independent of Ice Touch.

Support for Ice 3.6.0 features

Ice Touch 3.6.0 is based on the Ice 3.6.0 release. For more information see the Ice 3.6.0 Release Notes.

Upgrading your application from previous Ice Touch versions

Ice Touch 3.6 is not compatible with previous versions of Ice Touch. As part of your upgrade to Ice Touch 3.6, you need to recompile your Slice files and rebuild your application. 

Xcode project settings

For Xcode iOS and OS X applications, you need to update the project setting "Additional SDKs" to match the location of the new Ice Touch SDK installation. You should use:

  • /usr/local/lib/IceTouch/ObjC/$(PLATFORM_NAME).sdk for the Objective-C SDK
  • /usr/local/lib/IceTouch/Cpp/$(PLATFORM_NAME).sdk for the C++ SDK

Ice Touch feature set

Ice Touch supports the following mappings:

  • Objective-C mapping
  • C++ mapping

Ice Touch currently lacks support for Ice::Application and Ice::Service helper classes and has limited support for:

  • SSL
    See below for more information.
  • UDP
    On iOS, UDP requests do not transparently establish a cellular connection. 

SSL support

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.

Support for 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.