import config from '@/config/index';
import cubeModule from '_public/CubeModule.json';
const _MIDEA_COMMON = 'MideaCommon'; // 通用组件
const _MIDEA_USER = 'MideaUser'; // 用户信息相关
const _MIDEA_BARCODE = 'MideaBarcode'; // 二维码扫描相关
const _MIDEA_MAP = 'MideaMap'; // 地图定位相关
const _MIDEA_PDF = 'MideaPdf'; // 附近展示相关
const _MIDEA_ORG = 'Organization'; // 组织架构相关 const agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
export default {
/**
* 获取设备平台
* @returns {number} 2-安卓,1-IOS,0-未知
*/
getPlatForm() {
const u = navigator.userAgent;
const isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; // android终端
const isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // ios终端
let flatform = isAndroid ? 2 : isiOS ? 1 : 0;
return flatform;
},
// 判断是不是T信移动客户端
isTLinkMobile() {
const userAgent = navigator.userAgent;
//T信环境
let isTLinkClient = userAgent.includes("teamwork");
//是否PC环境
let IsPC = true;
for (let v = 0; v < agents.length; v++) {
if (userAgent.includes(agents[v])) {
IsPC = false;
break;
}
}
return !IsPC && isTLinkClient;
},
// 判断是不是T信PC端
isTLinkPC() {
const userAgent = navigator.userAgent;
let IsPC = true;
for (let v = 0; v < agents.length; v++) {
if (userAgent.includes(agents[v])) {
IsPC = false;
break;
}
}
let isTLinkClient = userAgent.includes("teamwork");
return IsPC && isTLinkClient;
},
/**
* 调用cordova的方法
* @param name {string} 方法组、类别
* @param method {string} 方法名称
* @param params {Array} 参数
* @return {promise}
*/
callApi(name, method, params) {
var promise = new Promise((resolve, reject) => {
if (window.cordova) {
try {
window.cordova.exec((msg) => {
resolve(msg);
}, (msg) => {
reject(msg)
}, name, method, params || [])
} catch (e) {
console.log('_error', 'widget error:', e);
reject(e);
}
} else {
console.log('_debug', 'Cordova is not exist');
}
});
return promise;
},
// 3.复制 参数 [copy内容]
copy(param = []) {
return this.callApi(_MIDEA_COMMON, 'copy', param).then((message) => {
//成功
});
},
// 4.粘贴 参数 []
paste(param = []) {
return this.callApi(_MIDEA_COMMON, 'paste', param).then((message) => {
//成功
});
},
/**
* 验证密码,主要用于hr自助认证
*/
password() {
return this.callApi(_MIDEA_COMMON, 'authPassword').then((message) => {
if (message === 0) {
this.password();
} else if (message === -1) {
this.exit();
}
})
},
/**
* 显示菜单
*/
showMenu: function () {
return this.callApi(_MIDEA_COMMON, 'showMenu', null);
},
/**
* 显示导航
*/
showNav: function () {
return this.callApi(_MIDEA_COMMON, 'showNav', null);
},
/**
* 隐藏导航
*/
hideNav: function () {
return this.callApi(_MIDEA_COMMON, 'hideNav', null)
},
/**
* 退出应用
*/
exit: function () {
return this.callApi(_MIDEA_COMMON, 'exit', null)
},
/**
* 后退
*/
goBack: function () {
return this.callApi(_MIDEA_COMMON, 'goBack', null)
},
/**
* 开始监听手机摇动
*/
shake: function () {
return this.callApi(_MIDEA_COMMON, 'shake', null);
},
/**
* 停止监听手机摇动
*/
shakeStop: function () {
return this.callApi(_MIDEA_COMMON, 'shakeStop', null);
},
/**
* 显示悬浮菜单
*/
showFloat: function () {
return this.callApi(_MIDEA_COMMON, 'showFloat', null);
},
/**
* 隐藏悬浮菜单
*/
hideFloat: function () {
return this.callApi(_MIDEA_COMMON, 'hideFloat', null);
},
/**
* 获取当前语言
*/
language: function () {
if (config.env === 'local') {
return new Promise((resolve, reject) => {
resolve({ language: config.language });
})
} else {
return this.callApi(_MIDEA_COMMON, 'language', []);
}
},
/**
* 获取用户信息
*/
getUser: function () {
if (config.env.includes('local')) {
return config.developer;
} else {
return this.callApi(_MIDEA_USER, 'getUser', []);
}
},
/**
* 跳转到用户详情
*/
showUser: function (params) {
return config.env === 'local' ? config.developer : this.callApi(_MIDEA_USER, 'vcard', params);
},
/**
* 58.搜索用户 参数 [type搜索类型0-部门1-职位2-邮箱]
*/
search: function (p = []) {
return this.callApi(_MIDEA_BARCODE, 'search', p);
},
/**
* 获取邮箱SID 参数 []
*/
mailSid: function (p = []) {
return this.callApi(_MIDEA_BARCODE, 'mailSid', p);
},
/**
* 启动扫码
*/
scan: function () {
return this.callApi(_MIDEA_BARCODE, 'scan', null);
},
/**
* 启动扫码
*/
scanNow: function () {
return this.callApi(_MIDEA_BARCODE, 'scanNow', null);
},
/**
* 获取扫码结果
*/
getScanExtra: function () {
return this.callApi(_MIDEA_BARCODE, 'getScanExtra', null);
},
/**
* 获取位置信息
* @param arr {array} 参数
*/
location: function (arr) {
return this.callApi(_MIDEA_MAP, 'location', arr);
},
/** * 62.获取地图定位 参数 [] */
mapLocation: function (arr) {
return this.callApi(_MIDEA_MAP, 'mapLocation', arr);
}, /**
* 66.高德开启持续定位 参数 [持续定位更新最小时间间隔,单位毫秒(可选-2000)]
* @param arr {array} 参数
*/
startUpdatingLocation: function (arr) {
return this.callApi(_MIDEA_MAP, 'startUpdatingLocation', arr);
},
/**
* 停止更新位置信息
*/
stopUpdatingLocation: function () {
return this.callApi(_MIDEA_MAP, 'stopUpdatingLocation', null);
},
/**
* 68.修改导航标题 参数 ['标题'(必传)]
*/
modifyNativeTitle: function () {
return this.callApi(_MIDEA_MAP, 'modifyNativeTitle', null);
},
/**
* 导航
* @param arr {array} 参数
*/
navigation: function (arr) {
return this.callApi(_MIDEA_MAP, 'navTo', arr);
},
/**
* 64.从某地导航至某地 参数 [latitude目的地纬度(必传),longitude目的地经度(必传),from_latitude出发地纬度(必传),from_longitude出发地经度
*/
navToWithFrom: function (arr) {
return this.callApi(_MIDEA_MAP, 'navToWithFrom', arr);
},
/**
* 65.获取高德地图单次定位 参数 [(数据类型int,返回坐标系类型,0-默认、1-Baidu、2-MapBar、3-ABC、4-SoSoMap、5-AliYun、6-Google、7-GPS,不建议传值(可选)),(数据类型String,Best高精度,HundredMeters中等精度,精度越高,获取速度越慢(可选))]
*/
amapLocation: function (arr) {
return this.callApi(_MIDEA_MAP, 'amapLocation', arr);
},
/**
* 拍照或选择图片
* @param params {object} 参数
* @return {*}
*/
getPicture: function (params) {
// return promise
const imgPackageHeader = 'data:image/jpeg;base64,'
const imgDefaultBase64Code = '/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABQAAD/4QMpaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozMzM5RDY2ODMyNzQxMUU1QTJENkEwOTg5MjdGQTczNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozMzM5RDY2OTMyNzQxMUU1QTJENkEwOTg5MjdGQTczNiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjMzMzlENjY2MzI3NDExRTVBMkQ2QTA5ODkyN0ZBNzM2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjMzMzlENjY3MzI3NDExRTVBMkQ2QTA5ODkyN0ZBNzM2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/+4ADkFkb2JlAGTAAAAAAf/bAIQAAgICAgICAgICAgMCAgIDBAMCAgMEBQQEBAQEBQYFBQUFBQUGBgcHCAcHBgkJCgoJCQwMDAwMDAwMDAwMDAwMDAEDAwMFBAUJBgYJDQsJCw0PDg4ODg8PDAwMDAwPDwwMDAwMDA8MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAEAAQAwERAAIRAQMRAf/EAG8AAAMBAAAAAAAAAAAAAAAAAAQFBggBAAIDAAAAAAAAAAAAAAAAAAMEBQcIEAABBAEDBAMAAAAAAAAAAAABAgMEBQYAERIhMUEHYSIUEQACAgAGAgMBAAAAAAAAAAABAhEDACFREgQFMUFhoRQi/9oADAMBAAIRAxEAPwDWfripp7WwyFy7q13MWmoZtmzXIecYLr0ct8U82vsN+RGq06+pHZt67gqkxMZiNMaH73k3U11ip9hexV3QDAafRywd7BxuorKfDchrKaXjLmTtTVS8cmPl9TP5HUIQ8hTiUOcHgokch46EjronP46IldiqV3T/ACTMQfOsH5wHpOfdddfRY62CsrDqIncCSDBIlYzjXPCbBMsGHy76ehyUxNn0kuvq5UTYLZlPFBbcKipJSElPUjc/Gg8LlfnZmzkqQI9E4a7jrf3pWhAKrYrMD4KiZHg64mLW4tr2WqfdWcq1mrASqVLdW85xHZIUskgDwOw0tbc9rbnJJ+c8SHG4tXGTZUgVdAAB9Y//2Q==' if (config.env === 'local') { // 本地调试
return new Promise((resolve, reject) => {
resolve({
base64Code: imgDefaultBase64Code,
base64Url: imgPackageHeader + imgDefaultBase64Code
});
})
} else { // 测试或者生产环境
let opt = {
quality: params.quality || 50,
destinationType: params.destinationType || 0,
allowEdit: params.allowEdit || false,
encodingType: params.encodingType || 0,
saveToPhotoAlbum: params.saveToPhotoAlbum || false,
sourceType: params.sourceType || 0,
mediaType: params.mediaType || 0,
correctOrientation: params.correctOrientation || true,
cameraDirection: params.cameraDirection || 0
}
if (params.sourceType == 0) {
return new Promise(async (resolve, reject) => {
try {
const res = await this.callApi(_MIDEA_COMMON, 'getPicture', ['1', '0']);
return resolve({
base64Code: res[0],
base64Url: imgPackageHeader + res[0]
});
} catch (e) {
console.log('_warn', 'Cordova maybe not exist.')
reject(e)
};
});
} else {
return new Promise((resolve, reject) => {
try {
navigator.camera.getPicture(
async (data) => {
let base64Url = imgPackageHeader + data;
if (data.indexOf("file://") > -1) { //安卓拍照
const obj = await this.callApi('MideaCommon', 'getBase64s', [data]);
base64Url = imgPackageHeader + obj.base64[0];
// Indicator.close()
resolve({
base64Code: data,
base64Url: base64Url
});
} else {
resolve({
base64Code: data,
base64Url: base64Url
});
}
},
(data) => {
Indicator.close();
reject(data);
}, opt)
} catch (e) {
console.log('_warn', 'Cordova maybe not exist.');
reject(e);
}
})
}
}
},
/**
* 获取通讯录
* @param fields {string} 查找内容
* @param options {array} 参数
* @return {*}
*/
getContact: function (fields, options) {
var promise = new Promise((resolve, reject) => {
try {
navigator.service.contacts.find(fields,
function (msg) { resolve(msg) },
function (msg) { reject(msg) }, options)
} catch (e) {
console.log('_warn', 'Cordova maybe not exist.');
reject(e);
}
});
return promise;
},
/**
* 组织架构单选
*/
orgChoose: function () {
return this.callApi(_MIDEA_USER, 'orgChoose', null);
},
/**
* 组织架构多选
* @param p {array} 参数
*/
orgMuChoose: function (p) {
return this.callApi(_MIDEA_USER, 'orgMuChoose', p);
},
/**
* 56.部门选择 参数 ['orgidString_1','orgidString_2','orgidString_3',...]
*/
departmentChoose: function (p = []) {
return this.callApi(_MIDEA_USER, 'departmentChoose', p);
},
/**
* 根据组织id获取组织内容
* @param p {array} 参数
* {
"withChild": true,
"withUser": true,
"departId": orgId
}
*/
fetchDepart: function (p) {
return this.callApi(_MIDEA_ORG, 'fetchDepart', p);
},
/**
* 改变状态栏颜色-仅IOS
* @param p {array} 参数 [r, g, b]
*/
changeColor: function (p) {
return this.callApi(_MIDEA_COMMON, 'statusBarColor', p);
},
/**
* 登出,注销用户
*/
logout: function () {
return this.callApi(_MIDEA_COMMON, 'logout', null);
},
/**
* 获取webview信息
*/
webview: function () {
return this.callApi(_MIDEA_COMMON, 'webview', null);
},
/**
* 获取屏幕信息
*/
screen: function () {
return this.callApi(_MIDEA_COMMON, 'screen', null);
},
/**
* 获取额外启动参数
* @param params {array} 参数
*/
getExtra: function (params) {
return this.callApi(_MIDEA_COMMON, 'getExtra', params || [cubeModule.identify])
},
/**
* 获取设备信息
*/
getDeviceInfo: function () {
return this.callApi(_MIDEA_COMMON, 'getDeviceInfo', null);
},
/**
* 19.开启手机横竖屏 参数 [0表示关闭,1表示开启,2表示横竖屏都支持,3表示竖屏]
*/
orientation: function (param = []) {
return this.callApi(_MIDEA_COMMON, 'orientation', param);
},
/**
* 52.设置手机横竖屏 参数 [0或者1(0竖屏,1横屏 必传)]
*/
setScreenOrientation: function (param = []) {
return this.callApi(_MIDEA_COMMON, 'setScreenOrientation', param);
},
/**
* 用外部浏览器打开链接
* @param url {string} 链接地址url
*/
openUrl: function (url) {
return this.callApi(_MIDEA_COMMON, 'openSysBrowser', [url]);
},
/**
* 21.检测应用是否安装 参数 [程序包名]
*/
apk: function (param = []) {
return this.callApi(_MIDEA_COMMON, 'apk', param);
},
/**
* 22.启动指定原生APP 参数 [参数1:包名的id 参数2:该包名的appkey 用户传输密码密文]
*/
startApp: function (param = []) {
return this.callApi(_MIDEA_COMMON, 'startApp', param);
},
/**
* h5事件监听 Bugly设置关键数据 参数 [{"key":"key","value":"value"}]
* @param params {array} 参数
*/
statistics: function (params) {
return this.callApi(_MIDEA_COMMON, 'onEvent', params);
},
/**
* 36.调用银联 参数 [订单信息]
*/
callUpPay: function (params) {
return this.callApi(_MIDEA_COMMON, 'callUpPay', params);
},
/**
* 37.获取当前H5轻应用信息 参数 []
*/
appLogInfo: function (params) {
return this.callApi(_MIDEA_COMMON, 'appLogInfo', params);
},
/**
* 38.切换H5轻应用 参数 [pluginId(切换的目标H5标识)]
*/
openApp: function (params) {
return this.callApi(_MIDEA_COMMON, 'openApp', params);
},
/**
* 39.打开在线文件 参数 [fileUrl文件地址(必传),title文件标题(可选)]
*/
previewFile: function (params) {
return this.callApi(_MIDEA_COMMON, 'previewFile', params);
},
/**
* 分享
* @param params {array} 参数
*/
share: function (params) {
return this.callApi(_MIDEA_COMMON, 'share', params);
},
/**
* 50.分享选择器 参数 [{title: '测试',subTitle: '',action: 'openH5',widgetId: '', widgetExtra: '',imageUrl: '',actionType: 1,shareRange: 2,url:''}]
*/
showShare: function (param = []) {
return this.callApi(_MIDEA_COMMON, 'showShare', param);
},
/**
* 51.跳转指定用户单聊页面 参数 [uid 用户UID(必传),name 昵称(可选,默认取用户详情名字)]
*/
chatMessage: function (param = []) {
return this.callApi(_MIDEA_COMMON, 'chatMessage', param);
},
/**
* 打开应用页面
*/
showAppView: function () {
return this.callApi(_MIDEA_COMMON, 'showAppView', ['messageView']);
},
/**
* 打开时间日期选择
* @param params {array} 参数
* @return {*}
*/
showPicker: function (params) {
var promise = new Promise((resolve, reject) => {
if (window.datePicker) {
params = Object.assign({
date: new Date(),
mode: 'date',
type: 'day'
}, params); window.datePicker && window.datePicker.show(params, function (date) {
resolve(date);
})
} else {
console.log('_debug', 'datePicker is not exist')
}
});
return promise;
},
/**
* 打开通讯录
*/
getPhoneMan: function () {
return this.callApi(_MIDEA_USER, 'getContact', null);
},
/**
* 打开个人设置页面
*/
goPersonalSet: function () {
return this.callApi(_MIDEA_COMMON, 'showSetView', null);
},
/**
* 打开“我的”页面
*/
goMyView: function () {
return this.callApi(_MIDEA_COMMON, 'showMyView', null);
},
/**
* 打开widget
* @param params {array} 参数
*/
showWidget: function (params) {
return this.callApi(_MIDEA_COMMON, 'showWidget', params);
},
/**
* 显示键盘
*/
showInput: function () {
return this.callApi(_MIDEA_COMMON, 'showInput', null);
},
/**
* 隐藏键盘
* @return {*|promise}
*/
hideInput: function () {
return this.callApi(_MIDEA_COMMON, 'hideInput', null);
},
/**
* 打开消息页面
*/
showMessageView: function () {
return this.callApi(_MIDEA_COMMON, 'showAppView', ['messageView']);
},
/**
* 批量将图片转换成base64码
* @param pictureList {array} 图片列表
*/
getBase64CodeFromPictures: function (pictureList) {
return this.callApi(_MIDEA_COMMON, 'getBase64s', pictureList);
},
/**
* 跳转到系统设置页面,
* @param arr arr[0]为要跳转的对应的设置页面,暂时支持 蜂窝网络:CellularNetWork,WIFI:WIFI
* @returns {*}
*/
gotoSystemSetting: function (arr) {
return this.callApi(_MIDEA_COMMON, 'gotoSystemSetting', arr);
},
/**
* 附件展示
* @param param {array} 附件链接url列表
*/
showPdf: function (param) {
return this.callApi(_MIDEA_PDF, 'showPdf', param);
},
/**
* 附件txt展示
* @param param {array} 参数
*/
showTxt: function (param) {
return this.callApi(_MIDEA_PDF, 'showTxt', param);
},
/**
* @description 获取底座密码
*/
getUserPassword: function () {
return this.callApi(_MIDEA_USER, 'getUserPassword', []);
},
/**
* @description 打电话(底座有bug)
* @param phoneNumber {string}
*/
callPhone: function (phoneNumber) {
return this.callApi(_MIDEA_COMMON, 'callPhone', [phoneNumber]);
},
/**
* 是否禁用webview橡皮筋效果
* @param params params '1': 启用 '0': 禁止
* @returns {*}
*/
setBounces(params) {
return this.callApi(_MIDEA_COMMON, 'setBounces', [params]);
},
/**
* 41.发送卡片消息 参数 [uid发送目标uid(必传),content发送内容(必传),title卡片消息标题(必传),description卡片消息摘要(必传),icon卡片消息icon url(必传)]
*/
sendCardMessage(param = []) {
return this.callApi(_MIDEA_COMMON, 'sendCardMessage', param);
},
/**
* 42.添加T信隐形水印 参数 [图片base64字符串(),水印文字()]
*/
addTChatWaterMask(param = []) {
return this.callApi(_MIDEA_COMMON, 'addTChatWaterMask', param);
},
/**
* 43.预览多张图片 参数 [[{"type":"0-在线url,1-base64","data":"base64或者在线url"}](必传),参数数组顺序1,选择首张预览位置(可传)]
*/
previewPicture(param = []) {
return this.callApi(_MIDEA_COMMON, 'previewPicture', param);
},
/**
* 44.播放在线视频 参数 [视频地址url]
*/
playVideo(param = []) {
return this.callApi(_MIDEA_COMMON, 'playVideo', param);
},
/**
* 45.录制视频 参数 [time录制视频最大长度(可选)]
*/
videoRecord(param = []) {
return this.callApi(_MIDEA_COMMON, 'videoRecord', param);
},
/**
* 46.获取是否为根目录 参数 []
*/
isRootNativePage(param = []) {
return this.callApi(_MIDEA_COMMON, 'isRootNativePage', param);
},
/**
* 47.上传文件 参数 [{"url":"指定上传路径地址","files":"['本地文件路径']"}(必传)]
*/
upload(param = []) {
return this.callApi(_MIDEA_COMMON, 'upload', param);
},
/**
* 打开外链url
* @param url {string} 链接地址url
*/
neiOpenUrl: function (url) {
return this.callApi(_MIDEA_COMMON, 'openUrl', [url]);
},
/**
* 26.修改底座导航条标题 参数 [标题文字]
*/
showTitle: function (pram = []) {
return this.callApi(_MIDEA_COMMON, 'showTitle', pram);
},
/**
* 27.自定义导航栏右侧按钮 参数 [文字标题(必传(无文字的传空字符串)),触发事件调起的JS函数名(必传),icon样式 1-搜索,2-我的,3-删除,4-筛选,5-编辑,6-关闭,7-自定义icon(必传),自定义icon base64(可选)]
*/
showRightButton: function (pram = []) {
return this.callApi(_MIDEA_COMMON, 'showRightButton', pram);
},
/**
* 28.上报埋点信息至T信后台服务器 参数 [插件ID(必传),page页面参数(必传),func函数名参数(必传),res参数 0-成功,其他-失败Code(可选),msg备注信息(可选),url查询邮件列表则填写url,本地操作未空(可选)]
*/
recordPlugin: function (pram = []) {
return this.callApi(_MIDEA_COMMON, 'recordPlugin', pram);
},
/**
* 29.PDF浏览 参数 [PDF在线地址URL]
*/
readPDF: function (pram = []) {
return this.callApi(_MIDEA_COMMON, 'readPDF', pram);
},
/**
* 30.设置会话过期 参数 []
*/
sessionout: function (pram = []) {
return this.callApi(_MIDEA_COMMON, 'sessionout', pram);
},
/**
* 31.发送手机短信 参数 [手机号码,短信内容]
*/
sendSms: function (pram = []) {
return this.callApi(_MIDEA_COMMON, 'sendSms', pram);
},
/**
* 32.关闭原生返回功能(仅iOS) 参数 []
*/
closeSlideOut: function (pram = []) {
return this.callApi(_MIDEA_COMMON, 'closeSlideOut', pram);
},
/**
* 33.显示\隐藏水印 参数 [显示标识(0-显示1-隐藏)]
*/
waterMarkManage: function (pram = []) {
return this.callApi(_MIDEA_COMMON, 'waterMarkManage', pram);
},
/**
* 34.获取原生用户配置信息 参数 [配置表key值]
*/
getId: function (pram = []) {
return this.callApi(_MIDEA_COMMON, 'getId', pram);
},
/**
* 判断安卓、ios
* @param
* @returns true:false
*/
isAndroid() {
let u = navigator.userAgent;
return u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;
},
isIOS() {
let u = navigator.userAgent;
return !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
},
saveToGallery(url) {
return this.callApi(_MIDEA_COMMON, 'saveToGallery', [url]);
},
// 49.电子定制接口-取消WebView栈顶通知(仅iOS) 参数 []
closeMoniterViewAppear(param = []) {
return this.callApi(_MIDEA_COMMON, 'closeMoniterViewAppear', param);
},
/*
**
** 从其他 应用中返回 调用 传入的fun方法
** @param fun { Function } 回调方法
** 48.电子定制接口-WebView栈顶通知(仅iOS) 参数 []
*/
viweAppear(fun) {
if (this.isIOS) {
window.setTimeout(function () {
var promise = new Promise((resolve, reject) => {
if (window.cordova) {
try {
window.cordova.exec((msg) => {
fun();
this.viweAppear(fun);
resolve(msg);
}, (msg) => {
reject(msg);
}, 'MideaCommon', 'moniterViewAppear', null)
} catch (e) {
console.log('_error', 'widget error:', e);
reject(e);
}
} else {
console.log('_debug', 'Cordova is not exist');
}
})
}, 1000);
}
if (this.isAndroid) {
try {
document.addEventListener('resume', function () {
fun();
}, false);
} catch (e) {
console.log('not exist');
}
}
}
}

  

