在我的應用程序中,我必須將手錶InterfaceController的信息發送到手機HomeViewController。但是,當我運行我的代碼時,信息只能運行一次。爲了再次運行,我必須刪除Apple Watch應用程序並重新安裝它。WCSession只能工作一次
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];
});
}
如前所述,iOS的唯一的標籤更改爲 「Hello World」 的一次。在我重新啓動iOS應用程序並且其文本標籤不再顯示「Hello World」後,我無法設法讓手錶再次將iOS文本標籤更改回「Hello World」。
這是手錶和iPhone之間的溝通出了問題,或者是它的代碼有問題嗎?
而在一個鍵/值字典,你不能只是更改值 - 你必須有至少一個不同的密鑰各一次。 –