eaframework outputstream 不适用于 11.2.1
eaframework outputstream doesn't work on 11.2.1
- (void)_writeData {
while (([[_session outputStream] hasSpaceAvailable]) && ([_writeData length] > 0))
{
NSInteger bytesWritten = [[_session outputStream] write:[_writeData bytes] maxLength:[_writeData length]];
if (bytesWritten == -1) {
NSLog(@"write error");
break;
} else if (bytesWritten > 0) {
[_writeData replaceBytesInRange:NSMakeRange(0, bytesWritten) withBytes:NULL length:0];
NSLog(@"bytesWritten %ld", (long)bytesWritten);
}
}
}
我的代码和上面的苹果官方demo一模一样,除了"iOS 11.2.1".
外,通过lightning端口与外部配件的通信工作正常
我调试了一下,发现确实做了Outputstream
发送数据的动作,但是还是失败了,检测不出数据。
有人知道如何找出流中发生的事情吗?
这是Apple的错误吗?
终于解决了:
1.硬件端按照Accessory Interface Specification R27.pdf
中的指示发送StatusExternalAccessoryProtocolSession
命令
奇怪的是,在11.2以下的版本中,不用这个命令session也能设置成功
- (void)_writeData {
while (([[_session outputStream] hasSpaceAvailable]) && ([_writeData length] > 0))
{
NSInteger bytesWritten = [[_session outputStream] write:[_writeData bytes] maxLength:[_writeData length]];
if (bytesWritten == -1) {
NSLog(@"write error");
break;
} else if (bytesWritten > 0) {
[_writeData replaceBytesInRange:NSMakeRange(0, bytesWritten) withBytes:NULL length:0];
NSLog(@"bytesWritten %ld", (long)bytesWritten);
}
}
}
我的代码和上面的苹果官方demo一模一样,除了"iOS 11.2.1".
外,通过lightning端口与外部配件的通信工作正常我调试了一下,发现确实做了Outputstream
发送数据的动作,但是还是失败了,检测不出数据。
有人知道如何找出流中发生的事情吗? 这是Apple的错误吗?
终于解决了:
1.硬件端按照Accessory Interface Specification R27.pdf
StatusExternalAccessoryProtocolSession
命令
奇怪的是,在11.2以下的版本中,不用这个命令session也能设置成功