UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

204 lines (201 loc) 6.41 kB
import _typeof from '@babel/runtime/helpers/typeof'; import { initEnv, getEnvUAType } from '../env/env.mjs'; import { loader } from '../loader/little-loader.mjs'; /** * MSDK 浏览器中,向原生发送数据 * @param {string} data 发送的数据 * ```ts * sendToMsdkNative('123') * ``` */ function sendToMsdkNative(data) { if (data === void 0) { data = ''; } var env = initEnv(); if (env.isMsdk && !env.isMsdkV5) { if (typeof window.msdkCallNative === 'function') { window.msdkCallNative(data); } else if (typeof window.msdkCall === 'function') { window.msdkCall('WGSendMessageToNative', "{\"MsdkMethod\":\"WGSendMessageToNative\",\"MsgData\":\"".concat(data, "\"}")); } } else if (env.isAndroid) { confirm(data); } else if (env.isIOS) { window.location.href = encodeURIComponent(data); } } function addMsdkNativeCallbackListener(callback) { var env = initEnv(); if (env.isMsdk && !env.isMsdkV5) { if (typeof window.setMsdkCallback === 'function') { window.setMsdkCallback(callback); } else if (typeof window.msdkAddNativeCallbackObserver === 'function') { window.msdkAddNativeCallbackObserver(callback); } } } function removeMsdkNativeCallbackListener(callback) { var env = initEnv(); if (env.isMsdk && !env.isMsdkV5) { if (typeof window.msdkRemoveNativeCallbackObserver === 'function') { window.msdkRemoveNativeCallbackObserver(callback); } } } /** * MSDK 浏览器中,关闭 webView * @example * ```ts * closeMsdkWebview() * ``` */ function closeMsdkWebview(env) { if (!env) { env = initEnv(); } console.info('[closeMsdkWebview] env', env); // ua需要先判断MSDK V5版本 if (env.isMsdkV5 && typeof window.msdkCall === 'function') { var closeWebView_1 = '{"MsdkMethod":"closeWebView"}'; window.msdkCall(closeWebView_1); } else if (env.isMsdk) { if (typeof window.msdkCloseWebview === 'function') { if (!env.isIOS || env.isIOS && window.msdkiOSHandler) { window.msdkCloseWebview(); } } else if (typeof window.msdkCallNative === 'function') { window.msdkCallNative('{"MsdkMethod":"CloseWebview"}'); } } else if (env.isSlugSdk && window.customBrowserInterface) { window.customBrowserInterface.closeWebview(); } } /** * 关闭 webView,包含 msdk 浏览器和其他浏览器 * @example * ```ts * closeWebView() * ``` */ function closeWebView() { console.log('[closeWebView] call close webview'); var env = initEnv(); if (env.isMsdk) { closeMsdkWebview(); } else if (env.isSlugSdk) { if (window.customBrowserInterface) { window.customBrowserInterface.closeWebview(); } } else { window.location.href = 'about:blank'; console.log('[closeWebView] call close webview failed'); } } /** * 添加游戏内浏览器jssdk * @example * ```ts * callJsBrowserAdapter(); * ``` */ function callJsBrowserAdapter() { return new Promise(function (resolve) { var env = initEnv(); if (env.isMsdkV5) { loader('https://image-1251917893.file.myqcloud.com/igame/common/js/msdkJsAdapterV5.js', function () { resolve(true); }); } else if (env.isMsdk) { if (env.isMsdkX) { loader('https://image-1251917893.file.myqcloud.com/igame/common/js/msdkJsAdapterV3_embedded.js', function () { resolve(true); }); } else { loader('https://image-1251917893.file.myqcloud.com/igame/common/js/msdkJsAdapterV3.js', function () { resolve(true); }); } } else if (env.isSlugSdk) { loader('https://image-1251917893.file.myqcloud.com/igame/common/js/browser_adapt_20240702.js', function () { resolve(true); }); } }); } /** * 设置 MSDK 浏览器退出全屏,需提前加载 sdk * @example * ```ts * callJsReSetFullScreen(); * ``` */ var callJsReSetFullScreen = function callJsReSetFullScreen() { callJsSetFullScreen(false); }; /** * 设置 MSDK 浏览器全屏,需提前加载 sdk * @param isFullScreen 是否全屏 * @example * ```ts * callJsSetFullScreen(); * callJsSetFullScreen(false); * ``` */ var callJsSetFullScreen = function callJsSetFullScreen(isFullScreen) { var _a, _b; if (isFullScreen === void 0) { isFullScreen = true; } var _c = getEnvUAType(), isSlugSdk = _c.isSlugSdk, isMsdkV5 = _c.isMsdkV5, isMsdk = _c.isMsdk, isMsdkX = _c.isMsdkX, isAndroid = _c.isAndroid; if (isSlugSdk) { if (_typeof(window.customBrowserInterface) === 'object') { var method = isFullScreen ? 'hideUi' : 'showUi'; window.customBrowserInterface[method](); } } else if (isMsdkV5) { var setFullScreenStr_1 = JSON.stringify({ MsdkMethod: 'setFullScreen', isFullScreen: !!isFullScreen }); // 延时设置全屏 setTimeout(function () { var _a, _b; if (isAndroid) { (_a = window.msdkCall) === null || _a === void 0 ? void 0 : _a.call(window, setFullScreenStr_1); } else { if (window.WebViewJavascriptBridge) { (_b = window.msdkCall) === null || _b === void 0 ? void 0 : _b.call(window, setFullScreenStr_1); } else { document.addEventListener('WebViewJavascriptBridgeReady', function () { var _a; (_a = window.msdkCall) === null || _a === void 0 ? void 0 : _a.call(window, setFullScreenStr_1); }, false); } } }, 100); } else if (isMsdk && !isMsdkX) { var setFullScreenStr_2 = JSON.stringify({ MsdkMethod: 'WGSetFullScreen', isFullScreen: !!isFullScreen }); if (isAndroid) { (_a = window.msdkCall) === null || _a === void 0 ? void 0 : _a.call(window, 'WGSetFullScreen', setFullScreenStr_2); } else { if (window.WebViewJavascriptBridge) { (_b = window.msdkCall) === null || _b === void 0 ? void 0 : _b.call(window, 'WGSetFullScreen', setFullScreenStr_2); } else { document.addEventListener('WebViewJavascriptBridgeReady', function () { var _a; (_a = window.msdkCall) === null || _a === void 0 ? void 0 : _a.call(window, 'WGSetFullScreen', setFullScreenStr_2); }, false); } } } }; export { addMsdkNativeCallbackListener, callJsBrowserAdapter, callJsReSetFullScreen, callJsSetFullScreen, closeMsdkWebview, closeWebView, removeMsdkNativeCallbackListener, sendToMsdkNative };