2015-10-31 2 views
2

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é?

Répondre

0

Si cela aide quelqu'un, j'ai compris que vous devez l'exécuter sur le fil principal.

- (void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message replyHandler:(void (^)(NSDictionary<NSString *,id> *replyMessage))replyHandler { 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     // do stuff here 
     replyHandler(replyDictionary); 
    }); 
} 
+0

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