var exec = require('cordova/exec'); var TpnsPlugin = function () { }; // private plugin function TpnsPlugin.prototype.receiveMessage = {}; TpnsPlugin.prototype.openNotification = {}; TpnsPlugin.prototype.receiveNotification = {}; TpnsPlugin.prototype.isPlatformIOS = function () { return ( device.platform === "iPhone" || device.platform === "iPad" || device.platform === "iPod touch" || device.platform === "iOS" ); }; TpnsPlugin.prototype.errorCallback = function (msg) { console.log("TPNS Callback Error: " + msg); }; TpnsPlugin.prototype.fireEvent = function(event,extra) { cordova.fireDocumentEvent("tpns."+event, extra); }; TpnsPlugin.prototype.Constant = { EVENT_ON_TEXT_MESSAGE :'tpns.onTextMessage', EVENT_ON_NOTIFICATION_SHOWED_RESULT :'tpns.onNotificationShowedResult', EVENT_ON_NOTIFICATION_CLICKED_RESULT :'tpns.onNotificationClickedResult', }; TpnsPlugin.prototype.callNative = function ( name, args, successCallback, errorCallback ) { if (this.isPlatformIOS()) { console.log("tnps android plugin skip ios platform."); if (successCallback) { successCallback(); } return; } if (errorCallback) { cordova.exec(successCallback, errorCallback, "TpnsPlugin", name, args); } else { cordova.exec( successCallback, this.errorCallback, "TpnsPlugin", name, args ); } }; /** * 启用调试 */ TpnsPlugin.prototype.enableDebug = function(enable) { this.callNative("enableDebug", [enable], null); }; /** * 关闭联合保活能力(1.1.6.1+) * */ TpnsPlugin.prototype.enablePullUpOtherApp = function(enable) { this.callNative("enablePullUpOtherApp", [enable], null); }; /** * 获取设备 Token */ TpnsPlugin.prototype.getToken = function(successCallback,errorCallback){ this.callNative("getToken", [], successCallback,errorCallback); }; /** * 获取第三方厂商 Token */ TpnsPlugin.prototype.getOtherPushToken = function(successCallback,errorCallback){ this.callNative("getOtherPushToken", [], successCallback,errorCallback); }; /** * 注册消息推送 * @param {*} other 厂商通道? 为空时不开启 格式如下: * { * "MZ":{"APP_ID":魅族APP_ID,"APP_KEY":魅族APP_KEY}, * "OPPO":{"appKey":OPPO appKey,"appSecret": OPPO appSecret}, * "MI":{"APPID":小米APPID,"APPKEY":小米APPKEY}, * "HW":{},"RY":{} * } * @param {*} successCallback * @param {*} errorCallback */ TpnsPlugin.prototype.registerPush = function(other,successCallback,errorCallback){ this.callNative("registerPush", other?[other]:[],successCallback,errorCallback); } /** * 取消注册消息推送 * @param {*} successCallback * @param {*} errorCallback */ TpnsPlugin.prototype.unregisterPush = function(successCallback,errorCallback){ this.callNative("unregisterPush", [],successCallback,errorCallback); } /** * 添加本地消息通知 * @param {*} data 消息通知内容 * { * channelId:通道id,channelName:通道名称,enableVibration:是否震动,enableLights:是否闪光,enableSound:是否铃声,soundUri:铃声文件地址 * } * @param {*} successCallback * @param {*} errorCallback */ TpnsPlugin.prototype.createNotificationChannel =function(data,successCallback,errorCallback){ this.callNative("createNotificationChannel", [data],successCallback,errorCallback); } /** * 创建消息通道 * @param {*} data 消息通道信息 * { * type?: 本地消息类型,1:通知,2:消息, * title: 消息标题, * content: 消息内容, * date?: 消息日期,格式为:20140502, * hour?: 消息触发的小时(24小时制),例如:22代表晚上10点, * min? :消息触发的分钟,例如:05代表05分, * builderId?: 消息样式,默认为0或不设置, * actionType: 设置动作类型:1打开activity或App本身,2打开浏览器,3打开Intent ,4通过包名打开应用, * activity?:拉起应用页面, * url?: URL, * intent?: intent * styleId?: 是否覆盖原先build_id的保存设置。1覆盖,0不覆盖, * ringRaw?: 音频资源 * data?: {} 自定义内容列表 * } * @param {*} successCallback * @param {*} errorCallback */ TpnsPlugin.prototype.addLocalNotification =function(data,successCallback,errorCallback){ this.callNative("addLocalNotification", [data],successCallback,errorCallback); } /** * 清除本地消息通知 * @param {*} successCallback * @param {*} errorCallback */ TpnsPlugin.prototype.clearLocalNotifications = function(successCallback,errorCallback){ this.callNative("clearLocalNotifications", [],successCallback,errorCallback); } /** * 对一个或多个账号类型的账号进行解绑。(SDK 1.2.3.0+) * @param {*} params 账户类型数组 [1001,1002] * @param {*} successCallback * @param {*} errorCallback */ TpnsPlugin.prototype.delAccounts = function(params,successCallback,errorCallback){ this.callNative("delAccounts", [params],successCallback,errorCallback); } /** * 对的所有已绑定账号进行解绑 * @param {*} successCallback * @param {*} errorCallback */ TpnsPlugin.prototype.clearAccounts = function(successCallback,errorCallback){ this.callNative("clearAccounts", [],successCallback,errorCallback); } /** * 添加或更新账号。若原来没有该类型账号,则添加;若原来有,则覆盖。可以同时添加多个账号,一个账号对应一个账号类型。 * @param {*} params 账户数组[{"account":elva, "accountType":1001}, {"account":jay, "accountType":1002}] * @param {*} successCallback * @param {*} errorCallback */ TpnsPlugin.prototype.upsertAccounts = function(params,successCallback,errorCallback){ this.callNative("upsertAccounts", [params],successCallback,errorCallback); } /** * 覆盖多个标签 一次设置多个标签,会覆盖这个设备之前设置的标签。 * @param {*} operateName 操作名称 全局唯一,类似于全局序列 * @param {*} tags 标签数组["tag1","tag2"] * @param {*} successCallback * @param {*} errorCallback */ TpnsPlugin.prototype.clearAndAppendTags = function(operateName,tags,successCallback,errorCallback){ this.callNative("clearAndAppendTags", [operateName,tags],successCallback,errorCallback); } /** * 新增多个标签 * 如果新覆盖的标签都带有 : 号,例如 test:2, level:2,则会删除这个设备已绑定的所有 test:* 和 level:* 标签,再新增 test:2 和 level:2。 * 如果新增的标签有部分不带 : 号,例如 test:2 level,则会删除这个设备的全部历史标签,再新增 test:2 和 level 标签。 * @param {*} operateName 操作名称 全局唯一,类似于全局序列 * @param {*} tags 标签数组["tag1","tag2"] * @param {*} successCallback * @param {*} errorCallback */ TpnsPlugin.prototype.appendTags = function(operateName,tags,successCallback,errorCallback){ this.callNative("appendTags", [operateName,tags],successCallback,errorCallback); } /** * 一次删除多个标签。 * @param {*} operateName 操作名称 全局唯一,类似于全局序列 * @param {*} tags 标签数组["tag1","tag2"] * @param {*} successCallback * @param {*} errorCallback */ TpnsPlugin.prototype.delTags = function(operateName,tags,successCallback,errorCallback){ this.callNative("delTags", [operateName,tags],successCallback,errorCallback); } /** * 清除这个设备的所有标签。 * @param {*} operateName 操作名称 全局唯一,类似于全局序列 * @param {*} successCallback * @param {*} errorCallback */ TpnsPlugin.prototype.clearTags = function(operateName,successCallback,errorCallback){ this.callNative("clearTags", [operateName],successCallback,errorCallback); } /** * 获取这个设备的标签 * @param {*} operateName 操作名称 全局唯一,类似于全局序列 * @param {*} offset 开始位置 * @param {*} limit 取值数量 最大100 * @param {*} successCallback 返回标签数组字符串 * @param {*} errorCallback */ TpnsPlugin.prototype.queryTags = function(operateName,offset,limit,successCallback,errorCallback){ this.callNative("queryTags", [operateName,offset,limit],successCallback,errorCallback); } /** * 添加属性(带回调):有则覆盖,无则添加。 * @param {*} operateName 操作名称 全局唯一,类似于全局序列 * @param {*} attrs 属性对象 {"属性名1":"属性值1","属性名2":"属性值2"} * @param {*} successCallback * @param {*} errorCallback */ TpnsPlugin.prototype.upsertAttributes = function(operateName,attrs,successCallback,errorCallback){ this.callNative("upsertAttributes", [operateName,attrs],successCallback,errorCallback); } /** * 更新用户属性 * @param {*} operateName 操作名称 全局唯一,类似于全局序列 * @param {*} attrs 属性对象 {"属性名1":"属性值1","属性名2":"属性值2"} * @param {*} successCallback * @param {*} errorCallback */ TpnsPlugin.prototype.clearAndAppendAttributes = function(operateName,attrs,successCallback,errorCallback){ this.callNative("clearAndAppendAttributes", [operateName,attrs],successCallback,errorCallback); } /** * 删除指定的属性。 * @param {*} operateName 操作名称 全局唯一,类似于全局序列 * @param {*} attrs 属性名数组 ["属性名1","属性名2"] * @param {*} successCallback * @param {*} errorCallback */ TpnsPlugin.prototype.delAttributes = function(operateName,attrs,successCallback,errorCallback){ this.callNative("delAttributes", [operateName,attrs],successCallback,errorCallback); } /** * 删除已设置的所有属性 * @param {*} operateName 操作名称 全局唯一,类似于全局序列 * @param {*} successCallback * @param {*} errorCallback */ TpnsPlugin.prototype.clearAttributes = function(operateName,successCallback,errorCallback){ this.callNative("clearAttributes", [operateName],successCallback,errorCallback); } /** * 取消全部消息通知 * @param {*} successCallback * @param {*} errorCallback */ TpnsPlugin.prototype.cancelAllNotifaction = function(successCallback,errorCallback){ this.callNative("cancelAllNotifaction", [],successCallback,errorCallback); } module.exports = new TpnsPlugin();