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:
Feature | Ice Touch | Ice |
---|---|---|
C++, Objective-C | ||
Java, JavaScript, PHP, Python, Ruby | ||
Ice transports: tcp, ssl, udp | ||
Client libraries for IceGrid, IceStorm and Glacier2 | ||
Ice services (IceGrid, IceStorm etc.) | ||
Develop on OS X | ||
Develop with Xcode and Ice Builder | ||
Target OS X | ||
Target iOS | ||
Static libraries | ||
Dynamic libraries |
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 theUIBackgroundModes
key of your application'sInfo.plist
.
- Set the configuration property
Ice.Voip
to1
in your communicator configuration properties. As described in the Configuring Sockets for VoIP Usage, this causes the Ice run time to set thekCFStreamNetworkServiceType
property tokCFStreamNetworkServiceTypeVoIP
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.