All Products
Search
Document Center

Cloud Phone:iOS SDK

Last Updated:Jun 24, 2026

Integrasikan dan gunakan iOS SDK untuk Elastic Cloud Phone.

1. Mulai cepat

1.1 Dapatkan SDK dan demo

Catatan

Dengan mengunduh dan menggunakan SDK, Anda menyetujui Kebijakan Privasi SDK WUYING Workspace.

Seluruh dokumen, SDK, dan program klien pada platform ini hanya diperuntukkan bagi penggunaan pribadi atau perusahaan. Jangan mendistribusikannya kepada pihak ketiga tanpa persetujuan Alibaba Cloud.

Persyaratan integrasi

Versi iOS minimum yang didukung: 10.0.

Karena ketergantungan pada API iOS, fitur mouse dan keyboard eksternal memerlukan iOS 13.4 atau versi lebih baru.

Integrasi SDK

  1. Ekstrak SDK dan salin ke dalam proyek Anda.

  2. Hubungkan library SDK.

    Buka Target → Build Phases → Link Binary With Libraries → + → Add Other → Add Files, lalu pilih framework yang diperlukan.

  3. Atur opsi embed.

    Buka Target → General → Frameworks, Libraries, and Embedded Content, temukan ASPEngineSDK.framework, lalu pilih Embed Without Signing.

Izin SDK

Tambahkan izin yang diperlukan untuk ASPEngineSDK ke file Info.plist proyek Anda.

1. Izin mikrofon

Privacy - Microphone Usage Description

2. Izin kamera

Privacy - Camera Usage Description

Penandatanganan SDK

SDK merupakan library dinamis dan harus ditandatangani untuk debugging di perangkat fisik atau distribusi ke App Store.

  • Dapatkan ID penandatanganan

Untuk menemukan ID penandatanganan Anda, jalankan:

security find-identity -v -p codesigning

Jika Anda tidak memiliki sertifikat lokal, masuk ke akun Apple Developer Anda dan unduh provisioning profile. Klik kanan file yang diunduh, pilih Get Info, lalu temukan bidang SHA-1 dari sertifikat target. Nilai tersebut adalah ID penandatanganan Anda.

  • Signing & Capabilities

Pada target proyek Anda, konfigurasikan sertifikat dengan benar di tab Signing & Capabilities.

  • Tambahkan skrip shell penandatanganan. Skrip ini diperlukan untuk perangkat fisik, tetapi tidak untuk simulator.

Buka Target → Build Phases → + → New Run Script Phase, lalu tempel konten skrip shell tersebut. Contoh skrip shell penandatanganan tersedia di bawah ini.

Catatan: Fase Run Script ini harus ditempatkan setelah fase Embed Frameworks.

  • Contoh skrip shell penandatanganan

set -e
SHELL_PATH="${PROJECT_DIR}/ASPDemo/Lib/ASPEngineSDK/ASPEngineSDK.framework/link_and_sign.sh"
KEY_ID="Signing ID sertifikat Anda"
echo "===> Menandatangani menggunakan $KEY_ID"
/bin/bash -c "${SHELL_PATH}"\ "${TARGET_BUILD_DIR}"\ "${FRAMEWORKS_FOLDER_PATH}"\ "${KEY_ID}"

Konfigurasi proyek

Nonaktifkan Bitcode.

Buka Target → Build Settings → Build Options → Enable Bitcode, lalu atur opsi tersebut menjadi No.

1.2 Alur kerja integrasi

1.3 Praktik terbaik

Lihat Praktik terbaik untuk integrasi cepat dengan cloud phone. Diagram berikut menggambarkan arsitektur integrasi.

Anda dapat menggunakan beberapa metode login untuk mendapatkan tiket koneksi yang diperlukan oleh SDK. Diagram berikut mengilustrasikan alur kerja tersebut.

Untuk contoh kode, lihat kode sampel untuk API siklus hidup.

2. API Siklus Hidup

2.1 Inisialisasi instans

+ (instancetype)buildStreamView;

2.2 Membangun koneksi

- (void)startWithTicket:(ASPConnTicket*) ticketParam;

Parameter ASPConnTicket:

Parameter

Deskripsi

connTicket

Tiket koneksi untuk otentikasi.

caFilePath

Jalur mutlak ke file CA untuk enkripsi TLS.

desktopId

ID instans aplikasi, seperti ai-0cc7s3n1iagyq****. Dapatkan ID ini dengan memanggil API Query Instance Details.

useVpc

Apakah akan terhubung melalui VPC.

enableTls

Mengaktifkan transmisi terenkripsi. Direkomendasikan: YES.

enableStatistics

Mengaktifkan pelacakan. Direkomendasikan: YES.

preferRtcTransport

Mengaktifkan saluran RTC. Direkomendasikan: YES.

2.3 Putuskan koneksi

- (int)stop;

2.4 Jeda

Menjeda aliran dari server dan rendering di klien.

- (void)pause;

2.5 Ringkasan

Melanjutkan aliran dari server dan rendering di klien.

- (void)resume;

2.6 Hapus instans

- (void)dispose;

2.7 Callback

// Callback untuk koneksi Elastic Cloud Phone.
@property (nonatomic, weak) id<ASPEngineDelegate> engineDelegate;
// Callback untuk perubahan resolusi.
@property (nonatomic, weak) id<ASPEngineResolutionUpdateDelegate> resolutionUpdateDelegate;
// Callback untuk kursor mouse.
@property (nonatomic, weak) id<ASPEngineCursorDelegate> cursorDelegate;
// Callback untuk perubahan orientasi Elastic Cloud Phone.
@property (nonatomic, weak) id<ASPEngineOrientationUpdateDelegate> orientationUpdateDelegate;
// Callback untuk pelacakan.
@property (nonatomic, weak) id<ASPEngineStatisticsDelegate> statisticsDelegate;
// Callback untuk Input Method Editor (IME). Tidak didukung oleh Elastic Cloud Phone.
@property (nonatomic, weak) id<ASPEngineIMEDelegate> imeDelegate;
// Callback untuk log. Kami merekomendasikan penggunaan singleton untuk delegate ini.
+ (void)setASPEngineLogDelegate:(id<ASPEngineLogDelegate>)delegate;
+ (void)unsetASPEngineLogDelegate;

ASPEngineDelegate: Callback untuk koneksi Elastic Cloud Phone

API

Deskripsi

onConnectionSuccess:(int)connectId

Dipanggil saat koneksi ke ECP berhasil dibangun. Mengembalikan ID koneksi.

onConnectionFailureWithErrCode:(int)errCode errMsg:(NSString*)errMsg

Dipanggil saat koneksi ke ECP gagal. Mengembalikan kode kesalahan dan pesan kesalahan.

onEngineErrorWithErrCode:(int)errCode errMsg:(NSString*)errMsg

Dipanggil saat terjadi kesalahan internal SDK. Mengembalikan kode kesalahan dan pesan kesalahan.

onDisconnected:(int)reason

Dipanggil saat koneksi ke ECP diputus. Mengembalikan kode yang menunjukkan alasan pemutusan.

onFirstFrameRendered:(long)timeCostMS

Dipanggil saat frame pertama dari ECP dirender. Mengembalikan waktu yang berlalu dalam milidetik.

onReconnect:(int)errorCode

Dipanggil saat SDK mencoba menyambung ulang ke ECP. Mengembalikan kode kesalahan yang memicu penyambungan ulang.

onPolicyUpdate:(NSString *)policy

Dipanggil saat kebijakan ECP diperbarui. Mengembalikan konfigurasi kebijakan.

onUpdateNetworkQos:(AspNetworkQoS)qos

Dipanggil untuk melaporkan status Quality of Service (QoS) jaringan.

onSessionSuccess

Dipanggil saat sesi ECP dibuat.

ASPEngineResolutionUpdateDelegate: Callback untuk perubahan resolusi

API

Deskripsi

onResolutionUpdateWithOldWidth:(int)oldWidth oldHeight:(int)oldHeight width:(int)width height:(int)height

