Dans mon application, je dois envoyer des informations de la montre InterfaceController au téléphone HomeViewController. Mais, quand je cours mon code, l'information ne fonctionne qu'une seule fois. Pour que cela fonctionne à nouveau, je dois supprimer l'application Apple Watch et le réinstaller.WCSession ne fonctionnant qu'une seule fois
InterfaceController.m:
#import "InterfaceController.h"
#import <WatchConnectivity/WatchConnectivity.h>
@interface InterfaceController() <WCSessionDelegate>
@property (strong, nonatomic) WCSession *session;
@end
@implementation InterfaceController
-(instancetype)init {
self = [super init];
if (self) {
if ([WCSession isSupported]) {
self.session = [WCSession defaultSession];
self.session.delegate = self;
[self.session activateSession];
}
}
return self;
}
-(void)sendText:(NSString *)text {
NSDictionary *applicationDict = @{@"text":text};
[self.session updateApplicationContext:applicationDict error:nil];
}
- (IBAction)ButtonPressed {
[self sendText:@"Hello World"];
}
HomeViewController.m:
#import "HomeViewController.h"
#import <WatchConnectivity/WatchConnectivity.h>
@interface HomeViewController()<WCSessionDelegate>
@end
@implementation HomeViewController
@synthesize TextLabel;
- (void)viewDidLoad {
[super viewDidLoad];
if ([WCSession isSupported]) {
WCSession *session = [WCSession defaultSession];
session.delegate = self;
[session activateSession];
}
}
- (void)session:(nonnull WCSession *)session didReceiveApplicationContext:(nonnull NSDictionary<NSString *,id> *)applicationContext {
NSString *text = [applicationContext objectForKey:@"text"];
dispatch_async(dispatch_get_main_queue(), ^{
[TextLabel setText:text];
});
}
Comme mentionné précédemment, l'étiquette iOS seulement passe à "Bonjour tout le monde" une fois. Une fois que j'ai relancé l'application iOS et que son libellé de texte ne dit plus "Hello World", je n'arrive pas à faire en sorte que la montre redéfinisse l'étiquette de texte iOS sur "Hello World".
Est-ce un problème de communication entre la montre et l'iPhone, ou est-ce un problème avec le code?
Et vous ne pouvez pas modifier une valeur dans un dictionnaire clé/valeur - vous devez avoir au moins un différent à chaque fois la clé. –