Files
youle_app_ios_v2/ylgamehall/Source/Bridge/Handlers/VibratorHandler.swift
T
joywayerandClaude Opus 4.7 6c943e2924 Phase 1.15:VibratorHandler 单次振动 handler
新增 ylgamehall/Source/Bridge/Handlers/VibratorHandler.swift:
- 无状态 public enum VibratorHandler,static func register(on:)
- 入参忽略(参考原 msext RootVC.m:1816-1818:time 参数实际不读取)
- 副作用:AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
- responseCallback:.string("vibrator"),与契约 §3.1 [10]一致
- 模拟器无振动硬件、调用静默忽略;真机才能感知

WebContainerViewController.viewDidLoad 新增 registerBridgeHandlers()
单一聚合点,Phase 2+ 在此追加更多 handler,便于发现 / 调试。

repeatvibrator / canclevibrator 严格守住 Plan §5 Phase 2.2 范围,不
提前实现。

BuildProject 通过

Plan 进度已勾选(§5 Phase 1.15 + §8)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-22 04:02:33 +08:00

33 lines
1.2 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
//
// VibratorHandler.swift
// ylgamehall
//
// H5 → Native handler「vibrator」(契约 §3.1 [10]:单次振动)。
// Phase 1.15 仅实现这一项作为最小垂直闭环验证标的;
// `repeatvibrator` / `canclevibrator` 放到 Phase 2.2 一并补齐。
//
import AudioToolbox
/// 单次振动 handler 注册器。
///
/// 设计为无状态 enum:震动调用是无状态的 C API,不需要持有任何资源;
/// 同时避免误把 handler 注册器实例化保留,造成"注册多份"。
public enum VibratorHandler {
/// 在 `bridge` 上注册 `vibrator` handler。
///
/// 契约(`docs/H5-Native-Contract.md` §3.1 10]):
/// - 入参:被忽略(参考原 msext `RootVC.m:1816-1818` 入参 `time` 实际不读取)
/// - 副作用:`AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)`
/// - responseCallback:字符串 `"vibrator"`
///
/// 模拟器无振动硬件,调用会被静默忽略(不抛异常),真机才能感知。
public static func register(on bridge: any BridgeProtocol) {
bridge.register("vibrator") { _, callback in
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
callback?(.string("vibrator"))
}
}
}