abto VNC Viewer for iOS SDK

Using ABTO’s VNC viewer for iOS SDK, users can access a remote computer (via the Internet or LAN) on a iPhone or iPad device from any location to view the desktop, change settings and work with documents and files.
VNC viewer for iOS SDK supports integration into all objective-c applications written for iOS 4.3 and up, with or without ARC.
VNC Viewer for iOS SDK can connect to any Mac or PC desktop computer with a running VNC server. It’s a truly compact, top-notch solution designed to simplify the workflow and increase its efficiency dramatically. Enjoy multiple configuration options delivered by our iOS VNC remote desktop viewer!

Here is a list of the main features of ABTO’s VNC viewer for iOS SDK:

  • Remote access
  • Configurable server list
  • Allows to choose which server display to connect to
  • Configurable screen color mode (8, 16, 32 bit)
  • Allows to send text and key combinations
  • Comfortable text entry
  • Provides easy access to common modifier and non-character keys
  • Screen zoom and pan
  • Three-button mouse emulation with dragging support
  • Allows to save the screen to Photos
  • Blazing fast and responsive
  • Samples
  • Royalty FREE


After a connection with the server is established you will be presented with the view of the remote desktop’s screen. Note that when connecting to a Mac with multiple user accounts, you will first have to go through the login screen.
If the remote screen is larger than the mobile device one, you can move the visible area by panning and zoom in / out by pinching.
The bottom of the screen contains the main toolbar that provides a comfortable spot to access the viewer’s features.

abto VNC iOS connection interface

Pic 1. Toolbar

Tapping  will end the current remote screen session.

Tapping  enables mouse emulation mode. In this mode, the toolbar is replaced by the mouse toolbar (Pic. 2), and taps on the screen only send the mouse location to the server (instead of location and left click). Clicks are now sent by tapping one of [Left] / [Middle] / [Right] buttons on the toolbar. The [Hold] button toggles mouse button hold mode. In this mode, tapping a mouse button once sends a button down message to the server – tapping it again sends a button up. This, combined with the screen lock mode, allow for dragging while holding down any number of mouse buttons. Tap  to exit mouse emulation mode.

abto VNC iOS Mouse toolbar interface

Pic 2. Mouse toolbar

Tapping  brings up the keyboard (Pic.3). It provides the set of character keys, plus a set of common modifier and non-character keys on an extended keyboard over the main one. Tapping a modifier key once, sends a key down message to the server – tapping it again sends a key up. This way you can comfortably send any combination of keys (and mouse buttons). To type in a non-English language, change the input language on the remote computer.

Remote desktop VNC client for iOS - Main and extended keyboards

Pic 3. Main and extended keyboards

Tapping  enables screen lock mode. In this mode you can no longer move the screen or zoom – all touches are directly mapped to the mouse location and sent to the server. This allows for comfortable left mouse button dragging – touch the screen to start, move while your finger is down to drag, let go to stop. Note that in mouse emulation mode, only the mouse location is sent to the server. Tap  to exit screen lock mode.

Tapping  will save remote desktop screen to Photos (Pic.4).

Remote desktop VNC client for iOS -  Successful screenshot

Pic 4. Successful screenshot

Tapping  will hide the toolbar (Pic. 5). The toolbar is half-transparent by default, but in some cases it may be desirable free up as much of the mobile device screen real estate as possible. Tap  to restore it.

Remote desktop VNC client for iOS with Hidden toolbar

Pic 5. Hidden toolbar

SDK contents

The project consists of two parts:

  • The SDK with a linkable static library, headers and all the required resources.
  • A sample project.


  • libRemoteScreenViewer.a – ABTO’s VNC viewer for iOS SDK universal (simulator & device) static library.
  • Localizable.strings – the English localization of strings used in the SDK.
  • include/ – import header directory
  • sprites/ – image resources directory
  • xibs/ – UI resource directory


  • Drag the RemoteScreenViewerSDK/ folder into your Xcode project. You may want to merge the supplied Localizable.strings file with your own.
  • Open the "Build Phases" tab and add libRemoteScreenViewer.a and libz.dylib to "Link Binary With Libraries".
  • Open the "Build Properties" tab and add -ObjC to "Other Linker Flags".

SDK classes


remoteScreenSessionDidEnd:Sent when the remote session ends, either because of the user disconnecting, or because of a connection error.


serverSets or gets the server.
delegateObject to receive the session-ended notification.


aliasA human-readable server name
hostWhich display on the remote machine should the connection be established to
passwordThe host name, or IP address
portThe server VNC password
displayBits per frame buffer pixel
pixelDepthThe server VNC port
viewOnlyIf user input should be sent to the server
isMacIf the server is running on a Mac (affects shown modifier keys)
InitWithManagedObject:password:Initializes the server using a Core Data managed object. The backing entity format is provided below. The password is a separate argument as having it saved in the store may not be the desired behavior in all cases.

When creating a server using a Core Data managed object, the entity backing it up should have the following attributes:

displayInteger 32
pixelDepthInteger 32
portInteger 32


Create a RemoteScreenViewController class instance:

NSString* nibName = [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone ?
@"RemoteScreenViewController_iPhone" :
RemoteScreenViewController *controller = [[[RemoteScreenViewController alloc] initWithNibName:nibName bundle:nil] autorelease];

When creating a Server class instance you have a choice to either manually fill out all the required properties, or use a Core Data managed object.

controller.server = [[[Server alloc] initWithManagedObject:managedObject password:password] autorelease];

The controller sends the remoteScreenSessionDidEnd message to its delegate to indicate that the connection is closed, either because the user requested it, or because of a connection error. In response, you should, for example, push it off the navigation stack. The connection is already closed when this event occurs and it’s not cancelable.

controller.delegate = self;

Your remote screen view controller is ready. Now you can, for example, push it onto the navigation stack:

[self.navigationController pushViewController:controller animated:YES];


If you have any remaining questions, be sure to check out the supplied sample project for a working example, or contact our support for additional info.

Leave a Reply

Be the First to Comment!