- xwebview: 下载支持公共Downloads/相册(CameraRoll懒加载)/JS进度/openFile;XWebViewView 新增内联 config prop(同屏多实例不污染全局) - bugcollect: startCapture 自动启用 HttpInterceptor + 按指纹滑动窗口限频 + setSampleRate 采样(降低服务端存储压力) - update: ignoreAppVersion/clearIgnoredAppVersion/getIgnoredAppVersion 客户端忽略版本(强制更新除外) - common/metro: withXuqmConfig 自动链式 withBugCollect(Release 包 sourcemap 自动上传) - push: 桥接完整原生 sdk-push(Android Kotlin + iOS Swift + JS 薄层),删除旧反射实现;单一 XuqmSDK.setUserInfo 驱动厂商检测/token/绑定 Co-Authored-By: Claude <noreply@anthropic.com>
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)
|
||
}
|
||
}
|