Dipanggil saat resolusi berubah. Mengembalikan resolusi lama dan baru.

onMonitorsDpiConfig:(int)dpi maxSupportDpi:(int)maxSupportDpi

Menyediakan konfigurasi DPI dan DPI maksimum yang didukung. Tidak didukung oleh Elastic Cloud Phone.

ASPEngineCursorDelegate: Callback untuk kursor mouse

API

Deskripsi

onCursorBitmapUpdateWithHotX:(int)hotX hotY:(int)hotY

width:(int)width height:(int)height rgba:(char*)rgba

Dipanggil saat bitmap kursor diperbarui. Menyediakan koordinat titik panas kursor, dimensi, dan data RGBA.

onCursorReset

Dipanggil saat kursor mouse direset.

onCursorHide

Dipanggil saat kursor mouse disembunyikan.

onCursorMoveWithX:(int)x y:(int)y

Dipanggil saat kursor mouse bergerak. Menyediakan koordinat baru.

ASPEngineStatisticsDelegate: Callback untuk pelacakan

API

Deskripsi

onStatisticsInfoUpdate:(ASPStatisticsInfo *)info

Dipanggil untuk melaporkan statistik performa ECP. Statistik disediakan dalam objek ASPStatisticsInfo.

ASPEngineLogDelegate: Callback untuk log. Kami merekomendasikan penggunaan singleton untuk delegate ini.

API

Deskripsi

onLogMessage:(NSString*)msg

tag:(NSString*)tag

level:(AspLogLevel)level

Dipanggil untuk setiap pesan log SDK. Menyediakan pesan log, tag, dan level untuk setiap entri.

3. API Layanan

API

Deskripsi

- (BOOL)enableStatistics:(BOOL) enabled enableGuestInfo:(BOOL)enableGuestInfo

Mengaktifkan atau menonaktifkan pengumpulan statistik dan penggunaan CPU guest.

- (BOOL)enableMouseMode:(BOOL)enabled

Mengaktifkan atau menonaktifkan mode mouse.

@property (nonatomic, assign) BOOL enableDump;

Mengaktifkan atau menonaktifkan dump. Fitur ini memengaruhi performa dan hanya untuk tujuan pengembangan dan debugging. Jangan gunakan di lingkungan produksi.

- (BOOL)sendKeyboardEvent: (ASPKeyEvent) event;

Mengirim event keyboard.

// Parameter leftButton menentukan apakah akan mensimulasikan klik tombol kiri atau kanan. Posisi klik adalah (0, 0).

- (BOOL)simulateMouseClick:(BOOL)leftButton;

- (BOOL)simulateMouseClick:(BOOL)leftButton x:(float)x y:(float)y;

Mensimulasikan klik mouse.

- (void)hideCursor;

- (void)showCursor;

Menyembunyikan atau menampilkan kursor.

- (void)setVideoProfileWithWidth:(int)width height:(int)height fps:(int)fps;

Mengatur resolusi. Parameter fps saat ini tidak didukung.

@property (nonatomic, assign) BOOL mute;

Mematikan atau mengaktifkan audio.

@property (nonatomic, assign) ASPScaleType scaleType;

Jenis penskalaan untuk aliran video. Lihat bagian 5.1 ASPScaleType.

- (void)enableDesktopMode:(BOOL)enabled;

Mengaktifkan atau menonaktifkan mode desktop. Saat diaktifkan, pesan sentuh dikonversi menjadi event mouse. Untuk cloud phone, direkomendasikan: NO.

- (void)enableDesktopGesture:(BOOL)enabled;

Mengaktifkan atau menonaktifkan gesture zoom dan pan di sisi client. Untuk cloud phone, direkomendasikan: NO.

@property (nonatomic, assign) BOOL enableTouchFeel;

Mengaktifkan atau menonaktifkan umpan balik haptik. Nilai default adalah NO.

LyncChannel

Saluran untuk mengirim perintah ADB. Untuk contoh, lihat DemoLyncChannel dalam demo.

DataChannel

