fix(avatar): mark native shell before bridge readiness
This commit is contained in:
@@ -12,9 +12,10 @@ export interface UniLaunchParams {
|
|||||||
nickname?: string
|
nickname?: string
|
||||||
avatar?: string
|
avatar?: string
|
||||||
ts?: string
|
ts?: string
|
||||||
|
nativeShell?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
const PARAM_KEYS: (keyof UniLaunchParams)[] = ['token', 'userId', 'nickname', 'avatar', 'ts']
|
const PARAM_KEYS: (keyof UniLaunchParams)[] = ['token', 'userId', 'nickname', 'avatar', 'ts', 'nativeShell']
|
||||||
|
|
||||||
function readParams(search: string, target: UniLaunchParams): void {
|
function readParams(search: string, target: UniLaunchParams): void {
|
||||||
const sp = new URLSearchParams(search)
|
const sp = new URLSearchParams(search)
|
||||||
@@ -24,6 +25,11 @@ function readParams(search: string, target: UniLaunchParams): void {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function hasNativeShellMarker(): boolean {
|
||||||
|
const params = getLaunchParams()
|
||||||
|
return params.nativeShell === 'uniapp'
|
||||||
|
}
|
||||||
|
|
||||||
// 是否运行在 uniapp web-view 环境中
|
// 是否运行在 uniapp web-view 环境中
|
||||||
export function isInUniWebView(): boolean {
|
export function isInUniWebView(): boolean {
|
||||||
const runtime = window as any
|
const runtime = window as any
|
||||||
@@ -40,7 +46,10 @@ export function isInUniWebView(): boolean {
|
|||||||
runtime.swan?.webView ||
|
runtime.swan?.webView ||
|
||||||
runtime.tt?.miniProgram
|
runtime.tt?.miniProgram
|
||||||
)
|
)
|
||||||
return Boolean(runtime.uni?.webView && (isDCloudApp || isMiniProgram))
|
// `plus` can be injected after the H5 entry point runs. The native shell
|
||||||
|
// therefore adds a URL marker while creating its web-view URL, so the
|
||||||
|
// payment entry does not disappear during that startup window.
|
||||||
|
return Boolean(runtime.uni?.webView && (isDCloudApp || isMiniProgram || hasNativeShellMarker()))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 解析 web-view 加载 URL 时原生注入的参数(token / 会会用户)
|
// 解析 web-view 加载 URL 时原生注入的参数(token / 会会用户)
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
export function buildH5Url(base, session) {
|
export function buildH5Url(base, session) {
|
||||||
const url = new URL(base)
|
const url = new URL(base)
|
||||||
|
// This is deliberately explicit instead of relying on the timing of the
|
||||||
|
// H5+ `plus` injection inside the embedded page.
|
||||||
|
url.searchParams.set('nativeShell', 'uniapp')
|
||||||
if (session.token) url.searchParams.set('token', session.token)
|
if (session.token) url.searchParams.set('token', session.token)
|
||||||
if (session.userId) url.searchParams.set('userId', session.userId)
|
if (session.userId) url.searchParams.set('userId', session.userId)
|
||||||
if (session.nickname) url.searchParams.set('nickname', session.nickname)
|
if (session.nickname) url.searchParams.set('nickname', session.nickname)
|
||||||
|
|||||||
Reference in New Issue
Block a user