UNPKG

mtl-js-sdk

Version:

ynf-fw-mtl-api

102 lines (93 loc) 2.86 kB
"use strict"; function Plugin(options, exports = {}) { const { platform } = options || { platform: window.mtl.platform }; /** 内部处理 */ function successCallBack(object = {}) { object.success && object.success({}); object.complete && object.complete({}); } 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); } const receivePush = function(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { execApiBridge('receivePush', {...obj, success:function(ret) { let callback = obj.registerCallback; callback && handleMessage(callback, ret.notice); }}) } else { successCallBack(obj) } }; const getOffLinePush = function(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { execApiBridge('getOffLinePush', obj) } else { successCallBack(obj) } }; const getDeviceId = function(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { execApiBridge('getDeviceId', obj) } else { successCallBack(obj) } }; const setBadgeAutoIncrement = function(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { execApiBridge('setBadgeAutoIncrement', obj, true) } else { successCallBack(obj) } }; const getDeviceToken = function(obj={}) { if (platform === 'APIAndroid' || platform === 'APIIos') { execApiBridge('getDeviceToken', obj, true) } else { successCallBack(obj) } }; // 内部方法 function execApiBridge(method, obj, isStatus=false) { var aliyunPush = window.api.require("aliyunPush"); if (!aliyunPush) { invokeFail(obj, { msg: "module aliyunPush not added" }); return; } if (aliyunPush[method]) { aliyunPush[method](obj, function(ret, err){ if (ret && (isStatus ? ret.status : true)) { invokeSuccess(obj, ret) } else { invokeFail(obj, err) } }) } else { invokeFail(obj, { msg: "method " + method + " not found" }); } } exports.module = { receivePush, getOffLinePush, getDeviceId, setBadgeAutoIncrement, getDeviceToken}; exports.symbolPath = exports.symbolPath || "aliPush"; return exports; } export default Plugin;