XuqmGroup-RNSDK/packages/push/src/NativePush.ts

42 行
1.4 KiB
TypeScript

import { NativeModules } from 'react-native'
import type { XuqmUserInfo } from '@xuqm/rn-common'
interface XuqmPushNative {
/** 转发到原生 XuqmSDK.setUserInfo;原生自动完成厂商检测/token/绑定。传 null 登出。 */
setUserInfo(info: Pick<XuqmUserInfo, 'userId' | 'userSig' | 'name' | 'phone'> | null): Promise<void>
setOfflinePushEnabled(enabled: boolean): Promise<void>
setQuietHours(start: string, end: string): Promise<void>
clearQuietHours(): Promise<void>
}
const _native = NativeModules.XuqmPushModule as XuqmPushNative | undefined
export function isNativePushAvailable(): boolean {
return !!_native
}
export async function nativeSetUserInfo(info: XuqmUserInfo | null): Promise<void> {
if (!_native?.setUserInfo) return
await _native.setUserInfo(
info
? { userId: info.userId, userSig: info.userSig, name: info.name, phone: info.phone }
: null,
)
}
export async function nativeSetOfflinePushEnabled(enabled: boolean): Promise<void> {
if (!_native?.setOfflinePushEnabled) return
await _native.setOfflinePushEnabled(enabled)
}
export async function nativeSetQuietHours(start: string, end: string): Promise<void> {
if (!_native?.setQuietHours) return
await _native.setQuietHours(start, end)
}
export async function nativeClearQuietHours(): Promise<void> {
if (!_native?.clearQuietHours) return
await _native.clearQuietHours()
}