Saluran data kustom untuk komunikasi antara client dan guest. Untuk contoh, lihat DemoEDSAgentChannel dalam demo.

Contoh LyncChannel
// Nama default LyncChannel adalah: static NSString *LYNC_CHANNEL_NAME = @"lync_adb_shell";
// Tambahkan LyncChannel
self.lync = [[DemoLyncChannel alloc] initWithParameter:LYNC_CHANNEL_NAME];
[self.streamView addLyncChannel:self.lync];
// Hapus LyncChannel
[self.streamView removeLyncChannel:self.lync];
// Implementasi LyncChannel
@interface DemoLyncChannel : BaseLyncChannel
@property (nonatomic, strong) NSString *lslaID;

@end
@implementation DemoLyncChannel

- (void)onConnectStateChanged:(BOOL)connected {
    NSLog(@"[DemoLyncChannel] onConnectStateChanged %d", connected);
    if (connected) {
        // Uji mengirim perintah
        self.lslaID = [DemoToolBox getID];
        NSString *cmdData = [DemoToolBox getJsonDataWithId:self.lslaID cmd:@"ls -la"];
        NSLog(@"[DemoLyncChannel] cmdData : %@", cmdData);
        LyncErrorCode code = [self sendString:cmdData];
        NSLog(@"[DemoLyncChannel] cmdData code: %ld", code);
    }
}
- (void)onReceiveStringData:(NSString * _Nonnull)buf {
    NSLog(@"[DemoLyncChannel] onReceiveStringData %@", buf);
    NSDictionary *dic = [DemoToolBox convertStringToJSON:buf];
    NSString *ID = [dic objectForKey:@"id"];
    if (ID != NULL && ID.length && [self.lslaID isEqualToString:ID]) {
        NSLog(@"[DemoLyncChannel] onReceiveStringData: Received result for 'ls -la'.");
    }
}
- (void)onReceiveRawData:(NSData * _Nonnull)buf {
    NSString *string = [[NSString alloc] initWithData:buf encoding:NSUTF8StringEncoding];
    NSLog(@"[DemoLyncChannel] onReceiveRawData %@", string);
}
@end
Contoh DataChannel
// Nama default DataChannel adalah: static NSString *DATA_CHANNEL_NAME = @"wy_vdagent_default_dc";
// Tambahkan DataChannel
self.esdAgent = [[DemoEDSAgentChannel alloc] initWithParameter:DATA_CHANNEL_NAME];
[self.streamView addDataChannel:self.esdAgent];
// Hapus DataChannel
[self.streamView removeDataChannel:self.esdAgent];
// Implementasi DataChannel
@interface DemoEDSAgentChannel : BaseEDSAgentChannel
@end
@implementation DemoEDSAgentChannel

- (void)onConnectStateChanged:(ASPDCConnectState)state {
    NSLog(@"[DemoEDSAgentChannel] onConnectStateChanged %ld", state);
    if (state == OPEN) {
        // untuk mengirim data
    }
}
- (void)onReceiveData:(NSData * _Nonnull)buf {
    NSString *string = [[NSString alloc] initWithData:buf encoding:NSUTF8StringEncoding];
    NSLog(@"[DemoEDSAgentChannel] onReceiveData %@", string);
}
@end

Saluran pesan menggunakan DataChannel bernama wy_vdagent_default_dc.

Ukuran pesan dibatasi hingga 500 KB.

Format pesan dasar adalah sebagai berikut:

DataChannel: Pesan dari klien ke guest

Action: insertcontact, insertsms, atau sendcontactvcf

  • insertcontact: Menyisipkan kontak.

Parameter wajib name menentukan nama kontak.

Parameter wajib phonenumber menentukan nomor telepon.

  • insertsms: Menyisipkan SMS.

Parameter wajib phonenumber menentukan nomor telepon.

Parameter wajib textbody menentukan isi SMS.

Parameter opsional canInsertdb menentukan apakah pesan akan dimasukkan ke database SMS cloud phone. Nilai default-nya adalah 0 (tidak dimasukkan); atur ke 1 untuk memasukkan.

