У меня есть приложение для часов, которому необходимо взаимодействовать с родительским приложением для получения некоторой информации. Это должно происходить при использовании только часов и телефона в кармане. Раньше это работало так:
В InterfaceController на часах:
[InterfaceController openParentApplication:request reply:^(NSDictionary *replyInfo, NSError *error) {
// handle response from phone
}];
В AppDelegate телефона:
- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply
NSDictionary *response = // generate response
reply(response);
}
Я попытался изменить код в InterfaceController на:
[[WCSession defaultSession] sendMessage:request
replyHandler:^(NSDictionary *reply) {
}
errorHandler:^(NSError *error) {
}
];
И код в AppDelegate для этого, который никогда не вызывается:
- (void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message replyHandler:(void (^)(NSDictionary<NSString *,id> *replyMessage))replyHandler {
// this never gets called
}
Я видел примеры использования sendMessage на часах, но все они требуют, чтобы делегат находился в ViewController на открытом телефоне. Есть ли способ получить информацию из родительского приложения на телефоне, когда телефон не используется?