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);
}
}];