t-comm
Version:
专业、稳定、纯粹的工具库
204 lines (201 loc) • 6.41 kB
JavaScript
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 };