全部产品
Search
文档中心

SuperApp:Perluas kemampuan miniapp uni-app

更新时间:Jun 28, 2025

Kemampuan yang dijelaskan dalam topik ini spesifik untuk uni-app dan digunakan untuk mengirim serta menerima event antara aplikasi host dan miniapp.

Aplikasi host mengirim event ke miniapp

API

@protocol EMASMiniAppService <NSObject>

/**
 * Kirim event hanya ke uni-app miniapp
 * @param event Nama dari event.
 * @param appId ID dari miniapp.
 * @param data Data bertipe NSString atau NSDictionary.
 */
-(void)sendEvent:(NSString *)event appId:(NSString *)appId data:(id __nullable)data;

Contoh Kode:

id<EMASMiniAppService> service = [[EMASServiceManager sharedInstance] serviceForProtocol:@"EMASMiniAppService"];
if (service && miniAppId.length > 0) {
	[service sendEvent:@"NativeEvent" appId:miniAppId data:@{@"msg":@"native message"}];
}

Miniapp menerima event yang dikirim oleh aplikasi host

uni.onNativeEventReceive((event,data)=>{
	console.log ('Pesan diterima dari aplikasi host:' + event + data);
	this.nativeMsg ='Pesan diterima dari aplikasi host:' + event + " data: " + data;
})

Parameter

Parameter

Tipe data

Deskripsi

event

String

Nama dari event.

data

String atau JsonObject

Data yang dikirim oleh aplikasi host.

Miniapp mengirim event ke aplikasi host

Kirim Event ke Aplikasi Host

uni.sendNativeEvent(event,callback)

Parameter

Parameter

Tipe data

Deskripsi

event

String

Nama dari event.

data

String atau JsonObject

Parameter data dalam event.

callback

Fungsi

Metode callback untuk aplikasi host. Tipe data bisa berupa String atau JsonObject berdasarkan implementasi aplikasi host.

Contoh Kode:

// Kirim event ke aplikasi host.
uni.sendNativeEvent('unimp-event', {
	msg: 'unimp message!!!'
}, ret => {
	this.nativeMsg ='Data yang dikembalikan oleh aplikasi host:' + ret;
})

Aplikasi host menerima event yang dikirim oleh miniapp

Ketika event yang diterima oleh aplikasi host dari miniapp memicu blok callback dari EMASMiniAppService, aplikasi host harus menetapkan blok callback menggunakan setEventReceiveBlock.

@protocol EMASMiniAppService <NSObject>


/** Metode callback yang dipanggil ketika uni-app miniapp mengirim event ke aplikasi native.
 * @param EMASUniAppReceiveEventBlock  Blok callback event yang berisi parameter berikut:
 * @param event Nama dari event.
 * @param appid ID dari miniapp.
 * @param data Data bertipe NSString atau NSDictionary.
 * @param callback Fungsi callback yang digunakan untuk mengirim data kembali ke miniapp.
 */
-(void)setEventReceiveBlock:(EMASUniAppReceiveEventBlock)receiveBlock;

EMASUniAppKeepAliveCallback description
/**
 * Fungsi callback yang digunakan untuk mengirim data kembali ke miniapp.
 * result: Parameter callback dapat berupa tipe NSString atau NSDictionary.
 * keepAlive: Jika keepAlive disetel ke YES, metode callback dapat dipanggil beberapa kali untuk mengirim data kembali ke miniapp. Sebaliknya, metode callback akan dihapus setelah metode tersebut dipicu sekali.
 */
typedef void (^EMASUniAppKeepAliveCallback)(id result, BOOL keepAlive);

EMASUniAppReceiveEventBlock description
/** EMASUniAppReceiveEventBlock   Blok callback yang dieksekusi ketika uni-app miniapp mengirim event ke aplikasi native.
 * @param event Nama dari event.
 * @param appid ID dari miniapp.
 * @param data Data bertipe NSString atau NSDictionary.
 * @param callback Fungsi callback yang digunakan untuk mengirim data kembali ke miniapp.
 */
typedef void(^EMASUniAppReceiveEventBlock)(NSString *event, NSString *appId, id __nullable data, EMASUniAppKeepAliveCallback callback);

Contoh Kode:

id<EMASMiniAppService> service = [[EMASServiceManager sharedInstance] serviceForProtocol:@"EMASMiniAppService"];

// Metode yang dipanggil ketika aplikasi host menerima event yang dikirim oleh miniapp.
[service setEventReceiveBlock:^(NSString *event, NSString *appId, id  _Nullable data, EMASUniAppKeepAliveCallback callback) {

  NSLog(@"Terima UniMP event: %@ data: %@, appId: %@",event, data, appId);

  // Fungsi callback yang digunakan untuk mengirim data kembali ke miniapp.
  // Untuk informasi tentang cara menggunakan EMASUniAppKeepAliveCallback, lihat deskripsi terkait.
  if (callback) {
  	callback(@"native callback message",NO);
  }
}];