iOS SDK
The ASP SDK for iOS lets you embed streams from EDS cloud computers directly into your iOS app. Use it to establish remote desktop connections, forward input events, and stream audio and video between a local device and a cloud computer.
1. Release notes
Version | Release date | Updates | Known issues |
3.1.2022071802 | July 18, 2022 | 1. Added core cloud desktop functionality. 2. Added gesture zoom. 3. Enabled bidirectional copy and paste for text and images. 4. Added touch, mouse, and keyboard input. 5. Enabled bidirectional audio/video streaming. 6. Added resolution settings. 7. Implemented logging and instrumentation. | 1. Auto-reconnect not supported. 2. Regional streaming not supported. 3. Media engine replacement not supported. |
3.1.2022083010 | August 30, 2022 | 1. Added auto-reconnect. 2. Added multi-session. 3. Added support for Bluetooth headsets. 4. Added resolution switching. | |
3.2.11 | May 16, 2023 | 1. Added regional streaming. 2. Added super-resolution. 3. Added cloud-side touch. 4. Added support for cloud applications. 5. Added network redirection. |
2. ASP iOS SDK
2.1 Prerequisites
Minimum supported iOS version: 10.0
Peripheral mouse and keyboard support requires iOS 13.4 or later, as this version includes the necessary system interfaces.
2.2 Main file
Header file | Description |
ASPStreamView.h | This class encapsulates ASPEngineSDK to provide an enhanced UI component with deep ASP integration, allowing developers to quickly add ASP capabilities to their applications. 1. Provides a cloud computer view. 2. Handles user gestures, mouse, and keyboard input. 3. Supports pausing and resuming the cloud computer as the application enters the background or foreground. 4. Handles audio interruptions and resumption. |
ASPEngineSDK.h | This core API allows applications to control key ASP engine workflows, such as starting, stopping, pausing, and resuming streams; injecting input events; and receiving event notifications. |
2.3 SDK integration and usage
2.3.1 SDK integration
Second-party: Integrate SDK via Pod
1. Add the following library dependency to your Podfile: pod 'ASPEngineSDK', '3.1.2022071802'
2. Tpod environment
You only need to install tpod once.
sh <(curl http://tpm.taobao.net/taobaoSetup.sh) # This may take a while.3. In the root directory of the pod project, run the command.
tpod install --verbose # This may take a while. If it fails, delete the pods directory and run it again.
tpod update --fast-mode --build-target=Debug,Release # Update local pods.Third-party: Framework integration
1. Physical device build
asp-sdk-publish/sdk/asp-engine/ios/ASPEngineSDK/3.1.2022071802/ASPEngineSDK.framework.zip
2. Emulator package
asp-sdk-publish/sdk/asp-engine/iOS/ASPEngineSDK_Simulator/3.1.2022071803/ASPEngineSDK.framework.zip
3. The 3.1.2022071802 and 3.1.2022071803 directories are the version numbers of the generated SDK library.
4. Copy the framework from either the real device package or the simulator package to your project.
5. Link SDK
target --> Build Phases --> Link Binary With Libraries --> + --> Add Other --> Add Files --> Select the framework6. Configure embedding
target --> general --> Frameworks, Libraries, and Embedded Content --> ASPEngineSDK.framework --> Embed Without Signing2.3.2 SDK permissions
Configure the permissions required by ASPEngineSDK in your project's info.plist file.
1. Microphone permission
Privacy - Microphone Usage Description2. Camera permission
Privacy - Camera Usage Description2.3.3 SDK signature
As a dynamic library, the SDK requires code signing for on-device debugging or for publishing to the App Store.
1. Key file signing
Signing is configured in the key file, located in your demo project directory. This file is empty by default. To enable signing, add a signature ID to the file as follows:
1.1 Command Modification
In a command window, navigate to the project directory and run the following command:
echo "8AEF20DC6E0CBFF4FA852118BCDD6D507F5764ED" > KEY1.2 Modifying Manually
In the project, find the KEY file and edit it in a text editor.
2. Get signature ID
Run the following command to find the signing ID of your local certificate:
security find-identity -v -p codesigningIf you don't have the certificate installed locally, sign in to your Apple Developer Account and download the corresponding provisioning profile. After downloading the file, right-click it and select "Get Info" from the context menu. In the preview section, you will see the certificate details associated with this provisioning profile. Locate the correct certificate. The value next to "SHA-1" is the signing ID you need.
3. Signing and capabilities
Clear the signature ID in the key file, then configure the certificate for your project's target under Signing & Capabilities.
4. Add a signature shell
target --> Build Phases --> + --> New Run Script Phase --> enter the shell script content (refer to the signing example) --> under Input Files, click + and add $(SRCROOT)/KEY
Note: Position the Run Script phase below the Embed Frameworks phase.5. Signature example
set -e
SHELL_PATH="${PROJECT_DIR}/ASPDemo/Lib/ASPEngineSDK/3.1.2022063002-SNAPSHOT/ASPEngineSDK.framework/link_and_sign.sh"
while read -r line; do
exit 0
done < ${SCRIPT_INPUT_FILE_0}
echo "===> Signing using $line"
/bin/bash -c "${SHELL_PATH}"\ "${TARGET_BUILD_DIR}"\ "${FRAMEWORKS_FOLDER_PATH}"\ "${line}"2.3.4 Project configuration
Disable Bitcode
target > Build Settings > Build Options > Enable Bitcode: No2.3.5 SDK core API examples
- (void)viewDidLoad {
[super viewDidLoad];
// Set the log callback. SDK logs are output through this callback.
[ASPStreamView setASPEngineLogDelegate:[ASPDemoLog sharedInstance]];
// Create an instance and start a connection to the cloud desktop.
ASPStreamView* streamView = [ASPStreamView buildStreamView];
[streamView setASPEngineDelegate:self];
if (self.connParam.connTicket) {
ASPConnTicket* ticketParam = [[ASPConnTicket alloc] init];
ticketParam.connTicket = self.connParam.connTicket;
ticketParam.useVpc = false;
ticketParam.enableStatistics = true;
ticketParam.desktopId = self.connParam.desktopId;
[streamView startWithTicket:ticketParam];
} else {
ASPConnParam* connParam = [[ASPConnParam alloc] init];
connParam.connIp = self.connParam.connIp;
connParam.connPort = self.connParam.connPort;
connParam.connUdpPort = self.connParam.connUdpPort;
connParam.connToken = self.connParam.connToken;
connParam.enableTls = self.connParam.enableTls;
connParam.desktopId = self.connParam.desktopId;
connParam.enableStatistics = true;
[streamView start:connParam];
}
self.streamView = streamView;
[self.view addSubview:streamView];
// Set the delegate for statistics callbacks.
[self.streamView setASPEngineStatisticsDelegate:self];
}
- (void)onConnectionSuccess {
NSLog(@"Cloud desktop connection successful.");
}
- (void)onDisconnected:(int)reason {
// The `reason` code 2000 indicates a successful disconnection. Codes 2001–2009 represent server-initiated disconnections. For codes 2001-2005, see the error descriptions below. Codes 2006-2009 are reserved for future use.
NSLog(@"Cloud desktop disconnected.");
}
- (void)onReconnect {
NSLog(@"Cloud desktop is reconnecting automatically.");
}
- (void)onConnectionFailureWithErrCode:(int)errCode errMsg:(NSString *)errMsg {
NSLog(@"Cloud desktop connection failed.");
}
- (void)onEngineErrorWithErrCode:(int)errCode errMsg:(NSString *)errMsg {
NSLog(@"An internal logic error occurred in ASPEngineSDK.");
}
- (void)onStatisticsInfoUpdate:(StatisticsInfo)info {
NSLog(@"Statistics received.");
}3. API
3.1 ASPEngineSDK
3.1.1 ASPStreamView.h
3.1.1.1 init
initialization API
+ (instancetype)buildStreamView;3.1.1.2 Start
Connect to EDS using the server connection parameters.
1) Start the streaming service using the server session obtained from PaaS.
- (void)startWithTicket:(ASPConnTicket*) ticketParam;ASPConnTicket parameters
connTicket | The session string obtained from the control plane by calling the PaaS API. |
caFilePath | The absolute path to the CA file, required for encryption in transit. |
desktopId | The cloud desktop ID. |
useVpc | Specifies whether to connect over a VPC. |
enableTls | Specifies whether to enable encryption in transit (recommended: YES). |
enableStatistics | Specifies whether to enable telemetry (recommended: YES). |
2) Start the cloud streaming service using the specified server connection parameters.
This method is for day-to-day debugging when you can connect directly to the ASP Server, either by bypassing the gateway or by using a known gateway address and an accessible token.
- (void)start:(ASPConnParam*) connParam;ASPConnParam:
connIp | The domain name or IP address of the gateway. |
connPort | The port of the gateway. |
connUdpPort | The UDP port for RTC data transmission. This value is typically the same as |
connToken | The token used to access the gateway, typically provided by gateway administrators during integration testing. |
connTicket | The serverSession string obtained from the control plane via the PaaS API. |
caFilePath | The absolute path to the CA file used for TLS encryption. |
desktopId | The ID of the cloud desktop. |
enableTls | Enables or disables TLS encryption. We recommend setting this to YES. |
enableStatistics | Enables or disables data collection. We recommend setting this to YES. |
3.1.1.3 Stop
Disconnect from your EDS session.
- (int)stop;3.1.1.4 Dispose
Deletes the cloud desktop.
- (void)dispose;3.1.1.5 delegate
// Callbacks for cloud desktop connection
@property (nonatomic, weak) id<ASPEngineDelegate> engineDelegate;
// Callbacks for resolution changes
@property (nonatomic, weak) id<ASPEngineResolutionUpdateDelegate> resolutionUpdateDelegate;
// Callbacks for the cursor
@property (nonatomic, weak) id<ASPEngineCursorDelegate> cursorDelegate;
// Callbacks for orientation changes
@property (nonatomic, weak) id<ASPEngineOrientationUpdateDelegate> orientationUpdateDelegate;
// Callbacks for event tracking
@property (nonatomic, weak) id<ASPEngineStatisticsDelegate> statisticsDelegate;
// Callbacks for the input method editor (IME)
@property (nonatomic, weak) id<ASPEngineIMEDelegate> imeDelegate;
// Log callbacks. It is recommended to use a singleton for the delegate.
+ (void)setASPEngineLogDelegate:(id<ASPEngineLogDelegate>)delegate;
+ (void)unsetASPEngineLogDelegate;3.1.1.6 enableStatistics
Enable instrumentation.
- (BOOL)enableStatistics:(BOOL) enabled;3.1.1.7 enableMouseMode
Determines whether mouse mode is enabled.
- (BOOL)enableMouseMode:(BOOL)enabled;3.1.1.8 enableDump
Specifies whether to enable dump. Because this feature impacts performance, it should be used for development and debugging only, not in production.
@property (nonatomic, assign) BOOL enableDump;3.1.1.9 sendKeyboardEvent
Send a keyboard event.
- (BOOL)sendKeyboardEvent:(ASPKeyEvent)event;3.1.1.10 simulateMouseClick
Simulate a mouse click
// leftButton: YES for the left mouse button, or NO for the right. x, y: The click coordinates.
- (BOOL)simulateMouseClick:(BOOL)leftButton;
- (BOOL)simulateMouseClick:(BOOL)leftButton x:(float)x y:(float)y;3.1.1.11 setVideoProfileWithWidth
Set the resolution
- (void)setVideoProfileWithWidth:(int)width height:(int)height fps:(int)fps;3.1.1.12 setMute
Mutes or unmutes the audio.
@property (nonatomic, assign) BOOL mute;3.1.2 ASPEngineSDK.h
Connect to Elastic Desktop Service using the specified server connection parameters.
1) Start the streaming service using the server session obtained from PaaS.
- (void)startWithTicket:(ASPConnTicket *)ticketParam;ASPConnTicket:
connTicket | The server session string retrieved from the control plane via the PaaS API. |
caFilePath | The absolute path to the CA file for TLS encryption. |
desktopId | The cloud desktop ID. |
useVpc | Specifies whether to connect over a private network. |
enableTls | Specifies whether to enable TLS encryption. Recommended. |
enableStatistics | Specifies whether to enable tracking. Recommended. |
2) Start the cloud streaming service with the specified server connection parameters.
This method is typically used for day-to-day debugging in scenarios where you can connect directly to the ASP Server, either by bypassing the gateway or by using a known gateway address with an accessible token.
- (void)start:(ASPConnParam *)connParam;AspConnParam parameters
connIp | The domain name or IP address of the gateway. |
connPort | The port of the gateway. |
connUdpPort | The UDP port for RTC data transmission. This is typically the same as |
connToken | The token used to access the gateway. The gateway administrator typically provides this token during integration testing. |
connTicket | The |
caFilePath | The absolute path to the CA file used for TLS encryption. |
desktopId | The ID of the cloud desktop. |
enableTls | Specifies whether to enable encrypted transmission. Recommended: |
enableStatistics | Specifies whether to enable analytics. Recommended: |
3.1.2.2 Stop
Disconnect the EDS session
- (int)stop;3.1.2.3 Pause
Pausing an EDS instance
- (void)pause;3.1.2.4 Resume
Restore EDS API
- (void)resume;3.1.2.5 setRenderView
Configure the Elastic Desktop Service view container interface.
- (void)setRenderView:(UIView*) view;3.1.2.6 Dispose
Delete the cloud desktop.
- (void)dispose;3.1.2.7 enableRTC
Use RTC transport
- (void)enableRTC:(bool) enabled;3.1.2.8 enableVDAagentCheck
Check the VDAagent.
- (void)enableVDAagentCheck:(bool) enabled;3.1.2.9 enableStatistics
Whether to enable tracking.
- (BOOL)enableStatistics:(BOOL)enabled;3.1.2.10 dump
The dump interfaces are for development and integration testing only. Do not use them in production, as they are resource-intensive.
- (void)setDumpPath:(NSString *)path;
@property (nonatomic, assign) BOOL enableDump;3.1.2.11 Delegate
Callbacks
// Handles cloud desktop connection events.
@property (nonatomic, weak) id<ASPEngineDelegate> engineDelegate;
// Handles resolution updates.
@property (nonatomic, weak) id<ASPEngineResolutionUpdateDelegate> resolutionUpdateDelegate;
// Handles cursor events.
@property (nonatomic, weak) id<ASPEngineCursorDelegate> cursorDelegate;
// Handles cloud desktop orientation updates.
@property (nonatomic, weak) id<ASPEngineOrientationUpdateDelegate> orientationUpdateDelegate;
// Handles statistics events.
@property (nonatomic, weak) id<ASPEngineStatisticsDelegate> statisticsDelegate;
// Handles IME events.
@property (nonatomic, weak) id<ASPEngineIMEDelegate> imeDelegate;
// Handles clipboard events.
@property (nonatomic, weak) id<ASPEngineClipboardDelegate> clipboardDelegate;
// Handles gesture events.
@property (nonatomic, weak) id<ASPEngineGestureDelegate> gestureDelegate;
// Handles logging.
@property (class, nonatomic, weak) id<ASPEngineLogDelegate> logDelegate;3.1.2.12 setVideoProfileWithWidth
Set the EDS resolution
- (void)setVideoProfileWithWidth:(int)width height:(int)height fps:(int)fps; // Target fps for the video stream. This parameter is not yet in use.3.1.2.13 touch
Dispatches a touch event.
- (void)sendTouchEvent:(ASPTouchEvent*)event touchAction:(ASPTouchAction)action;
- (void)sendTouchEvents:(NSArray<ASPTouchEvent*>*)eventArray touchAction:(ASPTouchAction)action index:(int)index;3.1.2.14 Keyboard
Send keyboard events
- (BOOL)sendKeyboardEvent: (ASPKeyEvent) event;
// Sends the state of the lock keys (Caps Lock, Num Lock, and Scroll Lock).
- (void)sendKeyboardLockModifiers: (int) modifiers;3.1.2.15 Mouse
Enables or disables mouse mode.
- (BOOL)enableMouseMode:(BOOL)enabled;Send mouse events
- (void)sendMouseButtonEvent: (ASPMouseButtonEvent)event;
- (void)sendMouseMoveEvent: (ASPMouseMoveEvent)event;
- (void)sendMouseWheelEvent:(int)delta buttonState:(ASPMouseButtonMask)buttonState;3.1.2.16 ime
Send IME-related events
- (void)setImePreedit:(NSString *)preeditStr;
- (void)setImeCommit:(NSString *)commitStr;3.1.2.17 Clipboard
Send clipboard events
- (void)sendClipboardType:(int)type;The type parameter:
enum ASPEngineClipboardType {
ASPENGINE_CLIPBOARD_NONE = 0,
ASPENGINE_CLIPBOARD_UTF8_TEXT,
ASPENGINE_CLIPBOARD_IMAGE_PNG, /* All image-supporting clients should support this format. */
ASPENGINE_CLIPBOARD_IMAGE_BMP, /* optional */
ASPENGINE_CLIPBOARD_IMAGE_TIFF, /* optional */
ASPENGINE_CLIPBOARD_IMAGE_JPG, /* optional */
};ASPEngineDelegate
Cloud Computer Connection Callbacks
@protocol ASPEngineDelegate <NSObject>
// An internal engine error occurred.
- (void)onEngineErrorWithErrCode:(int)errCode errMsg:(NSString*)errMsg;
// The connection to the cloud computer succeeded.
- (void)onConnectionSuccess;
// The connection to the cloud computer failed.
- (void)onConnectionFailureWithErrCode:(int)errCode errMsg:(NSString*)errMsg;
// The connection to the cloud computer was lost.
- (void)onDisconnected:(int)reason;
// The first frame from the cloud computer was rendered.
- (void)onFirstFrameRendered:(long)timeCostMS;
// The engine is attempting to reconnect.
- (void)onReconnect;
@end3.1.2.19 ASPEngineResolutionUpdateDelegate
EDS resolution changed callback.
/**
* Implement this protocol to receive notifications about video resolution changes.
*/
@protocol ASPEngineResolutionUpdateDelegate <NSObject>
/**
* Called when the resolution of the video stream changes.
*
* @param oldWidth The previous video width in pixels.
* @param oldHeight The previous video height in pixels.
* @param width The new video width in pixels.
* @param height The new video height in pixels.
*/
- (void)onResolutionUpdateWithOldWidth:(int)oldWidth oldHeight:(int)oldHeight
width:(int)width height:(int)height;
@end3.1.2.20 ASPEngineCursorDelegate
EDS resolution change callback
@protocol ASPEngineCursorDelegate <NSObject>
// Notifies the delegate that the cloud cursor's shape has changed.
- (void)onCursorBitmapUpdateWithHotX:(int)hotX hotY:(int)hotY width:(int)width
height:(int)height rgba:(char*)rgba;
// Notifies the delegate that the cloud cursor has been reset.
- (void)onCursorReset;
// Notifies the delegate that the cloud cursor has been hidden.
- (void)onCursorHide;
// Notifies the delegate that the cloud cursor has moved.
- (void)onCursorMoveWithX:(int)x y:(int)y;
@end3.1.2.21 ASPEngineOrientationUpdateDelegate
Listen for cloud-side screen rotation events
@protocol ASPEngineOrientationUpdateDelegate <NSObject>
- (void)onOrientationUpdateWithOldOrientation:(int)oldOrientation newOrientation:(int)newOrientation;
@end3.1.2.22 ASPEngineStatisticsDelegate
Provides reports on performance and key operational status.
@protocol ASPEngineStatisticsDelegate <NSObject>
- (void)onStatisticsInfoUpdate:(ASPStatisticsInfo *)info;
@endThe parameters for ASPStatisticsInfo are:
@interface ASPStatisticsInfo : NSObject
@property (nonatomic, assign) int mReceiveFps; // Client-side received video FPS
@property (nonatomic, assign) int mRenderFps; // Client-side render FPS
@property (nonatomic, assign) double mDownstreamBandwithMBPerSecond; // Downstream bandwidth (MB/s)
@property (nonatomic, assign) double mUpstreamBandwithMBPerSecond; // Upstream bandwidth (MB/s)
@property (nonatomic, assign) long mP2pFullLinkageLatencyMS; // End-to-end latency (ms)
// This value is accurate only when a specific application runs in the guest OS.
@property (nonatomic, assign) long mNetworkLatencyMS; // Network round-trip time (RTT) (ms)
@property (nonatomic, assign) long mPingGatewayRtt; // Gateway ping RTT (ms)
@property (nonatomic, assign) double mLostRate; // Packet loss rate
@property (nonatomic, assign) long mServerRenderLatencyMS; // Server rendering latency (ms)
@property (nonatomic, assign) long mServerEncoderLatencyMS; // Server encoding latency (ms)
@property (nonatomic, assign) long mServerTotalLatencyMS; // Total server latency (ms)
@property (nonatomic, assign) long accumulateBandwidth; // Cumulative bandwidth
@property (nonatomic, copy ) NSString *protocolType; // Stream protocol type
@property (nonatomic, copy ) NSDictionary *infoDic;
@end3.1.2.23 ASPEngineIMEDelegate
Monitors focus changes in cloud input boxes and tracks the position and status of the input method UI.
/**
* Defines callbacks for cloud input method events, such as focus changes and UI location updates.
*/
@protocol ASPEngineIMEDelegate <NSObject>
/**
* Called when a cloud input field gains or loses focus.
* @param hasFocus `YES` if the input field has focus; otherwise, `NO`.
*/
- (void)onIMEFocusUpdate:(bool)hasFocus;
/**
* Called when the cloud input method's UI location changes.
* @param x The new x-coordinate of the UI.
* @param y The new y-coordinate of the UI.
*/
- (void)onIMELocationUpdateWithX:(int)x y:(int)y;
@end3.1.2.24 ASPEngineClipboardDelegate
Triggered when the cloud clipboard reads data from or writes data to the client.
@protocol ASPEngineClipboardDelegate <NSObject>
// Called to retrieve data from the client-side clipboard for a paste operation in Elastic Desktop Service (EDS).
- (void)onClipBoardRead:(int)engineId type:(int *)type data:(uint8_t**)data size:(int *) size selection:(uint8_t)selection;
// Called to update the client-side clipboard after a copy operation in Elastic Desktop Service (EDS).
- (void)onClipBoardWrite:(int)engineId type:(int)type data:(uint8_t*)data size:(int)size;
@end3.1.2.25 ASPEngineGestureDelegate
Provides callbacks for zoom and pan (two-finger gesture).
/**
* Defines callbacks for two-finger gestures, such as scale and translate.
*/
@protocol ASPEngineGestureDelegate <NSObject>
/**
* Called when a scale gesture is recognized.
*
* @param sx The x-axis scale factor.
* @param sy The y-axis scale factor.
*/
- (void)onScale:(float)sx sy:(float)sy;
/**
* Called when a translate gesture is recognized.
*
* @param tx The x-axis translation distance.
* @param ty The y-axis translation distance.
*/
- (void)onTranslate:(float)tx ty:(float)ty;
@end3.1.2.26 ASPEngineLogDelegate
Log callback
/**
* A delegate protocol for receiving log messages from the SDK.
*/
@protocol ASPEngineLogDelegate <NSObject>
/**
* Tells the delegate that a log message is available from the SDK.
*
* @param message The log message content.
* @param tag The tag for categorizing the log message.
* @param level The severity level of the log message.
*/
- (void)onLogMessage:(NSString *)message tag:(NSString *)tag level:(AspLogLevel)level;
@end3.1.2.27 Mute
Whether to mute the audio.
/**
* Sets whether to mute the audio stream.
*
* YES: Mutes the audio stream.
* NO: Does not mute the audio stream. (Default)
*/
@property (nonatomic, assign) BOOL mute;4. Error codes
Error code | Message | Module | Cause |
Error codes 2-26 are primarily network-related. | |||
2 | Failed to connect to %s. | ASP SDK | Invalid MAGIC number. |
3 | Failed to connect to %s. | ASP SDK | Malformed data. |
4 | Client and server versions do not match. | ASP SDK | Version mismatch. |
5 | Connection requires TLS. | ASP SDK | TLS is required. |
6 | Connection does not require TLS. | ASP SDK | The client used TLS for a non-TLS connection. |
7 | You do not have permission to connect to %s. | ASP SDK | Permission denied. |
8 | ASP SDK | Invalid client ID during migration. | |
9 | Failed to connect to %s. | ASP SDK | Channel does not exist. |
20 | Failed to connect to the ASP server. | ASP SDK | Channel connection error. |
21 | TLS authentication failed. | ASP SDK | TLS authentication error. |
22 | Failed to connect to %s. | ASP SDK | Channel link error. |
23 | Failed to connect to %s. | ASP SDK | Connection authentication error. |
24 | Failed to connect to %s. | ASP SDK | Connection I/O error. |
25 | Failed to connect to %s. | ASP SDK | Failed to connect to the gateway. |
26 | ASP SDK | XQUIC handshake failed. | |
Disconnections and other connection errors | |||
2000 | The connection to %s timed out while fetching data. | ASP SDK | Normal disconnection. |
2001 | %s disconnected from the server, possibly because its process was forcibly terminated. | ASP SDK | This typically happens when the client-side application is terminated, for example, when a user closes an Android app by pressing the Home button. |
2002 | Another user has connected to %s from a different client. Please try again later. | ASP SDK | Another user took over the session. |
2003 | %s is shutting down or restarting. This is usually initiated by an administrator. Please try again later. | ASP SDK | An administrator typically shut down or restarted the cloud desktop. |
2005 | Your session on %s has timed out because you have reached the maximum usage duration set by the administrator. | ASP SDK | The session reached the duration limit set by the administrator. |
2010 | Failed to connect to %s. | ASP SDK | Failed to connect to VDAgent. |
2011 | Invalid connection parameters. | ASP SDK | The parameters for connecting to the server are invalid. |
2100 | Permission denied. You cannot copy from %s to your local device. | ASP SDK | The security policy prohibits copying from the VM to the local device. |
2101 | Permission denied. You cannot copy from your local device to %s. | ASP SDK | The security policy prohibits copying from the local device to the VM. |
2200 | %s is reconnecting... | ASP SDK | A network issue caused a disconnection. The ASP SDK is attempting to reconnect. |
2201 | A network issue on your device caused a disconnection from %s. | ASP SDK | A network issue caused a disconnection. The image configuration prevents the ASP SDK from reconnecting automatically; the application will initiate the reconnection. |
2202 | Reconnection to %s timed out. Please check your network and try again. | ASP SDK | ASP SDK reconnection timed out. |
Client-side logic errors | |||
5100 | Connection to the ASP server for %s timed out. Please try again later. | Application-side | The client-side did not receive a "connected" event within the expected time. |
5102 | Request for %s data timed out. Please try again later. | Application-side | The client-side received a "connected" event but did not receive a "display" event within the expected time. |
5004 | A client error occurred. Please restart the application. | Application-side | The application received invalid startup parameters. This typically occurs during development. |
5200 | Client reconnection timed out. Please try again later. | Application-side | |
5. Appendix
5.1 Demo
5.2 SDK
By downloading and using this sdk, you acknowledge and agree to the Elastic Desktop Service sdk privacy policy.
All documents, sdks, and clients on this platform are for use only by you or your organization. Redistribution to any third party without the prior written consent of Alibaba Cloud is strictly prohibited.