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
- Royalty FREE
UI & UX
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.
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.
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.
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).
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.
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".
|remoteScreenSessionDidEnd:||Sent when the remote session ends, either because of the user disconnecting, or because of a connection error.|
|server||Sets or gets the server.|
|delegate||Object to receive the session-ended notification.|
|alias||A human-readable server name|
|host||Which display on the remote machine should the connection be established to|
|password||The host name, or IP address|
|port||The server VNC password|
|display||Bits per frame buffer pixel|
|pixelDepth||The server VNC port|
|viewOnly||If user input should be sent to the server|
|isMac||If 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:
Create a RemoteScreenViewController class instance:
1 2 3 4
NSString* nibName = [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone ? @"RemoteScreenViewController_iPhone" : @"RemoteScreenViewController_iPad"; 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.