Contoh: let jsonarray = [{'action': 'insertcontact','importdata':[{ 'name': '**', 'phonenumber': '**' }, { 'name': '**', 'phonenumber': '**' }]},{'action': 'insertsms','importdata':[{'phonenumber':'**','textbody':'**',"canInsertdb":0/1}]}]

  • sendcontactvcf: Menyisipkan kontak dari file vcf.

Parameter wajib data berisi aliran data file vcf. File besar harus dipecah menjadi chunk dengan ukuran maksimum 1 MB per chunk.

Parameter wajib allsize menunjukkan ukuran total data vcf.

Catatan

Parameter wajib timestamp harus digunakan. Gunakan timestamp yang sama untuk semua chunk dari satu file vcf agar dapat dirakit kembali dengan benar.

Contoh: {'action': 'sendcontactvcf', 'importdata': {'data': '', 'allsize': total_file_size, 'timestamp': current_timestamp}}.

public void processByteArrayInChunks(byte[] data) {
    int chunkSize = 512 * 1024; // 512 KB
    int length = data.length;
    long timestamp = System.currentTimeMillis();
    for (int i = 0; i < length; i += chunkSize) {
        int end = Math.min(i + chunkSize, length);
        byte[] chunk = Arrays.copyOfRange(data, i, end);
        String str = new String(chunk, StandardCharsets.UTF_8);
        /**
          {'action': 'sendcontactvcf','importdata':{"data":str, "allsize":length, "timestamp":timestamp}}
        */
    }
}
String recvData = "";
int recvSize = 0;
long recvTimestamp = 0;
public void onMessageReceive(byte[] message) {
  String action = getAction(message);
  String data = getData(message);
  int length = data.length;
  int allSize = getAllSize(message);
  long timestamp = getTimestamp(message);
  if (timestamp != recvTimestamp) {
    clearRecv();
  }
  if (action.equals("sendcontactvcf")) {
    recvSize += length;
    recvData = recvData + data;
    if (recvSize >= allSize) {
      // Tulis recvData ke file vcf dan sisipkan kontak.
      insertContact(vcfFilePath);
      sendack();
      clearRecv();
    }
  }
}

public void clearRecv() {
  recvData = "";
  recvSize = 0;
  recvTimestamp = 0;
}

DataChannel: Pesan dari guest ke klien

Action: openeditsms, openphone, atau rotation

  • openeditsms: Membuka halaman editor SMS.

Parameter opsional importdata.phonenumber menentukan nomor telepon.

Parameter opsional textbody menentukan isi SMS.

Contoh: {'action': 'openeditsms', 'importdata':{"phonenumber":"***", "textbody":"***"}}

  • openphone: Membuka halaman dialer telepon.

Parameter opsional importdata.phonenumber menentukan nomor yang akan dipanggil. Jika disediakan, dialer akan membuka dengan nomor tersebut; jika tidak, halaman utama dialer akan dibuka.

Contoh: {'action': 'openphone','importdata':{"phonenumber":"***"}} atau {'action': 'openphone'}

Pesan ACK DataChannel

Action: ack

  • ack: Melaporkan status pemrosesan pesan yang diterima. Baik klien maupun guest dapat mengirim respons ack jika diperlukan oleh logika aplikasi.

Parameter wajib source adalah action dari pesan asli.

Parameter wajib code adalah kode status, dengan nilai valid berikut: 0 (Unknown), 1 (Executing), 2 (Success), 3 (Failure), dan 4 (Not Supported).

Contoh: {'action': 'ack','importdata':{"source":"***", "code": *,"id":*}}

4. Parameter

4.1 ASPConnTicket

Parameter konfigurasi untuk membangun koneksi.

Parameter

Deskripsi

connTicket

Tiket otentikasi koneksi.

caFilePath

Jalur mutlak ke file CA, digunakan untuk enkripsi TLS.

desktopId

ID instans aplikasi, seperti ai-0cc7s3n1iagyq****. Dapatkan ID ini dengan memanggil API Query Instance Details.