h5与原生app通信的各种功能的更多相关文章

  1. H5和原生APP之间的区别

    最近项目中因各种客观因素,移动端都是默认用的纯H5 APP,感受最深的就是各种坑啊,好大的坑啊.产品上线后,带着各种坑后的总结原因方发现很多人都说纯H5 APP一次编写就能支持android和IOS两 ...

  2. h5 与原生 app 交互的原理

    现在移动端 web 应用,很多时候都需要与原生 app 进行交互.沟通(运行在 webview中),比如微信的 jssdk,通过 window.wx 对象调用一些原生 app 的功能.所以,这次就来捋 ...

  3. 客户端相关知识学习(二)之h5与原生app交互的原理

    前言 现在移动端 web 应用,很多时候都需要与原生 app 进行交互.沟通(运行在 webview中),比如微信的 jssdk,通过 window.wx 对象调用一些原生 app 的功能.所以,这次 ...

  4. H5、原生app、混合开发三者比较

    一.概念 a) H5:即Html5,接触过互联网的都知道html,所以很明显h5是html的第5次重大修改的一项超文本标记语言的标准协议. b) 原生:使用原生制作APP(Native app),即在 ...

  5. h5启动原生APP总结

    许久没有写博客了,最近有个H5启动APP原生页面的需求,中间遇上一些坑,看了些网上的实现方案,特意来总结下 一.需要判断客户端的平台以及是否在微信浏览器中访问 1.客户端判断 在启动APP时,Andr ...

  6. OVGap iOS与Javascript交互(H5与原生APP交互)

    源代码:https://github.com/windshg/OVGap OVGap:一个轻量级的类库,能够让iOS应用和远程网页的 Javascript 代码进行通信,也就是说,远程的 Javasc ...

  7. uni-app强大的前端框架,h5,原生app(两大系统),微信小程序

    最近发现一款强大的前端框架,它叫uni-app 这是一款通用的框架可以打包app,h5,微信小程序, 说说要弄这个工具需要会那些技能吧, 要熟悉vue,微信小程序.这样这个框架用的就是很快上手了 模块 ...

  8. APP中的 H5和原生页面如何分辨、何时使用

    一.APP内嵌H5和原生的区别 1.原生的页面运行速度快,比较流畅. H5页面相对原生的运行性能低,特别是一些动画效果有明显卡顿. 2.H5页面的很多交互都没有原生的好,比如弹层.输入时候的页面滑动 ...

  9. 移动web、webApp、混合APP、原生APP、androd H5混合开发 当无网络下,android怎么加载H5界面

    PhoneGap是一个采用HTML,CSS和JavaScript的技术,创建移动跨平台移动应用程序的快速开发平台.它使开发者能够在网页中调用IOS,Android,Palm,Symbian,WP7,W ...

  10. 混合app开发,h5页面调用ios原生APP的接口

    混合APP开发中,前端开发H5页面,不免会把兼容性拉进来,在做页面的兼容性同事,会与原生app产生一些数据交互: 混合APP开发,安卓的兼容性倒是好说,安卓使用是chrome浏览器核心,已经很好兼容H ...

