Desidero inviare un messaggio istantaneo all'app per iOS dall'app watch. Implementato il codice seguente in XCode7 versione beta 4 e mantenendo l'applicazione in primo piano in entrambi i simulatori. ecco il codice ho implementato'isReachable' è falso quando si invia un messaggio dall'app watch all'app iOS
In watchkit interfaceController
-(void)willActivate { [super willActivate]; if ([WCSession isSupported]) { WCSession *session = [WCSession defaultSession]; session.delegate = self; [session activateSession]; } } -(IBAction)buttonClicked { NSDictionary *applicationDict = [[NSDictionary alloc] initWithObjects:@[@"Hi"] forKeys:@[@"key"]]; if([[WCSession defaultSession] isReachable]) { [[WCSession defaultSession] sendMessage:applicationDict replyHandler:^(NSDictionary *reply) { NSLog(@"%@",reply); } errorHandler:^(NSError *error) { NSLog(@"%@",error); }]; } }
In iOS classe app
-(void)viewDidLoad { [super viewDidLoad]; if ([WCSession isSupported]){ WCSession *session = [WCSession defaultSession]; session.delegate = self; [session activateSession]; } } -(void)session:(nonnull WCSession *)session didReceiveMessage:(nonnull NSDictionary *)message replyHandler:(nonnull void (^)(NSDictionary * __nonnull))replyHandler { dispatch_async(dispatch_get_main_queue(), ^{ self.testLbl.text = [message objectForKey:@"key"]; [self.view setNeedsDisplay]; }); }
Al telefono, ho non pensare di voler eseguire l'attivazione di WCSession in ViewDidLoad di ViewController, dovresti farlo nel delegato della tua appFinishLaunching – CSmith
@CSmith Nella documentazione Apple, non hanno mai menzionato che il metodo di attivazione dovrebbe essere chiamato nel delegato dell'app. dobbiamo chiamare prima di inviare qualsiasi messaggio. leggi il documento e commenta. [collegamento] (https://developer.apple.com/library/prerelease/watchos/documentation/WatchConnectivity/Reference/WCSession_class/index.html#//apple_ref/occ/instm/WCSession/activateSession) – Nagendra
visualizza la connettività di controllo Video del WWDC 2015, ti dicono esplicitamente di non fare quello che fai – CSmith