问题标签 [ios-app-group]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
938 浏览

ios - 嵌入式框架内的应用程序组不共享

我正在尝试使用包含在嵌入式框架中的通用模块在我的 iOS 和 WatchKit 扩展之间共享数据。公共模块类与应用组共享保存在 NSUserDefault 中的数据。

但是,从 WatchKit 扩展读取时,看不到我在 iOS 应用程序中写入应用程序组共享的内容。

我在两个目标中启用了具有相同组 ID 的应用组。iOS 读取和写入没有错误,如果 Watch 写入数据,它也会正确读取数据——但两者都看不到对方的写入。

任何想法如何解决非常感谢。

0 投票
0 回答
382 浏览

ios - ios 应用程序组容器 sqlite 首次使用后失败

我创建了一个使用 SQLite 数据库的应用程序。现有代码可以在库目录中创建和使用数据库。

现在我正在创建一个需要相同数据库的应用程序扩展,因此数据库需要位于共享目录中。

所以我用它来打开和创建数据库:

一次有效!我可以创建打开并使用数据库。

但是,下次我打开应用程序时,虽然我可以使用上述代码打开数据库,但其他一切都会产生 SQLite 错误 26:(26)SQLITE_NOTADB 尝试打开文件时,SQLITE_NOTADB 错误表明正在打开的文件没有似乎是一个 SQLite 数据库文件。

注意:静态 NSString *DATA_FILENAME = @"htdata.sqlite3"; 我已经在模拟器和 iPhone 5S 上进行了测试。我已经使用 8.0 和 8.1 作为目标。

0 投票
1 回答
1567 浏览

ios - 如何使用应用程序组与多个应用程序(不仅仅是扩展)共享核心数据并避免损坏的核心数据存储?

我制作了一个 iOS 8 应用程序,它使用新的应用程序组功能与扩展程序共享核心数据存储。它工作得非常好,以至于我想我会尝试使用 2 个独立的应用程序来共享一个应用程序组容器中的核心数据存储。但是,虽然它在 App 和 Extension 之间工作,但在与 2 个应用程序共享时,我遇到了 Core Data 存储损坏问题。

根据我打开 2 个应用程序的顺序,我会收到不同的错误:

提取导致此错误:

CoreData:错误:(522)/private/var/mobile/Containers/Shared/AppGroup/[…].sqlite 的数据库 I/O 错误。SQLite 错误代码:522,'不是错误'</p>

保存导致此错误:

CoreData:错误:(11)致命错误。/private/var/mobile/Containers/Shared/AppGroup/[...].sqlite 的数据库已损坏。SQLite 错误代码:11,'数据库磁盘映像格式错误'</p>

或者:

核心数据:错误:-executeRequest:在 SQL 执行期间遇到异常 = 错误:PRIMARY KEY 必须是唯一的 userInfo = { NSFilePath = "/private/var/mobile/Containers/Shared/AppGroup/[...].sqlite"; NSSQLiteErrorDomain = 19; } CoreData:错误:(19)PRIMARY KEY 必须是唯一的

0 投票
3 回答
6778 浏览

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

我已经看过 SO 的所有其他关于在主机应用程序和应用程序扩展之间共享 NSUserDefaults 数据的帖子,但我的仍然不起作用。这是我所做的一切:

  1. 在 Xcode 的“功能”选项卡上为扩展和主机应用程序启用应用程序组。
  2. 将组名设置为“group.com.mycompany.foo”并确认扩展和主机应用程序已添加到组中。
  3. 确认两者都存在一个权利文件,其中“com.apple.security.application-groups”键设置为我的应用程序组名称。(对于它的价值,我还在扩展程序和主机应用程序之间使用共享的钥匙串功能,这是有效的——所以我不认为这是权利的问题)
  4. 重新生成所有配置文件。事实上,我什至在设置应用程序组后撤销了所有证书并重新生成了所有配置文件。

毕竟,这段代码仍然不起作用:

进而:

这导致:

当我查看 Xcode 首选项时,我注意到这些图标,它们都没有“App Group”图标: Xcode 首选项 - 权利

但正如我之前所说,我什至在设置应用程序组后清除了我的钥匙串、证书和配置文件。因此,如果这确实是问题所在,我该如何将权利添加到配置文件中?

我错过了什么?我的想法很新鲜。

帮助?