随机推荐

  1. 解决python3解压文件名乱码问题(unzip)

    看来很多文章,不过我觉得最有效的还是改源码,因为我用的sublime text 3有插件Anaconda可以很方便的跳转到源码文件,你也可以入python3 的安装目录, 搜索 zipfile.py这 ...

  2. sql注入的一丢丢

  3. Tekton 设计简介 及 实践

    本文是我对Tekton的实现原理和背后技术逻辑的理解,以及在实践过程中的一些总结. 简介 Tekton 是一个基于 Kubernetes 的云原生 CI/CD 开源(https://cd.founda ...

  4. 【Kafka】Quota配额命令、文档相关概念

    一.多租赁模式基于 Zookeeper和 kafka-configs.sh 管理所有用户 1.步骤 l 基于zookeeper,实现用户管理 l 配置broker认证信息,并进行平滑更新 l 配置cl ...

  5. .net6制作让同事不能上网的arp欺骗工具

    摘一段来自网上的arp欺诈解释:ARP欺骗(ARP spoofing),又称ARP毒化(ARP poisoning,网络上多译为ARP病毒)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技 ...

  6. kestrel网络编程--开发redis服务器

    1 文章目的 本文讲解基于kestrel开发实现了部分redis命令的redis伪服务器的过程,让读者了解kestrel网络编程的完整步骤,其中redis通讯协议需要读者自行查阅,文章里不做具体解析. ...

  7. RabbitMQ、RocketMQ、Kafka延迟队列实现

    延迟队列在实际项目中有非常多的应用场景,最常见的比如订单未支付,超时取消订单,在创建订单的时候发送一条延迟消息,达到延迟时间之后消费者收到消息,如果订单没有支付的话,那么就取消订单. 那么,今天我们需 ...

  8. RestTemplate获取json数组

    1.需求描述 接口返回的是一个json数组,要获取到接口返回值并用实体类list接住. 2.解决方法 使用springboot框间自带的Http的工具类RestTemplate调接口,其返回值用hut ...

  9. 如何用 Python 隐藏你的 API 密钥

    你好,我是悦创. 博客首发:https://bornforthis.cn/posts/19.html 有时您需要在代码中存储敏感信息,例如密码或 API 密钥,而在 Python 中最简洁的方法是使用 ...

  10. 用云服务器搭建frp服务(超详细)

    初学.没有云服务器的时候总想着怎样才能让别人访问到自己的项目. 在查阅了百度,逛过了一些论坛之后,了解到了 内网穿透 这个词. 经过一番钻研,通过 手机 + KSWEB + 电脑 成功将内网服务映射出 ...