我是一名开发iOS机器人应用程序的开发人员.我不打算将此应用程序提交到应用程序商店,也不希望建议的方法获得苹果批准....
我试图让蓝牙工作,我认为一个好的起点是尝试修改现有的苹果框架.我可以修改框架,这样当它们构建到我的iOS设备时,框架将被修改为应用程序(但不是同一设备上的其他应用程序)?
事实上,你可以!
Objective-C允许您"swizzle"方法来覆盖它们的默认行为,但如果您愿意,仍然可以调用原始实现.您可以根据需要多次为任意数量的Objective-C方法执行此操作.
如果您希望覆盖C函数中存在的行为,则需要对平台进行更多控制.Jailbreaking允许您使用Jay Freeman的CydiaSubstrate的全部功能来挂钩或调配Objective-C方法和C/C++函数.
虽然我不建议使用MethodSwizzle本身,但以下网址对于调配http://cocoadev.com/wiki/MethodSwizzling进行了很好的讨论.
但你真的应该使用CydiaSubstrate的 MSHookMessageEx和MSHookFunction.特别是因为您没有向App Store提交任何内容.
现在关于蓝牙,我已经在这个领域做了大量的工作(我开发了Celeste,这是一个系统范围的调整,为iOS上的系统应用程序提供了香草蓝牙OBEX支持).我建议你研究使用类似BTstack的东西,它可以让你从HCI到RFCOMM级别访问蓝牙模块,并支持你可能需要的SDP和配对等功能.它还有一个额外的好处,就是不要求方法调整,有些人似乎认为这是一种应该不惜一切代价避免的某种撒旦仪式.