useVpc

Apakah akan terhubung melalui VPC.

enableTls

Mengaktifkan enkripsi TLS. Direkomendasikan: YES.

enableStatistics

Mengaktifkan statistik. Direkomendasikan: YES.

preferRtcTransport

Mengaktifkan saluran RTC. Direkomendasikan: YES.

4.2 ASPStatisticsInfo

Data performa.

API

Tipe

Deskripsi

mReceiveFps

int

FPS yang diterima

mRenderFps

int

Render FPS

mDownstreamBandwithMBPerSecond

double

Bandwidth downstream

mUpstreamBandwithMBPerSecond

double

Bandwidth upstream

mP2pFullLinkageLatencyMS

long

Latensi end-to-end full-link. Sudah tidak digunakan.

mNetworkLatencyMS

long

RTT jaringan

mPingGatewayRtt

long

RTT ping

mLostRate

double

Laju kehilangan paket

mServerRenderLatencyMS

long

Latensi rendering sisi server

mServerEncoderLatencyMS

long

Latensi encoding sisi server

mServerTotalLatencyMS

long

Total latensi sisi server

accumulateBandwidth

long

Total bandwidth

mGuestCpuUsage

long

Penggunaan CPU guest

mStreamType

String

Tipe protokol aliran

infoDic

NSDictionary

Peta data performa.

5. Tipe enumerasi

5.1 ASPScaleType

Menentukan tipe penskalaan konten untuk gambar yang dialirkan.

Parameter

Deskripsi

ASPScaleTypeFill

Meregangkan gambar yang dialirkan agar mengisi seluruh StreamView. Hal ini dapat menyebabkan distorsi jika rasio aspek gambar berbeda dari view.

ASPScaleTypeFit

Menyesuaikan skala gambar yang dialirkan agar muat dalam StreamView, mempertahankan rasio aspeknya. Ini menampilkan seluruh gambar tanpa distorsi, tetapi mungkin meninggalkan bagian view yang kosong.

Kode kesalahan

Kode kesalahan

Pesan kesalahan (%s merepresentasikan cloud phone atau cloud app)

Modul

Penyebab

Kode kesalahan 2–26: Masalah terkait jaringan

2

Gagal terhubung ke %s.

ASP SDK

MAGIC tidak valid.

3

Gagal terhubung ke %s.

ASP SDK

Data salah.

4

Versi client tidak cocok dengan versi server.

ASP SDK

Ketidakcocokan versi.

5

Koneksi memerlukan TLS.

ASP SDK

TLS diperlukan.

6

Koneksi tidak memerlukan TLS.

ASP SDK

TLS digunakan padahal tidak diperlukan.

7

Anda tidak memiliki izin untuk terhubung ke %s.

ASP SDK

Izin ditolak.

8

ASP SDK

ID client tidak valid selama migrasi.

9

Gagal terhubung ke %s.

ASP SDK

Saluran yang ditentukan tidak ada.

20

Gagal terhubung ke server ASP.

ASP SDK

Kesalahan koneksi saluran.

21

Otentikasi TLS gagal.

ASP SDK

Otentikasi TLS gagal.

22

Gagal terhubung ke %s.

ASP SDK

Kesalahan tautan saluran.

23

Gagal terhubung ke %s.

ASP SDK

Kesalahan otentikasi koneksi.

24

Gagal terhubung ke %s.

ASP SDK

Kesalahan I/O koneksi.

25

Gagal terhubung ke %s.

ASP SDK

Validasi tiket gagal. Kesalahan ini juga terjadi jika Anda menggunakan tiket yang sama untuk koneksi baru setelah sesi sebelumnya terputus.

26

ASP SDK

Kegagalan jabat tangan XQUIC.

1206

Satu tiket hanya mendukung satu koneksi aktif dalam satu waktu. Kesalahan ini terjadi jika Anda mencoba menggunakannya untuk koneksi baru saat sesi sudah aktif.

ASP SDK

1207

Me-restart instans membuat tiket tidak valid.

ASP SDK

Kode kesalahan kolaborasi aliran SDK

