37 行
1.3 KiB
Swift
37 行
1.3 KiB
Swift
import Foundation
|
||
import UIKit
|
||
import React
|
||
import XuqmCoreSDK
|
||
|
||
/**
|
||
* push 桥接(iOS):薄封装原生 XuqmCoreSDK。
|
||
*
|
||
* 与 Android 一致的单一入口:common 共享登录态适配器 → 本模块 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)
|
||
}
|
||
}
|