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