mrr.sj.front/uni_modules/TencentCloud-Push/utssdk/app-harmony/index.uts

122 lines
4.1 KiB
Plaintext

import { TIMPushManager, TIMPushListener, TIMPushMessage, TIMPushResult } from '@tencentcloud/timpush';
import {
DisablePostNotificationInForeground,
RegisterPush,
SetRegistrationID,
GetRegistrationID
AddPushListener,
GetNotificationExtInfo,
CreateNotificationChannel,
UnRegisterPush,
RemovePushListener,
} from '../interface.uts'
const Push = TIMPushManager.getInstance();
const LOG_PREFIX = 'Push |';
export enum EVENT {
MESSAGE_RECEIVED = 'message_received',
MESSAGE_REVOKED = 'message_revoked',
NOTIFICATION_CLICKED = 'notification_clicked'
}
function setRunningPlatform(): void {
console.log(LOG_PREFIX, 'setRunningPlatform');
const param = {
"runningPlatform": 2
};
Push.callExperimentalAPI('setPushConfig', JSON.stringify(param)).then((res: TIMPushResult) => {
console.log(LOG_PREFIX, 'setRunningPlatform ok.', res);
}).catch((error: TIMPushResult) => {
console.log(LOG_PREFIX, `setRunningPlatform fail. code: ${error.code}, desc: ${error?.message || ''}`);
})
);
}
let disableNotification = false;
export const disablePostNotificationInForeground: DisablePostNotificationInForeground = function (disable: boolean): void {
console.log(LOG_PREFIX, 'disablePostNotificationInForeground', disable);
disableNotification = disable;
Push.disablePostNotificationInForeground(disableNotification);
}
export const registerPush: RegisterPush = function (SDKAppID: number, appKey: string, onSuccess: (data: string) => void, onError?: (errCode: number, errMsg: string) => void): void {
setRunningPlatform();
const context: Context = getContext();
Push.registerPush(context, SDKAppID, appKey).then((res: TIMPushResult) => {
onSuccess?.(JSON.stringify(res?.data) || '');
disablePostNotificationInForeground(disableNotification);
}).catch((error: TIMPushResult) => {
onError?.(error.code, error?.message || '');
})
}
export const setRegistrationID:SetRegistrationID = function (registrationID: string, onSuccess: () => void): void {
Push.setRegistrationID(registrationID).then((res: TIMPushResult) => {
console.info('setRegistrationID ok', res);
onSuccess?.();
});
}
export const getRegistrationID: GetRegistrationID = function (onSuccess: (registrationID: string) => void): void {
Push.getRegistrationID().then((res: TIMPushResult) => {
onSuccess?.(JSON.stringify(res));
});
}
export const unRegisterPush: UnRegisterPush = function (onSuccess: () => void, onError?: (errCode: number, errMsg: string) => void): void {
Push.unRegisterPush().then(() => {
onSuccess?.();
}).catch((error: TIMPushResult) => {
onError?.(error.code, error?.message || '');
})
}
export const createNotificationChannel: CreateNotificationChannel = function (options: any, onSuccess: (extInfo: string) => void): void {
// 空实现
}
export const getNotificationExtInfo: GetNotificationExtInfo = function (onSuccess: (extInfo: string) => void): void {
Push.callExperimentalAPI('getNotificationExtInfo', {}).then((res: TIMPushResult) => {
onSuccess?.(JSON.stringify(res.data));
})
}
const listenerMap = new Map<string, Array<(res: any) => void>>();
const pushListener: TIMPushListener = {
onNotificationClicked: (ext: string) => {
listenerMap.get(EVENT.NOTIFICATION_CLICKED)?.forEach(item => {
item({ data: ext });
});
},
onRevokePushMessage: (messageID: string) => {
listenerMap.get(EVENT.MESSAGE_REVOKED)?.forEach(item => {
item({ data: messageID });
});
},
onMessageReceived: (message: TIMPushMessage) => {
listenerMap.get(EVENT.MESSAGE_RECEIVED)?.forEach(item => {
item({ data: message });
});
},
};
export const addPushListener: AddPushListener = function (eventName: string, listener: (res: any) => void): void {
if(listenerMap.size === 0) {
Push.addPushListener(pushListener);
}
const listeners:Array<(res: any) => void> = [listener];
listenerMap.get(eventName)?.forEach(item => {
listeners.push(item);
})
listenerMap.set(eventName, listeners);
}
export const removePushListener:RemovePushListener = function (eventName: string, listener?: (res: any) => void): void {
listenerMap.delete(eventName);
if(listenerMap.size === 0) {
Push.removePushListener(pushListener);
}
}