Звучит как проблема с разрешением. Проверьте элементы управления активностью:
https://developers.google.com/assistant/sdk/guides/library/trou устранения#permissions
Необходимо писать данные только после того, как пространство станет доступным в потоке вывода. Когда поток заканчивает открываться, он не всегда сразу имеет пространство в наличии, таким образом писание в него не будет работать. Если Вы перемещаетесь write
звоните в NSStreamEventHasSpaceAvailable
обработчик, это должно успешно выполниться.
Кроме того, компьютер на другом конце сокета не имеет никакого способа знать длину данных, которые Вы отправляете. Если Вы не предупреждаете о конце данных путем закрытия сокета, необходимо явно отправить длину данных наряду с данными:
case NSStreamEventHasSpaceAvailable:
{
if(stream == oStream)
{
NSData *data = UIImageJPEGRepresentation(drawImage.image, 90);
// Convert from host to network endianness
uint32_t length = (uint32_t)htonl([data length]);
// Don't forget to check the return value of 'write'
[oStream write:(uint8_t *)&length maxLength:4];
[oStream write:[data bytes] maxLength:length];
}
break;
}