1000

token empty 

ASP SDK

Kesalahan kolaborasi aliran ini terjadi saat validasi sekunder antara client dan server gagal.

1001

user empty 

ASP SDK

1200

token invalid 

ASP SDK

1201

vm invalid 

ASP SDK

1202

ADMIN internal error 

ASP SDK

1203

user invalid 

ASP SDK

1204

token expired 

ASP SDK

1500

server internal error 

ASP SDK

1501

server network error 

ASP SDK

Pemutusan dan kesalahan koneksi

2000

Koneksi ke server timeout saat mengambil data dari %s.

ASP SDK

Pemutusan normal.

2001

%s terputus dari server. Hal ini dapat terjadi jika proses %s dipaksa dihentikan.

ASP SDK

Ini biasanya terjadi saat proses aplikasi di sisi client dihentikan, misalnya saat pengguna menutup aplikasi.

2002

Pengguna lain telah terhubung ke %s dari client berbeda. Silakan coba lagi nanti.

ASP SDK

Sesi diambil alih oleh pengguna lain dalam mode preemptive.

2003

%s sedang dimatikan atau di-restart. Operasi ini biasanya dilakukan oleh administrator. Silakan coba lagi nanti.

ASP SDK

Cloud phone dimatikan atau di-restart, biasanya oleh administrator.

2004

Koneksi pengguna saat ini dihentikan.

ASP SDK

Client memulai pemutusan, atau server menghentikan sesi.

2005

%s terputus karena sesi mencapai batas penggunaan yang ditetapkan oleh administrator.

ASP SDK

Sesi dihentikan karena mencapai batas penggunaan yang ditetapkan oleh administrator.

2006

Administrator mencabut izin Anda untuk menggunakan cloud phone ini. Sesi Anda akan terputus.

ASP SDK

Administrator mencabut izin pengguna.

2010

Gagal terhubung ke %s.

ASP SDK

Kegagalan koneksi Vdagent.

2011

Parameter koneksi tidak valid.

ASP SDK

Client mencoba terhubung dengan parameter yang tidak valid.

2027

Mode tarik aliran telah diubah.

ASP SDK

Mode tarik aliran diubah dari mode preemptive ke mode kolaboratif, atau sebaliknya.

2100

Izin clipboard ditolak: menyalin dari %s ke client lokal tidak diizinkan.

ASP SDK

Izin clipboard ditolak: menyalin dari VM ke client lokal tidak diizinkan.

2101

Izin clipboard ditolak: menyalin dari client lokal ke %s tidak diizinkan.

ASP SDK

Izin clipboard ditolak: menyalin dari client lokal ke VM tidak diizinkan.

2200

%s sedang mencoba menyambung ulang...

ASP SDK

Masalah jaringan menyebabkan kehilangan koneksi. ASP SDK sedang mencoba menyambung ulang.

2201

%s terputus karena masalah jaringan pada perangkat Anda.

ASP SDK

Masalah jaringan menyebabkan kehilangan koneksi. ASP SDK tidak mendukung penyambungan ulang otomatis untuk image saat ini, sehingga sisi aplikasi harus memulainya.

2202

Penyambungan ulang ke %s timeout. Periksa jaringan perangkat Anda dan coba lagi.

ASP SDK

Timeout penyambungan ulang ASP SDK.

2210

Cloud phone terputus karena perangkat client memasuki mode tidur, menyebabkan kehilangan jaringan.

ASP SDK

2212

Cloud phone terputus karena masalah jaringan lokal.

ASP SDK

2220

Cloud phone terputus karena masalah jaringan lokal.

ASP SDK

2240

Penyambungan ulang gagal karena token dalam tiket tidak valid.

2300

Koneksi gagal karena parameter yang tidak valid dikirim dari sisi aplikasi.

2501

Client gagal terhubung ke gateway aliran. Jaringan tidak dapat dijangkau.

2502

Client gagal terhubung ke gateway aliran. Koneksi TCP ke IP gateway aliran timeout setelah tiga percobaan (total 15 detik).

