mtl-js-sdk
Version:
ynf-fw-mtl-api
102 lines (93 loc) • 2.86 kB
JavaScript
;
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;