编辑:访问组在我的 Today & Safari 扩展中工作,而不是在 WatchKit 扩展中。我不知道为什么,所有构建设置似乎都是以相同的方式配置的。

编辑2:对于那些坚持我的能力设置不正确的人,这里是一个截图:能力

0 投票
1 回答
349 浏览

ios - iOS 编程,Xcode 6.1.1。错误:数据文件“library.a-x86_64.fin”不存在。完成 - 失败

我正在使用包含 .h、静态库 (.a)、.fin、.key 文件的第三方库文件。自述文件说: 1) .fin、.key 和 .a 文件应该存在于同一位置。 2)在“Other Linker Flags”选项中添加标志“-finalize -prefinalized-library library_name.a”。 3)在“Write Link Map File”选项上单击“是”。

我已经从“Xcode 的项目导航器”窗口在项目中创建了一个新的组/文件夹,并放置了 .a、.key、.fin 文件,并遵循了与上述相同的步骤,当我尝试编译应用程序时,.fin 文件在链接期间未找到。

当我删除“其他链接器标志选项”时,应用程序正在编译。但是自述文件说“其他链接器标志选项”对于使用该库是强制性的。

除此之外。当我复制 .a、.key、.fin 文件而不创建任何文件夹时,应用程序编译成功。但是,如果这些文件放在应用程序的文件夹中,则应用程序无法编译。

谁能帮我解决这个问题。如何以及在何处提供 .key、.fin 文件的路径,以便使用终结器编译应用程序。

Xcode 6.1.1 iOS SDK 版本 8.1 OS X - Yosemite 10.10.2

0 投票
2 回答
973 浏览

iphone - WatchKit 扩展没有看到对 App Group 的 NSUserDefaults 的更新

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

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

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

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

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

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

我还尝试[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 问题

0 投票
1 回答
222 浏览

ios - 在已启动的应用程序中将数据移动到共享组

我的应用程序已经在 App Store 上,但现在我正在创建一个 Apple Watch 扩展,这也意味着将数据存储在Shared Group.

对于已经下载我的应用程序的客户,他们第一次启动新更新时,我该如何从当前存储的位置 ( Core Data& ) 移动数据?UserDefaults

执行此操作的最有效且资源最少的方法是什么,并且仅在老用户第一次打开新更新时才这样做?

0 投票
0 回答
56 浏览

objective-c - 同时 iAD 的结果只有一个得到服务

我似乎有一个特殊的问题,如下所示。我在 iOS 应用程序中有两个视图 1) TableViewController 以表格形式查看,单击表格的特定行将使我进入新的 UIView。我正在使用 iAd 在这两个视图上投放横幅广告。

现在的问题是:iAd 在着陆表视图上投放后,没有在第二个视图上投放广告。但是,如果我在第一个视图(即表格视图控制器)上禁用广告,我可以在第二个页面(即 UIview)上看到正在投放的广告。

我还对照 admob 检查了这些,发现上面似乎没有发生在它们身上。

任何帮助表示赞赏!

0 投票
1 回答
126 浏览

ios - WatchKit 使用应用组来存储数据

我正在开发我的应用程序,为 Apple Watch 做好准备。我在我的应用程序中使用 Parse,而不是允许用户尝试使用他们的手表登录,我只希望它使用PFUser来自 iPhone 的数据。如果他们已经登录,它会检测到PFUseriPhone 当前正在使用,如果没有,它会提示他们在 iPhone 上登录。我的问题是,为此处理数据传递的最佳方法是什么? NSUserDefaults还是App Groups

0 投票
1 回答
1700 浏览

ios - 应用程序组中的 NSUserDefaults 不起作用

我正在尝试在我的应用程序中使用应用程序组权利来处理 iPhone 应用程序和 WatchKit 扩展之间的 NSUserDefaults 数据。

我去了 iPhone 目标中的 Capabilities,并打开了 App Groups,并确保选择了 group.com.316apps.iPrayed。然后我去了 WatchKit Extension Target 并对其 Capabilities 做了同样的事情。

在应用程序的 iPhone 端,我输入了以下代码:

在 WatchKit InterfaceController 中,我有以下内容,但 NSLog 始终显示“null”

为什么 WatchKit 没有正确读取 NSUserDefaults?

注意 我的包标识符与手表套件扩展目标不同。我需要一个新的 Apple ID 吗?