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. 【Devexpress】Gridcontorl的列隐藏后再显示位置发生了变化

    首先在可视化界面中排序好每个列的显示位置索引 在窗口初始化时进行记录在字段中 /// <summary> /// 当前显示列的位置索引,用于隐藏后显示进行重新排序位置 /// </s ...

  2. github及git入门笔记

    1 github https://github.com/ 1.1 github注册 进入官方 https://github.com/ 首页,点击如下图片中sign up按钮,按照提示信息注册即可. 注 ...

  3. 重新认识下JVM级别的本地缓存框架Guava Cache(3)——探寻实现细节与核心机制

    大家好,又见面了. 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面.如果感兴趣,欢迎关注以获取后续更新. 通过<重新认识下JVM级别的本地 ...

  4. SpringMVC01:入门、请求参数绑定、自定义类型转换器、常见注解

    一.介绍--三层架构和MVC 1.三层架构介绍和MVC设计模型介绍 开发架构一般都是基于两种形式,一种是 C/S 架构,也就是客户端/服务器,另一种是 B/S 架构,也就是浏览器/服务器.在 Java ...

  5. 【Java EE】Day13 Web概念回顾、Tomcat、Servlet

    一.Web相关概念的回顾 1.软件架构 C/S B/S 2.资源分类 静态资源 所有用户访问得到相同结果 三剑客 浏览器通过静态解析引擎将从服务器接收到的静态资源显示到页面上 动态资源 不同用户访问得 ...

  6. python面向对象推导流程

    举例:猫狗大战 # 1.例如我们要编写一个猫狗对战小游戏 # 首先我们要定义一个猫,和一只狗 cat1 = { 'name': '小白猫', 'type': '宠物猫', 'attack_val': ...

  7. Day37:正则表达式详解

    正则表达式 1.1 概述 正则表达式可以用一些规定的字符来制定规则,并用来校验数据格式的合法性. 比如我们在网站上输入用户账号,要求我们输入的账号信息要符合账号的格式,而校验我们输入的账号格式是否正确 ...

  8. JavaScript:七大基础数据类型:布尔值boolean、空null、未定义undefined

    布尔值boolean 没什么好说的,同其他编程语言一样,就两个值:true 和 false: 空null JS的null,和Java等编程语言的概念不一样,它不是一个"不存在的对象" ...

  9. 【进阶篇】Redis实战之Jedis使用技巧详解

    一.摘要 在上一篇文章中,我们详细的介绍了 redis 的安装和常见的操作命令,以及可视化工具的介绍. 刚知道服务端的操作知识,还是远远不够的,如果想要真正在项目中得到应用,我们还需要一个 redis ...

  10. Java开发网络安全常见问题

    Java开发网络安全常见问题 等闲识得东风面,万紫千红总是春 1.敏感信息明文传输 用户敏感信息如手机号.银行卡号.验证码等涉及个人隐私的敏感信息不通过任何加密直接明文传输. 如下图中小红书APP 的 ...