2016-08-01 82 views
1

我正在開發Apple Watch應用程序。當iPhone發生特定事件時,我可以從iPhone向Apple Watch發送數據。但是,我希望在開始運行時觀看數據。我應該如何處理這個問題?什麼是最有效的方法呢?WatchOS從iPhone獲取數據

回答

4

WatchConnectivity

首先,都應該相互通信的兩個類(iOS和watchOS)需要符合的<WCSessionDelegate>#importWatchConnectivity框架

要發送的數據,你需要檢查你的設備是否能夠發送數據

if ([WCSession isSupported]) { 
     WCSession *session = [WCSession defaultSession]; 
     session.delegate = self; 
     [session activateSession]; 
     NSLog(@"WCSession is supported"); 
} 

然後,如果你想使用「交互式消息傳遞」(森dMessage API)的,你需要看看其他設備可達第一:

if ([[WCSession defaultSession] isReachable]) { 
    //Here is where you will send you data 
} 

的「後臺操作」的API不要求對應設備是在一次調用API WCSession點到達。

您有幾種選擇,當涉及到你的應用程序之間傳輸數據,在Apple Documentation他們是這樣描述的:

  • 使用updateApplicationContext:error:方法進行交流只有最近的狀態信息發送到對方。當對方醒來時,它可以使用這些信息來更新自己的狀態並保持同步。使用此方法發送新字典會覆蓋以前的字典。

  • 使用sendMessage:replyHandler:errorHandler:sendMessageData:replyHandler:errorHandler:方法立即傳輸數據到對方。當您的iOS應用和WatchKit擴展都處於活動狀態時,這些方法可用於即時通信。

  • 使用transferUserInfo:方法在後臺傳輸數據字典。您發送的字典排隊等待交付給對方,並在當前應用程序被暫停或終止時繼續傳輸。使用transferFile:metadata:方法在後臺傳輸文件。如果您想發送的不僅僅是一個簡單的值字典,請使用此方法。例如,使用此方法發送圖像或基於文件的文檔。

我會給你一個例子,如何發送/接收數據與應用上下文

發送數據:

WCSession *session = [WCSession defaultSession]; 
NSError *error; 

[session updateApplicationContext:@{@"firstItem": @"item1", @"secondItem":[NSNumber numberWithInt:2]} error:&error]; 

接收數據:

- (void) session:(nonnull WCSession *)session didReceiveApplicationContext:(nonnull NSDictionary<NSString *,id> *)applicationContext { 

    NSLog(@"%@", applicationContext); 


    NSString *item1 = [applicationContext objectForKey:@"firstItem"]; 
    int item2 = [[applicationContext objectForKey:@"secondItem"] intValue]; 
} 

更多關於WatchConnectivity的信息我真的推薦看WWDC2015 session video並閱讀Apple Documentation on WatchConnectivity

相關問題