应用转移后App Groups数据访问咨询:开发者账号迁移后的权限问题
好问题,这其实涉及到苹果App Groups权限机制的核心逻辑,我来帮你梳理清楚:
App Groups的身份核心是Team ID + 标识符的组合
苹果的App Groups不是只靠标识符来区分的,而是由开发者账号的Team ID加上你设置的组标识符共同构成唯一标识。账号A和账号B的Team ID是完全不同的,所以哪怕你在账号B里创建了标识符完全相同的App Group,这本质上是一个全新的、独立的组,和账号A原来的那个没有任何关联。签名身份变更导致沙盒权限隔离
当你用账号B签名推送更新后,App的签名主体变成了账号B的Team ID。iOS/macOS的沙盒机制会严格验证App的身份,只有和App Group拥有相同Team ID的App,才能访问对应的沙盒目录。所以新签名的App完全没有权限访问账号A时期的App Groups沙盒数据——哪怕目录里的数据还存在,系统也会阻止你的App读取。额外提醒:已删除的原App Group数据的状态
你已经删除了账号A里的App Group,这意味着苹果的开发者后台不再关联这个Team ID+标识符的组合,原App Groups的沙盒数据会被系统标记为“无主资源”,后续很可能会被系统自动清理,就算暂时没被清理,你的新App也无法访问。
如果你的业务需要保留这些数据,可行的方案是:在迁移前发布一个过渡版本,把App Groups里的数据迁移到App的私有沙盒或者iCloud等独立存储位置,然后在账号B签名的新版本里,从这些位置读取数据,再写入新的App Groups中。
内容的提问来源于stack exchange,提问作者Sandy

