Не можете да използвате UIApplicationDelegate
клас в разширението на Apple Watch, тъй като неговият ограничен достъп до API в разширението Apple-Watch.
Има 2 начина за извличане на основни данни в appleWatch
- Извличане на данни със споделени данни с концепция за група приложения.
- Извличане на данни от приложението за iOS с изпращане на съобщение до приложението за iOS.
1-ви начин:
Има много блогове, които показват стъпка по стъпка внедряване как да извлечете основни данни в Watch
2-ри начин:
Сега въпросът е как можем да извлечем данни от CoreData
и да ги покажем на часовника?
Е, за това трябва да комуникирате вашия Apple Watch с приложението за iOS чрез WCSession
и да изпратите съобщение до приложението за iOS чрез този клас и да извлечете данни в iOS и да отговорите на тази заявка за съобщение.
Следвайте стъпките по-долу, за да свършите задачата си:
Стъпка 1:
Свържете вашия Apple Watch с iOS чрез WCSession
- (void)willActivate {
// This method is called when watch view controller is about to be visible to user
[super willActivate];
if ([WCSession isSupported]) {
self.session = [WCSession defaultSession];
self.session.delegate = self;
[self.session activateSession];
[self.session sendMessage:@{@"GetCoreData":@"YES"} replyHandler:^(NSDictionary<NSString *,id> * _Nonnull replyMessage) {
//Get Reply Message along with data and use this data in Apple watch
} errorHandler:^(NSError * _Nonnull error) {
//Handle error
}];
}
}
#pragma mark -- WCSessionDelegate --
- (void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *, id> *)message replyHandler:(void(^)(NSDictionary<NSString *, id> *replyMessage))replyHandler{
}
- (void)session:(WCSession *)session activationDidCompleteWithState:(WCSessionActivationState)activationState error:(nullable NSError *)error{
}
Тук в replyHandler
ще получите вашите данни.
Стъпка 2: Вземете връзка през iOS устройство, за да получите съобщение от Apple Watch.
if ([WCSession isSupported]) {
_session=[WCSession defaultSession];
_session.delegate=self;
[_session activateSession];
}
Установете връзка и също така добавете метод на делегиране на приемник в съответния си клас, където трябва да получите данни от DB.
- (void)session:(nonnull WCSession *)session didReceiveMessage:(nonnull NSDictionary<NSString *,id> *)message replyHandler:(nonnull void (^)(NSDictionary<NSString *,id> * __nonnull))replyHandler {
if ([[message objectForKey:@"OpeniOS"] isEqualToString:@"YES"]) {
// Fetch your data from DB.
// After successfully fetching data reply back to Apple watch by reply Block
replyHandler(<your_data>);
}
}
Въз основа на това ще получите вашите CodeData във вашия часовник Apple.
Надяваме се, че това ще ви помогне да разберете потока.
person
CodeChanger
schedule
14.06.2017