Commit e47e1e2f authored by 郑磊's avatar 郑磊

更新原生api调用方式

parent 1fee7a3a
...@@ -16,11 +16,11 @@ declare global { ...@@ -16,11 +16,11 @@ declare global {
} }
} }
function callIosApi<T>(name: string, data: any, ack?: (data: T) => void): boolean function callIosApi<T>(name: string, data: any, ack?: (data: T) => void): void
function callIosApi<T>(name: string, ack?: (data: T) => void): boolean function callIosApi<T>(name: string, ack?: (data: T) => void): void
function callIosApi<T>(name: string, ...args: any[]): boolean { function callIosApi<T>(name: string, ...args: any[]): void {
if (typeof window.webkit?.messageHandlers[name]?.postMessage === 'function') { if (typeof window.webkit?.messageHandlers[name]?.postMessage === 'function') {
return false return
} }
let params: any = undefined let params: any = undefined
...@@ -38,14 +38,13 @@ function callIosApi<T>(name: string, ...args: any[]): boolean { ...@@ -38,14 +38,13 @@ function callIosApi<T>(name: string, ...args: any[]): boolean {
} }
window.webkit.messageHandlers[name].postMessage(params ?? true) window.webkit.messageHandlers[name].postMessage(params ?? true)
return true
} }
function callAndroidApi<T>(name: string, data: any, ack?: (data: T) => void): boolean function callAndroidApi<T>(name: string, data: any, ack?: (data: T) => void): void
function callAndroidApi<T>(name: string, ack?: (data: T) => void): boolean function callAndroidApi<T>(name: string, ack?: (data: T) => void): void
function callAndroidApi(name: string, ...args: any[]): boolean { function callAndroidApi(name: string, ...args: any[]): void {
if (typeof window.liveapp[name] !== 'function') { if (typeof window.liveapp[name] !== 'function') {
return false return
} }
let params: any = undefined let params: any = undefined
...@@ -57,17 +56,14 @@ function callAndroidApi(name: string, ...args: any[]): boolean { ...@@ -57,17 +56,14 @@ function callAndroidApi(name: string, ...args: any[]): boolean {
ack = args[1] ack = args[1]
} }
if (typeof ack === 'function') {
// @ts-ignore
window[name] = ack
}
const invokeArgs: Parameters<(typeof window.liveapp)[string]> = [] const invokeArgs: Parameters<(typeof window.liveapp)[string]> = []
if (typeof params !== 'undefined' && params !== null) { if (typeof params !== 'undefined' && params !== null) {
invokeArgs.push(JSON.stringify(params)) invokeArgs.push(JSON.stringify(params))
} }
window.liveapp[name](...invokeArgs) const result = window.liveapp[name](...invokeArgs)
return true if (typeof ack === 'function') {
ack(result)
}
} }
const isiOS = !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) //ios终端 const isiOS = !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) //ios终端
...@@ -77,10 +73,10 @@ const isiOS = !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) //ios ...@@ -77,10 +73,10 @@ const isiOS = !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) //ios
* @param name * @param name
* @param params * @param params
*/ */
export function callNativeApi<T>(name: string, data: any, ack?: (data: T) => void): boolean export function callNativeApi<T>(name: string, data: any, ack?: (data: T) => void): void
export function callNativeApi<T>(name: string, ack?: (data: T) => void): boolean export function callNativeApi<T>(name: string, ack?: (data: T) => void): void
export function callNativeApi(name: string, ...args: any[]): boolean { export function callNativeApi(name: string, ...args: any[]): void {
return isiOS ? callIosApi(name, ...args) : callAndroidApi(name, ...args) isiOS ? callIosApi(name, ...args) : callAndroidApi(name, ...args)
} }
export namespace NativeApi { export namespace NativeApi {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment