gpt4 book ai didi

ios - 从 WatchKit 发送数据流

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:35:18 26 4
gpt4 key购买 nike

对于我在 Apple Watch 上进行的项目,我正在寻找一种方法将数据流发送到本地网络上的服务器。这是快速的在线数据,所以我更喜欢通过 UDP 发送它(但这对我来说不是严格的要求)。数据是 watch 的当前加速度计读数,每隔几分之一秒读取一次。

我使用的是 WatchOS 2 (Beta 4)、iOS 9 (Beta 4)(以及最新的 Xcode 7 测试版)。

我使用了以下代码:

- (void) sendMsg: (NSString *)msg{
int socketSD = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (socketSD <= 0) {
NSLog(@"Error: Could not open socket.");
return;
}

// set socket options enable broadcast
int broadcastEnable = 1;
int ret = setsockopt(socketSD, SOL_SOCKET, SO_BROADCAST, &broadcastEnable, sizeof(broadcastEnable));
if (ret) {
NSLog(@"Error: Could not open set socket to broadcast mode");
close(socketSD);
return;
}

// Configure the port and ip we want to send to
struct sockaddr_in broadcastAddr;
memset(&broadcastAddr, 0, sizeof(broadcastAddr));
broadcastAddr.sin_family = AF_INET;
inet_pton(AF_INET, SERVER_IP, &broadcastAddr.sin_addr);
broadcastAddr.sin_port = htons(SERVER_PORT);

char *request = "Message from Watch";
ret = sendto(socketSD, request, strlen(request), 0, (struct sockaddr*)&broadcastAddr, sizeof(broadcastAddr));
if (ret < 0) {
NSLog(@"Error: Could not open send broadcast.");
close(socketSD);
return;
}
}
- (IBAction)watchGoButtonTouched {
[self sendMsg:@"Hi"];
}

在 Watch 模拟器 中成功将消息发送到服务器,但在实际 watch 上运行时,出现错误Error: Could not open send broadcast.。我应该提一下,相同的代码在 watch 所连接的 iPhone 上运行良好。

由于这些原因,恐怕上面的代码会因为 beta 问题而失败,这超出了我的代码范围。如果您不这么认为,我很想知道。

如果是测试版问题,我等不及修复了,所以我想在这里问一下如何发送符合以下几点的数据:

  • 基本上,这是一种将流量直接从 watch 发送到本地网络上的 UDP 服务器的方法。
  • 数据必须在接收到的那一刻发送(因此连接多个数据点不是一种选择)
  • 首选 UDP,但任何其他发送低延迟数据流的方式都不错。
  • 这是一个黑客马拉松项目,它是一个非常酷的想法的概念验证。这意味着,AppStore 合规性或电池问题不适用于此处。

任何帮助将不胜感激!

非常感谢:)丹

最佳答案

嗯,截至 WatchOS 2 Beta 5,仍然没有任何方法可以从 watch 发送快速信息。

我确实找到了一个解决方法(有一些限制使其不适合生产)——尽管原始帖子评论中提到的方法都不能高速传递信息,我我注意到日志(通过 NSLog() 发布)确实可以非常快速地到达 Xcode 控制台窗口。我猜 Apple 使用低级蓝牙通信系统来传递这些消息。

我编写了一个简短的脚本来从 Xcode 读取这些日志,从而近乎实时地从 watch 获取数据。在 Mac 上,我可以将它发送到任何我想要的地方(如果我愿意,甚至可以在途中处理它)。此处描述了解决方案及其局限性 - Reading Apple Watch syslog (NSLog()) in real-time .

关于ios - 从 WatchKit 发送数据流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31808315/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com