Skip to content

应用间通信模块

数据结构

ESIACMessage

应用间通信消息

参数描述类型非空
action事件名称string
package需要接受事件的快应用包名string
extras其他信息anny

ESIACMessageFilter

应用间通信消息过滤器

参数描述类型非空
action需要接受的事件列表Array<string>

接口

sendMessage

该方法发送消息。

完整方法声明:function sendMessage(message: ESIACMessage): Promise<boolean>

  • 参数:
参数描述类型非空
message消息ESIACMessage
  • 返回值:
属性描述类型默认值
是否成功Promise<boolean>

registerReceiver

该方法注册消息监听。

完整方法声明:function registerReceiver(receiver: ESIACReceiver, messageFilter: ESIACMessageFilter): void

  • 参数:
参数描述类型非空
receiver消息接受者ESIACReceiver
messageFilter消息过滤器ESIACMessageFilter
  • 返回值:
属性描述类型默认值
void

unregisterReceiver

该方法取消注册消息监听。

完整方法声明:function unregisterReceiver(receiver: ESIACReceiver): void

  • 参数:
参数描述类型非空
receiver消息接受者ESIACReceiver
  • 返回值:
属性描述类型默认值
void

基础用法

  • 代码示例:
    点击查看源码
    vue
    <template>
    	<div class='es-sdk-root-css'>
    		<s-title-view class='es-sdk-content-title-css' :text='this.$options.name' />
    		<div class='es-sdk-content-divider-css' />
    		<div class='es-sdk-content-column-css'>
    			<div class='es-sdk-content-row-css'>
    				<s-text-button text='发送给所有应用消息A' @onButtonClicked='onSendMessageAButtonClicked' />
    				<s-text-button text='注册消息接受者A' @onButtonClicked='onRegisterReceiverAButtonClicked' />
    				<s-text-button text='取消注册消息接受者A' @onButtonClicked='onUnregisterReceiverAButtonClicked' />
    			</div>
    			<div class='es-sdk-content-row-css'>
    				<s-text-button text='发送给所有应用消息B' @onButtonClicked='onSendMessageBButtonClicked' />
    				<s-text-button text='注册消息接受者B' @onButtonClicked='onRegisterReceiverBButtonClicked' />
    				<s-text-button text='取消注册消息接受者B' @onButtonClicked='onUnregisterReceiverBButtonClicked' />
    			</div>
    			<div class='es-sdk-content-row-css'>
    				<s-text-button text='给八阿哥发送消息C' @onButtonClicked='onSendMessageCButtonClicked' />
    				<s-text-button text='注册消息接受者C' @onButtonClicked='onRegisterReceiverCButtonClicked' />
    				<s-text-button text='取消注册消息接受者C' @onButtonClicked='onUnregisterReceiverCButtonClicked' />
    			</div>
    			<div class='es-sdk-content-row-css'>
    				<s-text-button text='给七阿哥发送消息D' @onButtonClicked='onSendMessageDButtonClicked' />
    				<s-text-button text='注册消息接受者D' @onButtonClicked='onRegisterReceiverDButtonClicked' />
    				<s-text-button text='取消注册消息接受者D' @onButtonClicked='onUnregisterReceiverDButtonClicked' />
    			</div>
    		</div>
    		<s-text-view :text='intentText'></s-text-view>
    	</div>
    </template>
    
    <script lang='ts'>
    
    import {defineComponent} from '@vue/runtime-core';
    import {
    	ESIACMessage,
    	ESIACReceiver,
    	useESIAC,
    } from '@extscreen/es3-core';
    import {ref} from 'vue';
    import {ESLogLevel, useESLog} from '@extscreen/es3-core';
    
    const TAG = 'ESIACPage';
    
    export default defineComponent({
    	name: '应用间通信模块',
    	setup() {
    
    		const intentText = ref('');
    
    		const iac = useESIAC();
    		const log = useESLog();
    
    		const receiverAMessageFilter = {
    			action: [
    				'android.intent.action.TEST_BC_A',
    			],
    		};
    		const receiverBMessageFilter = {
    			action: [
    				'android.intent.action.TEST_BC_B',
    			],
    		};
    		const receiverCMessageFilter = {
    			action: [
    				'android.intent.action.TEST_BC_C',
    			],
    		};
    		const receiverDMessageFilter = {
    			action: [
    				'com.huan.appstore.intent.action.ext',
    			],
    		};
    
    		const messageReceiverA: ESIACReceiver = {
    
    			onReceive(message: ESIACMessage) {
    				if (log.isLoggable(ESLogLevel.DEBUG)) {
    					log.d(TAG, '------messageReceiverA--onReceive--->>>' + message);
    				}
    				intentText.value = JSON.stringify(message);
    			},
    		};
    
    		const messageReceiverB: ESIACReceiver = {
    
    			onReceive(message: ESIACMessage) {
    				if (log.isLoggable(ESLogLevel.DEBUG)) {
    					log.d(TAG, '------messageReceiverB--onReceive--->>>' + message);
    				}
    				intentText.value = JSON.stringify(message);
    			},
    		};
    
    		const messageReceiverC: ESIACReceiver = {
    
    			onReceive(message: ESIACMessage) {
    				if (log.isLoggable(ESLogLevel.DEBUG)) {
    					log.d(TAG, '------messageReceiverC--onReceive--->>>' + message);
    				}
    				intentText.value = JSON.stringify(message);
    			},
    		};
    
    		const messageReceiverD: ESIACReceiver = {
    
    			onReceive(message: ESIACMessage) {
    				if (log.isLoggable(ESLogLevel.DEBUG)) {
    					log.d(TAG, '------messageReceiverD--onReceive--->>>' + message);
    				}
    				intentText.value = JSON.stringify(message);
    			},
    		};
    
    		function onSendMessageAButtonClicked() {
    			let message: ESIACMessage = {
    				action: 'android.intent.action.TEST_BC_A',
    			};
    			iac.sendMessage(message);
    		}
    
    		function onSendMessageBButtonClicked() {
    			let message: ESIACMessage = {
    				action: 'android.intent.action.TEST_BC_B',
    			};
    			iac.sendMessage(message);
    		}
    
    		function onSendMessageCButtonClicked() {
    			let message: ESIACMessage = {
    				action: 'android.intent.action.TEST_BC_C',
    				package: 'es.test.eight',
    			};
    			iac.sendMessage(message);
    		}
    
    		function onSendMessageDButtonClicked() {
    			let message: ESIACMessage = {
    				action: 'android.intent.action.TEST_BC_D',
    				package: 'es.test.seven',
    			};
    			iac.sendMessage(message);
    		}
    
    		function onRegisterReceiverAButtonClicked() {
    			iac.registerReceiver(messageReceiverA, receiverAMessageFilter);
    		}
    
    		function onRegisterReceiverBButtonClicked() {
    			iac.registerReceiver(messageReceiverB, receiverBMessageFilter);
    		}
    
    		function onRegisterReceiverCButtonClicked() {
    			iac.registerReceiver(messageReceiverC, receiverCMessageFilter);
    		}
    
    		function onRegisterReceiverDButtonClicked() {
    			iac.registerReceiver(messageReceiverD, receiverDMessageFilter);
    		}
    
    		function onUnregisterReceiverAButtonClicked() {
    			iac.unregisterReceiver(messageReceiverA);
    		}
    
    		function onUnregisterReceiverBButtonClicked() {
    			iac.unregisterReceiver(messageReceiverB);
    		}
    
    		function onUnregisterReceiverCButtonClicked() {
    			iac.unregisterReceiver(messageReceiverC);
    		}
    
    		function onUnregisterReceiverDButtonClicked() {
    			iac.unregisterReceiver(messageReceiverD);
    		}
    
    		return {
    			intentText,
    			onSendMessageAButtonClicked,
    			onSendMessageBButtonClicked,
    			onSendMessageCButtonClicked,
    			onSendMessageDButtonClicked,
    			onRegisterReceiverAButtonClicked,
    			onRegisterReceiverBButtonClicked,
    			onRegisterReceiverCButtonClicked,
    			onRegisterReceiverDButtonClicked,
    			onUnregisterReceiverAButtonClicked,
    			onUnregisterReceiverBButtonClicked,
    			onUnregisterReceiverCButtonClicked,
    			onUnregisterReceiverDButtonClicked,
    		};
    	},
    });
    
    </script>
    <style>
    </style>