gpt4 book ai didi

iOS/watchos2 - 为什么没有 session :didReceiveApplicationContext: fire?

转载 作者:行者123 更新时间:2023-12-01 17:25:04 26 4
gpt4 key购买 nike

我已经阅读了下面的 q/a,这很棒。这正是我在一个测试项目中所做的,它工作得很好。

我现在已经创建了我的真实项目,但是在 Watch 扩展中,session: didReceiveApplicationContext:不开火。

这是我的发送代码:

-(void)sendPlistToWatch:(NSMutableDictionary *)dictionary {
NSLog(@"%s", __FUNCTION__);
if ([WCSession defaultSession]) {
NSDictionary *applicationDict = @{@"Favorites.plist":dictionary};
[[WCSession defaultSession] updateApplicationContext:applicationDict error:nil];

NSLog(@"sent dictionary");
} else {
NSLog(@"not paired");
}
}

这是 watch 上的接收代码:
- (void)awakeWithContext:(id)context {
[super awakeWithContext:context];

if ([WCSession isSupported]) {
[self.session activateSession];
self.session = [WCSession defaultSession];
self.session.delegate = self;
}
}

- (void)willActivate {
[super willActivate];
}

- (void)didDeactivate {
[super didDeactivate];
}



- (void)session:(nonnull WCSession *)session didReceiveApplicationContext:(nonnull NSDictionary<NSString *,id> *)applicationContext {
NSString *string = [applicationContext objectForKey:@"dictionary"];

NSMutableDictionary *dictionary = [applicationContext objectForKey:@"dictionary"];

dispatch_async(dispatch_get_main_queue(), ^{
NSLog (@"applicationContext: %@", applicationContext);
});

}

Send messages between iOS and WatchOS with WatchConnectivity in watchOS2

我看过 WWDC 连接 session ,发现 this site很有帮助。

任何想法(也许不是代码,而是缺少或不正确的 plist 设置?)

最佳答案

我遇到了一个类似的问题(iOS 9.3,watchOS 2.2),其中 session: didReceiveApplicationContext:委托(delegate)方法不会在预期时触发。似乎存在一些未记录的行为,即如果字典与先前发送的值匹配,则调用 updateApplicationContext()静默失败,既不发送字典也不抛出错误(见 https://forums.developer.apple.com/thread/46107 )。

该线程中提供的解决方案是添加 NSUUID().UUIDString测试时到每个字典。为我工作。

关于iOS/watchos2 - 为什么没有 session :didReceiveApplicationContext: fire?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31474146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com