屏幕共享 Extension 与宿主 App 之间的数据共享

如何在屏幕共享拓展中获取 App 宿主的相关数据
发布时间: 2022-01-07 14:12

回答:

虽然拓展 App 和 原先的 App(称作宿主 App )在同一个项目中,但他们是两个不同的 Targets,各自拥有属于自己的沙盒环境。由于沙盒的限制, 通过:

NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

无法在拓展 App 中获取到宿主 App 的数据。但苹果还是给了我们一调道路,每个拓展 App 会有一个唯一的 GroupID,我们可以通过这个 GroupID 去进行数据交互。如:

在宿主 App 保存值:

// 此处 id 要与开发者中心创建时一致    
NSUserDefaults *rongCloudDefaults = [[NSUserDefaults alloc] initWithSuiteName:@“您的GroupID”];    
[rongCloudDefaults setObject:self.roomId forKey:@"roomId"];


在拓展 App 里取值:

NSUserDefaults *rongCloudDefaults = [[NSUserDefaults alloc] initWithSuiteName:@“您的GroupID”];    
NSString *roomId = [rongCloudDefaults objectForKey:@"roomId"];