|  | @@ -29,7 +29,7 @@ type CallBack = (evt?: IPostMessage) => void;
 | 
	
		
			
				|  |  |  // eslint-disable-next-line @typescript-eslint/no-empty-function
 | 
	
		
			
				|  |  |  const loop = () => {};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -const calls: { [key: string]: CallBack } = {};
 | 
	
		
			
				|  |  | +const calls: { [key: string]: CallBack | CallBack[] } = {};
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const browserInfo = browser();
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -58,13 +58,13 @@ if (browserInfo.isApp) {
 | 
	
		
			
				|  |  |          );
 | 
	
		
			
				|  |  |          for (const key of keys) {
 | 
	
		
			
				|  |  |            const callback = calls[key] || loop;
 | 
	
		
			
				|  |  | -          callback(data);
 | 
	
		
			
				|  |  | +          typeof callback === 'function' && callback(data);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        const callId = data.content?.uuid || data.uuid || data.api + data.uuid;
 | 
	
		
			
				|  |  |        const callback = calls[callId] || loop;
 | 
	
		
			
				|  |  | -      callback(data);
 | 
	
		
			
				|  |  | +      typeof callback === 'function' && callback(data);
 | 
	
		
			
				|  |  |      } catch (error) {
 | 
	
		
			
				|  |  |        console.error('通信消息解析错误', error);
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -86,8 +86,21 @@ export const postMessage = (data: IPostMessage, callback?: CallBack) => {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export const listenerMessage = (api: string, callback: CallBack) => {
 | 
	
		
			
				|  |  |    if (browserInfo.isApp) {
 | 
	
		
			
				|  |  | -    const uuid = api + getRandomKey();
 | 
	
		
			
				|  |  | -    calls[uuid] = callback || loop;
 | 
	
		
			
				|  |  | +    const uuid = api;
 | 
	
		
			
				|  |  | +    if (!calls[uuid]) {
 | 
	
		
			
				|  |  | +      calls[uuid] = [];
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    (calls[uuid] as CallBack[]).push(callback || loop);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +export const removeListenerMessage = (api: string, callback: CallBack) => {
 | 
	
		
			
				|  |  | +  if (browserInfo.isApp) {
 | 
	
		
			
				|  |  | +    const uuid = api;
 | 
	
		
			
				|  |  | +    if (Array.isArray(calls[uuid])) {
 | 
	
		
			
				|  |  | +      const indexOf = (calls[uuid] as CallBack[]).indexOf(callback);
 | 
	
		
			
				|  |  | +      (calls[uuid] as CallBack[]).splice(indexOf, 1);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 |