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

虽然拓展 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"];