J'ai une application de surveillance qui doit communiquer avec l'application parente pour obtenir des informations. Cela devrait se produire en utilisant uniquement la montre et le téléphone dans une poche. Il travaillait comme ceci:Comment mettre à jour openParentApplication pour Watch OS 2?
Dans le InterfaceController sur la montre:
[InterfaceController openParentApplication:request reply:^(NSDictionary *replyInfo, NSError *error) {
// handle response from phone
}];
Dans le AppDelegate du téléphone:
- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply
NSDictionary *response = // generate response
reply(response);
}
J'ai essayé de changer le code dans le InterfaceController à:
[[WCSession defaultSession] sendMessage:request
replyHandler:^(NSDictionary *reply) {
}
errorHandler:^(NSError *error) {
}
];
Et le code dans le AppDelegate à celui qui ne semble jamais être appelé:
- (void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message replyHandler:(void (^)(NSDictionary<NSString *,id> *replyMessage))replyHandler {
// this never gets called
}
J'ai vu des exemples d'utilisation sendMessage sur la montre, mais ils ont tous besoin d'être délégué dans un ViewController au téléphone qui est ouvert. Existe-t-il un moyen d'obtenir des informations de l'application parente sur le téléphone lorsque celui-ci n'est pas utilisé?
Mon replyHandler fonctionne correctement sur n'importe quel sujet. Peut-être que la génération de votre replyDictionary nécessite le thread principal? – ccjensen