UNPKG

mtl-js-sdk

Version:

ynf-fw-mtl-api

123 lines (111 loc) 3.47 kB
"use strict"; function Plugin(options, exports = {}) { const { platform } = options || { platform: window.mtl.platform }; /** 内部处理 */ function invokeSuccess(object, ret) { object.success && object.success(ret); object.complete && object.complete(ret); } function invokeFail(object, err) { if (err) { if (!err.message) { err.message = err.msg || err.errMsg || err.errDescription; } if (typeof err.code == 'undefined') { err.code = err.errCode; } } object.fail && object.fail(err); object.complete && object.complete(err); } function handleMessage(handlerName, data, responseCallback) { window.MTLWebViewJavascriptBridge.handleMessage(handlerName, data, responseCallback); } // getNotice默认处理 function getNoticeBridage(object) { execApiBridge('getNotice', {...object, success: function(ret) { let notice = ret.notice; if (typeof notice == 'string') { notice = JSON.parse(notice); } invokeSuccess(object, notice); }}) } //设置deviceToken function setDeviceToken(object = {}) { execApiBridge('setDeviceToken', object) } //删除推送 function removePush(object = {}) { execApiBridge('removePush', object) } // 获取推送消息 function getNotice(object = {}) { if (platform === 'APIAndroid') { mtl.getStorage({ domain:'AndroidPush', key:'AndroidPushData', success:function(resObj){ console.log('sss2', JSON.parse(resObj.data)) execApiBridge('getNotice', {...object, success: function(ret) { let notice = ret.notice || []; if (typeof notice == 'string') { notice = JSON.parse(notice); } invokeSuccess(object, {notice : [JSON.parse(resObj.data), ...notice]}); }}) mtl.removeStorage({ domain:'AndroidPush', key:'AndroidPushData' }); }, fail:function(err) { getNoticeBridage(object) } }); } else { getNoticeBridage(object) } } function receiveNotice(object = {}) { execApiBridge('receiveNotice', {...object, success:function(ret) { let callback = object.registerCallback; let result = ret.result || ret.notice; let res = typeof result.mtl_content == "string" ? JSON.parse(result.mtl_content) : result.mtl_content; callback && handleMessage(callback, res); }}) } function setBadgeNumber(object = {}) { execApiBridge('setBadgeNumber', object) invokeSuccess(object, {}); } // 内部方法 function execApiBridge(method, object) { let mtlPush = window.api.require('mtlPush'); if (!mtlPush) { invokeFail(object, { msg: "module mtlPush not added" }); return; } if (mtlPush[method]) { mtlPush[method](object, function(ret){ if (ret && ret.status) { invokeSuccess(object, ret) } else { invokeFail(object, {message:ret.message}); } }) } else { invokeFail(object, { msg: "method " + method + " not found" }); } } const methods = (platform === 'APIAndroid' || platform === 'APIIos') ? {setDeviceToken, removePush, getNotice, receiveNotice, setBadgeNumber} : {}; exports.module = methods; exports.symbolPath = "push"; return exports; } export default Plugin;