返回顶部
i

ios-keyboard-limitationsiOS键盘限制

iOS keyboard extension technical limitations and workarounds. Use when planning or building iOS custom keyboards with voice/audio features, dictation, or system integration needs. Covers memory limits, sandbox restrictions, microphone access, app launching, and viable alternative architectures.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
1,030
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

ios-keyboard-limitations

iOS 键盘扩展限制

在构建具有语音/音频功能的 iOS 自定义键盘时,以下是通过 PolyVoice 项目发现的硬性限制。

🔴 硬性限制(无法绕过)

1. 麦克风访问 — 不允许

键盘扩展无法访问麦克风。
  • - AVAudioRecorder 会因权限错误而失败
  • SFSpeechRecognizer 不可用
  • 键盘上下文中无法集成 Siri

原因: Apple 安全模型 — 键盘在沙盒中运行,可能记录音频按键。

2. 打开其他应用 — 被阻止

键盘无法以编程方式打开主应用或任何其他应用。
  • - UIApplication.shared.open() 返回 false
  • URL 方案无效(myapp://)
  • ExtensionContext.open() 不可用

原因: 防止恶意键盘在未经用户同意的情况下启动应用。

3. 内存限制 — 约 50MB

键盘扩展有严格的内存限制(约 30-60MB)。
  • - 超出限制后应用静默终止
  • 无崩溃日志,直接消失
  • 大量音频处理 = 立即崩溃

缓解措施:

  • - 以 16kHz 单声道录制(而非 44.1kHz)
  • 最大使用 32kbps 比特率
  • 处理后立即清理文件
  • 硬性限制最长录制 60 秒

4. 无持久存储

UserDefaults 不可用,仅支持 App Groups。
  • - 标准 UserDefaults 无法持久化
  • 必须使用 UserDefaults(suiteName: group.com.company.app)
  • 两个目标都需要启用 App Group 功能

5. 网络需要“完全访问”

如果用户未在设置中启用“允许完全访问”,API 调用将失败。
  • - 用户必须明确启用:设置 → 通用 → 键盘 → [键盘名称] → 允许完全访问
  • 大多数用户不会这样做
  • 无法从键盘 UI 有效提示或解释

🟡 部分变通方案(用户摩擦)

“打开应用”变通方案

目标: 让用户点击按钮打开主应用进行录制。

尝试:
swift
// 这不起作用
extensionContext?.open(URL(string: myapp://record)!)

现实: 必须在扩展上下文之外使用 UIApplication.shared.open(),但键盘无法调用此方法。

手动切换模式

实际有效的方法(有摩擦):
  1. 1. 用户在键盘中点击按钮 → 显示提示:“打开 PolyVoice 录制?”
  2. 用户手动切换到主应用(Home 键、滑动等)
  3. 主应用检测到活动会话(通过 App Groups / 共享状态)
  4. 主应用在出现时自动录制
  5. 静音时自动停止(2 秒)
  6. 自动复制到剪贴板
  7. 用户手动切换回目标应用
  8. 键盘在重新出现时自动粘贴

用户流程:

键盘 → 点击麦克风 → [手动:切换到应用] → 应用自动录制 →
[手动:切换回来] → 键盘自动粘贴

摩擦点:

  • - 两次手动应用切换
  • 上下文切换打断流程
  • 用户忘记返回
  • 剪贴板可能被覆盖

🟢 替代架构

选项 1:共享扩展(更适合音频)

使用共享表单代替键盘。
  • - 完整的应用功能
  • 可以录制音频
  • 可以处理并返回文本

限制: 不是键盘 — 用户必须为每个文本字段打开共享表单。

选项 2:完整应用模式

不使用键盘扩展 — 仅使用主应用。
  • - 用户打开应用
  • 录制听写
  • 复制结果
  • 切换到目标应用
  • 手动粘贴

优点: 无内存限制,完整麦克风访问,可靠。
代价: 比键盘更繁琐。

选项 3:Siri 快捷指令集成

提供语音转文本的 Siri 快捷指令。
  • - “嘿 Siri,用 PolyVoice 听写”
  • 将文本返回到当前应用
  • Apple 完全支持

限制: 非即时,需要设置 Siri。

📊 决策矩阵

方法麦克风访问内存用户摩擦Apple 批准
键盘扩展❌ 否⚠️ 50MB低(无音频时)✅ 是
键盘 + 音频变通方案
❌ 否 | ⚠️ 50MB | 🔴 高 | ✅ 是 | | 共享扩展 | ✅ 是 | ✅ 完整 | 🟡 中 | ✅ 是 | | 仅完整应用 | ✅ 是 | ✅ 完整 | 🟡 中 | ✅ 是 | | Siri 快捷指令 | ✅ 是 | ✅ 完整 | 🟡 中 | ✅ 是 |

🎯 建议

对于语音听写/AI 转录:

  1. 1. 不要构建键盘扩展 — 限制使其令人沮丧
  2. 使用共享扩展 — Apple 支持,功能完整
  3. 或完整应用 — 构建最简单,最可靠
  4. 添加快捷指令 — 适合追求速度的高级用户

对于非音频键盘(表情符号、翻译等):

键盘扩展效果很好。只需避免音频功能。

📚 参考

  • - Apple 官方文档:https://developer.apple.com/documentation/uikit/keyboardsandinput/creatingacustom_keyboard
  • 自定义键盘编程指南(WWDC 会议)
  • PolyVoice 项目经验(~/Projects/polyvoice-keyboard/)

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 ios-keyboard-limitations-1776420060 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 ios-keyboard-limitations-1776420060 技能

通过命令行安装

skillhub install ios-keyboard-limitations-1776420060

下载

⬇ 下载 ios-keyboard-limitations v1.0.0(免费)

文件大小: 3.03 KB | 发布时间: 2026-4-17 19:46

v1.0.0 最新 2026-4-17 19:46
- Initial release summarizing hard technical limitations of iOS custom keyboards, focused on audio/voice features.
- Details restrictions: microphone access, app launching, memory limits, storage, and networking requirements.
- Documents partial workarounds and friction-heavy patterns for integrating voice features.
- Compares alternative architectures: share extension, standalone app, and Siri Shortcuts.
- Provides a decision matrix and clear recommendations for different use cases.
- Includes reference links to Apple documentation and PolyVoice project insights.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部