3

我已经看到了一些关于此的问题,并尝试了提供的所有答案,但这仍然对我不起作用。

我试图在我的 iPhone 应用程序和它的 WatchKit 扩展之间共享几个小数据(字符串和布尔值)。(如果有任何区别,WK 应用程序的 GlanceController 正在读取信息)

通过开发者网站,我创建了一个应用程序组 (group.com.theYawns.Sorcerers-Apprentice)。如果我查看“应用程序 ID”,我的应用程序(com.theYawns.Sorcerers-Apprentice)似乎有两个相同的 ID,外加一个用于扩展程序的 ID(com.theYawns.Sorcerers-Apprentice.watchkitextension)。每个都启用了“应用程序组”(用于开发和分发),如果我编辑应用程序 ID,则会选择应用程序组。

我已经为应用程序和扩展程序打开了“应用程序组”功能。一个问题我会定期 - 一天几次,但不是每次构建 - 如果我进入并查看“功能”选项卡,我有一个红色的感叹号,表示“将应用程序组”权利添加到您的权利文件中。如果我查看权利文件,权利就在那里,如果我单击“修复问题”,红色感叹号将变为复选标记。但是,每天需要多次执行此操作的事实让我担心出了点问题。

我已经多次在 XCode 首选项下刷新了我的配置文件,虽然我没有在权利下看到应用程序组图标,但如果我将鼠标悬停,我确实会在弹出的工具提示中看到应用程序组。

在我的应用程序和扩展程序中,我通过

NSUserDefaults *sharedAppDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.theYawns.Sorcerers-Apprentice"]; 

我还尝试[sharedAppDefaults synchonize]在每次写入之后和 WatchKit 尝试读取之前添加一个,以防万一事情没有被清除。(没有任何区别)。

我的 WatchKit 扩展包 ID 与我的 iPhone App 包 ID 不同,这是我在不同线程上看到的答案之一。

我还添加了一个 NSTimer 以每 10 秒刷新一次,因此如果在获取更改时存在时间问题,我希望它在一两个更新周期后自行解决,但事实并非如此。

真的很难过......似乎其他人已经通过其他线程的答案解决了他们的问题,但没有一个对我有用。

我搜索过的其他主题包括:

为什么应用程序组不能在我的 WatchKit 扩展中工作?

https://stackoverflow.com/questions/27047455/how-to-shared-storage-between-app-and-extension-with-app-group-and-

WatchKit NSUserDefaults 和 NSKeyedUnarchiver 问题

4

2 回答 2

2

好的,我在 Apple 开发者论坛中找到了答案。

从 XCode 目标“功能”选项卡看来,我设置了所有正确的权利。我可以在我的项目中看到“权利”文件,打开它,看看它是否设置正确。

但是——如果我查看我的应用程序目标的“构建设置”选项卡下的“代码签名”部分,则没有显示任何权利文件。(对于 WatchKit 扩展程序,这一切都正确显示,但对于 iPhone 主应用程序却没有)。

当我在代码签名下插入我的权利文件的名称时,一切都开始工作了。

这对我来说似乎是一个错误——我不相信同一目标的“功能”选项卡和“构建设置”选项卡应该在不同的地方寻找权利。但是想在这里发布对我有用的答案,以防其他人遇到这个问题。

摘要:为确保权利正确,您必须查看功能中正确设置的开关,并且您必须查看构建设置/代码签名下引用的权利文件。

于 2015-03-17T17:28:56.207 回答
0

您必须将权利添加到应用程序扩展的配置文件中。为此,请登录到您的开发人员帐户以添加权利,然后下载最新的配置文件。要验证应用组是否已启用,请在“TextEditor”中打开下载的配置文件并搜索“应用组”。如果您做得正确,这将向您显示结果。使用这些新下载的配置文件,它会显示功能中的复选标记。

于 2015-03-17T16:59:56.450 回答