import Foundation import UIKit import React import XuqmCoreSDK /** * push 桥接(iOS):薄封装原生 XuqmCoreSDK。 * * 与 Android 一致的单一入口:JS XuqmSDK.setUserInfo() → 本模块 setUserInfo() → * XuqmSDK.shared.setUserInfo()/clearUserInfo()。APNs token 由 XuqmPushSDK 的 * AppDelegate swizzle 自动转发到 XuqmSDK.registerDeviceToken,在 userId 就绪后完成绑定。 * * SDK 初始化由 XuqmCoreSDK 自身的启动流程完成;offline/quiet-hours 在 iOS 原生 PushSDK * 暂无对应 API,故本模块不导出(JS 侧检测到方法缺失会自动 no-op)。 */ @objc(XuqmPushModule) class XuqmPushModule: NSObject { @objc static func requiresMainQueueSetup() -> Bool { false } @objc(setUserInfo:resolver:rejecter:) func setUserInfo(_ info: NSDictionary?, resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) { if let info = info, let userId = info["userId"] as? String, !userId.isEmpty { let nickname = info["name"] as? String XuqmSDK.shared.setUserInfo(userId: userId, nickname: nickname, avatar: nil) DispatchQueue.main.async { UIApplication.shared.registerForRemoteNotifications() } } else { XuqmSDK.shared.clearUserInfo() } resolve(nil) } }