2503

Client gagal terhubung ke gateway aliran karena kesalahan jaringan yang tidak diketahui.

2504

Koneksi client ke gateway aliran terganggu oleh perangkat lunak.

2505

Koneksi client ke gateway aliran ditolak.

2506

Tiket tidak valid. Gateway aliran gagal mengurai token.

2507

Tiket tidak valid. Tiket telah kedaluwarsa.

2508

Tiket tidak valid. UUID tidak cocok.

2509

Gateway aliran gagal melakukan probe ke server ASP.

2510

Server menolak probe.
Resolusi: Pastikan server sedang mendengarkan pada port 5912.

2511

Probe server gagal karena alasan selain timeout atau penolakan.

2512

Validasi token gateway aliran gagal.

vpcId dalam token management tidak cocok dengan vpcId gateway aliran.

2513

Koneksi TCP tiba-tiba di-reset selama pertukaran "hello" antara client dan gateway aliran.

2520

Koneksi gagal. Diagnosis mandiri client menunjukkan adanya masalah jaringan.

2521

Koneksi terputus secara abnormal tiga kali selama fase Proses jabat tangan TLS antara client dan gateway aliran.

2522

Terjadi kesalahan koneksi di lingkungan VPN.

2523

Client mencoba terhubung menggunakan protokol kriptografi nasional. Verifikasi pengaturan server atau pilih metode koneksi yang kompatibel.

2701

Masalah jaringan di sisi client. Sebagai uji coba, coba terhubung menggunakan hotspot seluler 5G untuk melihat apakah masalah masih berlanjut.

2702

Proses jabat tangan SSL antara client dan gateway aliran timeout.

2703

Pertukaran "hello" antara client dan gateway aliran timeout.

2704

Server ASP timeout saat merespons permintaan pembentukan koneksi.

Kemungkinan penyebab termasuk server ASP beku, masalah jaringan, image tidak responsif, atau penggunaan CPU/memori tinggi.

2705

Client ASP timeout saat menunggu frame pertama.

Kemungkinan penyebab termasuk server ASP beku, kegagalan pembuatan frame (karena masalah tangkapan layar atau driver GPU), masalah jaringan, atau penggunaan CPU/memori tinggi.

2706

Koneksi gagal karena penggunaan CPU atau memori tinggi pada perangkat client.

2707

Server ASP timeout saat mengambil frame tangkapan layar pertama dari OS guest.

2708

Koneksi gagal karena thread SDK macet.

Kesalahan logika sisi client

5100

Koneksi ke server ASP timeout. Silakan coba lagi nanti.

Sisi aplikasi

Sisi client tidak menerima event "connected" dalam jangka waktu yang diharapkan.

5102

Timeout saat menunggu data dari %s. Silakan coba lagi nanti.

Sisi aplikasi

Sisi client menerima event "connected" tetapi tidak menerima event "display" dalam jangka waktu yang diharapkan.

5004

Client mengalami kesalahan. Silakan restart client.

Sisi aplikasi

Sisi client menerima parameter startup yang tidak valid. Ini biasanya terjadi selama pengembangan.

5200

Penyambungan ulang client timeout. Silakan coba lagi nanti.

Sisi aplikasi

FAQ

Restart Elastic Cloud Phone

Untuk me-restart instans, panggil API Restart Instance. Hal ini akan memutus ECP dari klien. Setelah instans di-restart, sambungkan kembali ke instans tersebut.

Perintah ADB umum

Fungsi

Perintah

Back button

input keyevent KEYCODE_BACK

Home button

input keyevent KEYCODE_HOME

App switch button

input keyevent KEYCODE_APP_SWITCH

Mute

input keyevent 164

Volume up

input keyevent KEYCODE_VOLUME_UP

Volume down

input keyevent KEYCODE_VOLUME_DOWN

Hide navigation bar

setprop persist.wy.hasnavibar false; killall com.android.systemui

Show navigation bar

setprop persist.wy.hasnavibar true; killall com.android.systemui

Screenshot

screencap -p /sdcard/Download/abc.png