我正在開發Apple Watch應用程序。當iPhone發生特定事件時,我可以從iPhone向Apple Watch發送數據。但是,我希望在開始運行時觀看數據。我應該如何處理這個問題?什麼是最有效的方法呢?WatchOS從iPhone獲取數據
回答
WatchConnectivity
首先,都應該相互通信的兩個類(iOS和watchOS)需要符合的<WCSessionDelegate>
和#import
的WatchConnectivity
框架
要發送的數據,你需要檢查你的設備是否能夠發送數據
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
- 1. iPhone從plist獲取數據
- 2. 獲取iPhone數據
- 3. Iphone,從Uiimageview獲取圖像數據
- 4. iPhone Sqlite,從數據庫獲取數據時獲取重複數據庫
- 5. 使用iPhone從sqlite獲取數據作爲整數使用iPhone
- 6. iPhone:獲取數據關閉
- 7. iPhone - 核心數據中獲取數據
- 8. 如何從iphone的sqlite數據庫獲取int數據
- 9. iPhone應用程序從Mysql數據庫獲取數據
- 10. 從數據庫獲取數據到科爾多瓦iphone的文本字段iphone
- 11. 獲取從數據
- 12. 如何在iPhone中獲取XLS數據?
- 13. JSON編碼 - 獲取MySQL數據到iPhone
- 14. iPhone核心數據獲取主鍵
- 15. 從獲取請求中獲取數據?
- 16. 從獲取請求獲取div數據
- 17. 如何從Apple Watch獲取傳感器數據到iPhone?
- 18. 在Mac上從iPhone獲取實時數據
- 19. 從地圖視圖(Iphone IOS)獲取DetailView中的xml數據
- 20. 從web-services iphone獲取數據的不同方式?
- 21. 從iPhone上的SQLite3獲取數據時出現問題
- 22. iphone編程從遠程服務器獲取數據
- 23. iPhone/Sqlite - 如何只從服務器獲取更改的數據?
- 24. 服務器沒有從iPhone獲取正確格式的數據?
- 25. 如何從web服務器獲取數據到iphone或ipod
- 26. 計時器每x分鐘從服務器獲取數據:iphone
- 27. 更好地處理從iPhone中的服務器獲取數據
- 28. 如何從json-rpc webservice獲取數據:iPad/iPhone/Objective C
- 29. 從越獄iphone外殼腳本獲取地理位置數據
- 30. 從遠程sql服務器獲取數據 - iPhone sdk