Posts

Showing posts with the label Objective-C

A New Collection of Thoughtful Learning Apps — Now Available on iOS & Android

Image
I’m excited to share a set of mobile apps I’ve recently completed and published on both the Google Play Store and the Apple App Store. These apps are designed with a simple goal in mind: to make meaningful, structured content more accessible, whether you’re studying theology or improving your English vocabulary. 📱 Now Available on Both Platforms All apps are live and available for download: Google Play Developer Page: https://play.google.com/store/apps/dev?id=5835943159853189043 Apple App Store Developer Page: https://apps.apple.com/ca/developer/q-z-l-corp/id1888794100 📖 Theology & Confession Study Apps For those interested in Reformed theology and classical Christian teachings, I’ve developed a series of apps that present foundational texts in a clean, focused reading format: The Belgic Confession Canons of Dort Heidelberg Catechism Westminster Shorter Catechism Each app is designed to provide a distraction-free experience, making it easier to read, reflect, and revisit these im...

React Native TTS iOS 问题全解析:修复 BOOL 错误与事件监听失效(2026 实战指南)

Image
React Native TTS iOS 问题全解析:修复 BOOL 错误与事件监听失效(2026 实战指南) 在 React Native 中使用文本转语音(TTS)本来很简单,但在 iOS 上却可能踩坑。 本文总结了两个非常常见但又很隐蔽的问题,并提供经过验证的解决方案。 🧨 问题一:Objective-C type BOOL is unsupported 错误信息 TextToSpeech.setDefaultRate(): Error while converting JavaScript argument to Objective C type BOOL convert javascript argument to object C type Bool object C type bool is unsupported 🔍 根本原因 这 不是你的代码问题 。 这是由于 iOS 原生桥接层(Objective-C)类型定义错误导致的,尤其在 React Native 新架构(Fabric / TurboModules)下更容易触发。 部分版本的 react-native-tts 错误地使用了: (BOOL *)onWordBoundary ❌ 错误 而 React Native bridge 不支持 BOOL 指针类型 ,只支持: BOOL NSNumber * ✅ 解决方案 https://github.com/ak1394/react-native-tts/issues/291 使用已修复的 fork 版本: @iternio/react-native-tts npm install @iternio/react-native-tts 该版本已修复 iOS 类型问题,可以正常运行。 ⚠️ 问题二:事件监听器未注册 警告信息 Sending `tts-start` with no listeners registered. 即使你已经写了监听: Tts.addEventListener('tts-start', () => { setIsSpeaking(true); }); 🔍 根本原因 问题在于: ...