37 行
1.3 KiB
Swift
37 行
1.3 KiB
Swift
|
|
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)
|
|||
|
|
}
|
|||
|
|
}
|