UNPKG

act-soloop-js-bridge

Version:

H5与即录soloop App交互工具库

227 lines (222 loc) 6.42 kB
import HeytapJsApi from '@oppo/lib-heytap-jsapi'; window.HeytapJsApi = HeytapJsApi; const getQueryString = (name, searchString) => { var paramsStr = searchString || window.location.search || ''; paramsStr = paramsStr.replace(/\?/g, '&'); //若有过多?号造成异常,则替换 if (paramsStr) { let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); let r = paramsStr.match(reg); if (r != null) return decodeURI(r[2]); return null; } return null; }; /** * 获取app信息 ok * @return {Promise<Object>} App信息对象 * @return {Promise<Object>} package_name App包名 * @return {Promise<Object>} version_code App版本号 * @return {Promise<Object>} version_name App版本名 * */ function getAppInfo() { console.log('getAppInfo', 'start'); return HeytapJsApi.invoke({ name: 'common.app_info', data: {} }) .then((res) => { console.log('app_info', res); return res.data; }) .catch((err) => { console.log('err :', err); return Promise.reject(err); }); } /** * 获取设备openId * @return {Promise<String>} 设备openId */ function getOpenId() { return HeytapJsApi.invoke({ name: 'account.open_id', data: {} }) .then((res) => { console.log('open_id', res); if (res.data) { return res.data.open_id; } else { return Promise.reject('无法获取到open_id'); } }) .catch((err) => { console.log('err :', err); return Promise.reject(err); }); } /** * 是否在App内 * @return {Promise<Boolean>} 是否在App内 */ async function isInApp(packageName = 'com.coloros.videoeditor') { let res = false; let appInfo = await getAppInfo().catch(() => { return {}; }); if (appInfo.package_name === packageName) { res = true; } return res; } /** * 获取设备信息 ok * @return {Promise<Object>} 设备信息对象 * @return {Promise<Object>} language 语言 * @return {Promise<Object>} time_zone 时区 * @return {Promise<Object>} country 国家 * @return {Promise<Object>} system_version 系统版本 * @return {Promise<Object>} brand 品牌 * @return {Promise<Object>} model 设备型号 */ function getDeviceInfo() { return HeytapJsApi.invoke({ name: 'common.device_info', data: {} }) .then((res) => { console.log('device_info', res); return res.data; }) .catch((err) => { console.log('err :', err); return Promise.reject(err); }); } /** * 获取设备所有信息 ok * @return {Promise<Object>} 设备信息对象 * @return {Promise<Object>} language 语言 * @return {Promise<Object>} time_zone 时区 * @return {Promise<Object>} country 国家 * @return {Promise<Object>} system_version 系统版本 * @return {Promise<Object>} brand 品牌 * @return {Promise<Object>} model 设备型号 * @return {Promise<Object>} openId 设备号,可用于替代imei,需要用户授权 */ async function getAllDeviceInfo() { let deviceInfo = await getDeviceInfo().catch(() => false); let openId = await getOpenId().catch(() => false); // openId可能为空字符串 if (deviceInfo && openId !== false) { return { ...deviceInfo, openId }; } else { return Promise.reject('获取设备信息失败'); } } // ok轻提示 function toast(message, duration = 2000) { HeytapJsApi.invoke({ name: 'common.toast', data: { message, duration } }); } /** * 获取用户信息 ok * @return {Promise<Object>} 用户信息对象 * @return {Promise<Object>} isLogin 是否登陆 * @return {Promise<Object>} ssoid 用户账号 * @return {Promise<Object>} country 国家 * @return {Promise<Object>} token 用户令牌 */ function getUserInfo() { return HeytapJsApi.invoke({ name: 'account.user_info', data: {} }) .then((res) => { console.log('user_info', res); if (res.code === 0 && res.data) { return res.data; } else { return Promise.reject(res.data); } }) .catch((err) => { console.log('err :', err); return Promise.reject(err); }); } /** * 用户是否登陆 ok * @return {Promise<Boolean>} 用户是否登陆 */ async function isLogin() { let userInfo = await getUserInfo().catch(() => { return {}; }); return !!userInfo.isLogin; } /** * 用户登陆 ok * @return {Promise<Object>} 用户是否登陆 * @return {Promise<Object>} isLogin 用户是否登陆 * @return {Promise<Object>} ssoid 用户账号 * @return {Promise<Object>} country 用户国家 */ function doLogin() { return HeytapJsApi.invoke({ name: 'account.login', data: {} }) .then((res) => { console.log('login', res); if (res.code === 0 && res.data) { return res.data; } else { return Promise.reject(res.data); } }) .catch((err) => { console.log('err :', err); return Promise.reject(err); }); } // ok 在即录App中打开任意指定的web页面,默认当前页面 function openAppWebPage(urlStr) { let href = urlStr || window.location.href; let title = getQueryString('title', href); window.location.href = `oaps://soloop/web?u=${encodeURIComponent(href)}&t=${title}`; } // ok 打开soloop 视频制作界面 function openAppVideoEditor() { window.location.href = 'hap://soloop/materialpicker'; } // 打开积分商城 function openAppMall() { HeytapJsApi.invoke({ name: 'mall.point_mall', data: {} }); } export default { isInApp, getDeviceInfo, getAppInfo, getUserInfo, getOpenId, getAllDeviceInfo, isLogin, doLogin, openAppWebPage, openAppVideoEditor, openAppMall, toast };