Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Ice Touch offers C++ and Objective-C SDKs for building iOS and Cocoa applications. Ice Touch also includes an Objective-C run time for use in OS X applications applications.

The Ice Touch distribution does not include any Ice services, but its support for the complete Ice protocol means that your Ice Touch applications can work seamlessly with existing Ice servers as well as Ice services such as IceGrid, Glacier2, and IceStorm.

...

Ice Touch is based on the Ice 3.5.0 release. As a result, it supports the following new features:

  • A new 1.1 encoding.
  • A new "compact" encoding for Slice classes and exceptions.
  • Slice class compact IDs.
  • Optional data members in classes and exceptions, and optional parameters in operations.
  • Slice enumerators can now be assigned arbitrary values.
  • IceMX metrics support.
  • C++ 11 support (for iOS 5 and later).

For more information on these features and related upgrade instructions see the 1 release. For more information see the Ice 3.5.0 1 Release Notes.

Changes and fixes in Ice Touch 1.3.

...

3

  • Ice Touch now requires Xcode 4. 6.
  • Updated Ice Touch to support iOS Xcode 6.
  • Added client side libraries for IceStorm and IceGrid.
  • Added support for ARC (Automatic Reference Counting).
  • Added support for the local interfaces Ice::ConnectionInfo and Ice::EndpointInfo in Objective-C.
  • Added support for implicit contexts.
  • 0
  • Updated Ice Touch to support iOS 8.0

  • Fixed a bug where servers wouldn't be able to accept new connections after the application was put in the backgroundThe Glacier2 module prefix is now GLACIER2 for consistency with the Ice module prefix.

 

Ztop

Corresponding Ice release

The Slice definitions included in Ice Touch 1.3 are the same as the Slice definitions included in Ice 3.5.01. In particular, the Glacier2, IceGrid, and IceStorm client libraries included in this Ice Touch release use the Ice 3.5.0 1 definitions. If a future Ice release adds new APIs (such as a new operation, or a new interface) to one of these services, you will need to rebuild these libraries using the newer Slice definitions in order to use the new APIs.

Ztop

Deprecated features in Ice Touch 1.3.0

For OS X and Cocoa, the Ice Touch run time is no longer built with garbage collection support. The use of automatic reference counting (ARC) is now preferred over garbage collection. If you need garbage collection for your Ice Touch OS X applications, you will need to build Ice Touch from source.

Upgrading your application from previous Ice Touch versions

...

  • /Library/Developer/IceTouch-1.3/SDKs/ObjC/$(PLATFORM_NAME).sdk for the Objective-C SDK
  • /Library/Developer/IceTouch-1.3/SDKs/Cpp/$(PLATFORM_NAME).sdk for the C++ SDK

You also need to update the project setting "Header Search Paths" to include the Ice Touch SDK include directory.

  • /Library/Developer/IceTouch-1.3/SDKs/ObjC/$(PLATFORM_NAME).sdk/usr/local/include for the Objective-C SDK
  • /Library/Developer/IceTouch-1.3/SDKs/Cpp/$(PLATFORM_NAME).sdk/usr/local/include for the C++ SDK.

If you're not using the Cocoa or iOS SDKs but rather the command-line SDK, you will need to update the "Ice Home" setting.

...

The command line SDK is installed in in /Library/Developer/IceTouch-1.3. The install name of the Ice Touch shared libraries is prefixed with with @rpath/. You will need to change your build system accordingly. Specifically, you will need to link your executable with -Wl,-rpath,/Library/Developer/IceTouch-1.3/lib if you want the Ice Touch shared libraries to be located without having having DYLD_LIBRARY_PATH set.

Ztop

...

The Ice run time creates an NSAutoReleasePool object before dispatching server-side invocations and client-side AMI callbacks. The pool is released once the dispatch is complete.

Ztop
Anchor
accessoryaccessory

Accessory transport

The accessory transport enables Ice Touch clients running on an iOS device to communicate with accessories connected either via Bluetooth or USB.

This transport is built on top of the iPhone OS External Accessory framework. In order to use it, proxies must use the following endpoint syntax:

accessory [-p PROTOCOL] [-n NAME] [-m MANUFACTURER] [-o MODELNUMBER]

For example, to invoke on a proxy for the hello object running on an accessory that implements the com.zeroc.helloWorld protocol, use the following stringified proxy:

hello:accessory -p com.zeroc.helloWorld

If the -p option is omitted, the transport will look up an accessory that supports the com.zeroc.ice protocol by default. This protocol string is application-defined and must match the protocol string that the accessory advertises.

In order to enable the accessory transport, Ice Touch applications must add properties to the Ice communicator initialization property set using the ICEConfigureAccessoryTransport method.

For example:

Wiki Markup
{zcode:objc}
ICEInitializationData* initData = [ICEInitializationData initializationData];
initData.properties = [ICEUtil createProperties];
ICEConfigureAccessoryTransport(initData.properties);
communicator = [[ICEUtil createCommunicator:initData] retain];
{zcode}

This call will add the required properties and ensure that the accessory transport is linked in with your application. The project for your application will need to include the ExternalAccessory framework as well.

To specify that your application supports a given accessory protocol, you need to set UISupportedExternalAccessoryProtocols in your project Info.plist file as demonstrated below:

Wiki Markup
{zcode:xml}
<key>UISupportedExternalAccessoryProtocols</key>
<array>
<string>com.zeroc.helloWorld</string>
</array>
{zcode}

The iPhone hello world demo from the demo/iPhone/hello directory demonstrates how to configure the accessory transport.

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 demo/iPhone/voip provides a demonstration of these stepsIn order to use the Ice Touch accessory transport, your accessory must also support running an Ice server that is capable of receiving Ice requests from Ice Touch over USB or Bluetooth. We can assist you with the implementation of the Ice server-side transport for your accessory. For more information on this, please contact us at info@zeroc.com.

Ztop

Targeting iOS >=

...

5.1.

...

1

Xcode 4. 6 targets iOS 6 8 by default. To build your application for an iOS >= 45.1.3 1 target, you will need to modify your Xcode project as follows:

  • Set the Xcode Deployment Target property to the desired iOS version.

Ztop