![](/img/trans.png)
[英]iOS - WatchKit how to send message/data from iPhone app to WatchKit app?
[英]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問題,我不能等待它被修復,所以我想在這里詢問有關如何發送符合以下幾點的數據的任何想法:
任何幫助都感激不盡!
非常感謝:) Dan
好吧,從WatchOS 2 Beta 5開始,仍然沒有任何方法可以從手表發送快速信息。
我確實找到了一個解決方法(限制使其不適合生產) - 雖然原始帖子的評論中提到的方法沒有能夠高速傳遞信息,但我注意到了日志(通過NSLog()
發布) NSLog()
)非常快速地訪問Xcode控制台窗口。 我猜Apple使用低級藍牙通信系統來傳遞這些消息。
我寫了一個簡短的腳本來從Xcode讀取這些日志,從而幾乎實時地從手表中獲取數據。 從Mac我可以將它發送到我想要的任何地方(如果我願意,甚至可以在途中處理它)。 解決方案及其局限性在此處描述 - 實時讀取Apple Watch syslog(NSLog()) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.