簡體   English   中英

從WatchKit發送數據流

[英]Send a stream of data from WatchKit

對於我在Apple Watch上進行的項目,我正在尋找一種將數據流發送到本地網絡上的服務器的方法。 這是快速的在線數據,所以我更喜歡它將通過UDP發送(但這對我來說並不是一個嚴格的要求)。 數據是從手表讀取的當前加速度計,每秒鍾讀取一次。

我正在使用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模擬器中的服務器,但是當在實際手表上運行時,我收到錯誤Error: Could not open send broadcast. 我應該提一下,相同的代碼在手表連接的iPhone上運行良好。

由於這些原因,我擔心上面的代碼因為beta問題而失敗,超出了我的代碼范圍。 如果你不這么認真的話,我很想知道。

如果是beta問題,我不能等待它被修復,所以我想在這里詢問有關如何發送符合以下幾點的數據的任何想法:

  • 基本上,一種將流量直接從手表發送到本地網絡上的UDP服務器的方法。
  • 數據必須在收到時發送(因此不能連接多個數據點)
  • UDP是優選的,但是以低延遲發送數據流的任何其他方式都是好的。
  • 這是一個黑客馬拉松項目,這是一個非常酷的想法的概念驗證。 含義,AppStore合規性或電池問題不適用於此處。

任何幫助都感激不盡!

非常感謝:) Dan

好吧,從WatchOS 2 Beta 5開始,仍然沒有任何方法可以從手表發送快速信息。

我確實找到了一個解決方法(限制使其不適合生產) - 雖然原始帖子的評論中提到的方法沒有能夠高速傳遞信息,但我注意到了日志(通過NSLog()發布) NSLog() )非常快速地訪問Xcode控制台窗口。 我猜Apple使用低級藍牙通信系統來傳遞這些消息。

我寫了一個簡短的腳本來從Xcode讀取這些日志,從而幾乎實時地從手表中獲取數據。 從Mac我可以將它發送到我想要的任何地方(如果我願意,甚至可以在途中處理它)。 解決方案及其局限性在此處描述 - 實時讀取Apple Watch syslog(NSLog())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM