有没有办法从主机应用程序获取应用程序组标识符并在 iOS 上共享扩展程序?

Posted

技术标签:

【中文标题】有没有办法从主机应用程序获取应用程序组标识符并在 iOS 上共享扩展程序?【英文标题】:Is there a way to get the app group identifier from host app and share extension on iOS? 【发布时间】:2016-03-12 00:15:59 【问题描述】:

我已经为我的主机应用和共享扩展设置了应用组。标识符看起来像“group.com.abc.xyzApp”。有没有办法以编程方式获取这个字符串? 另外,如何检测应用程序组是否以编程方式设置?是否尝试使用足以知道的应用程序组标识符初始化文件容器或用户默认值? 例如:

[[NSUserDefaults alloc] initWithSuiteName:@"group.com.abc.xyzApp"].

【问题讨论】:

嗨@Shwethascar,你找到解决方案了吗? @W.S 不,我没有。我最终为标识符使用了预设字符串。 NSString *path = [[NSBundle mainBundle] pathForResource:@"MyApplicationTargetName" ofType:@"entitlements"]; NSDictionary *dict = [[NSDictionary alloc]initWithContentsOfFile:path]; NSArray *appGroups = [dict objectForKey:@"com.apple.security.application-groups"];我能够使用上面的代码读取组数组。现在我正在尝试以编程方式查找权利文件名,因此 WatchKit Extension 和 App 都以编程方式读取它的应用程序组,而无需硬编码字符串。 @W.S 我想我读到这仅在开发中有效? 如果你解压你的ipa文件,你会得到一个名为embedded.mobileprovision的文件;命令security cms -Di embedded.mobileprovision 将告诉您应用程序组名称。我不知道如何以编程方式阅读它。 【参考方案1】:

您无法检测是否以编程方式获得了某些东西,但我认为这不是很有用。

为什么你需要改变这个?可能是环境? 如果是这样,您可以通过项目变量来完成,然后将其添加到您的 info.plist

稍后您可以通过以下方式获得它:

main.object(forInfoDictionaryKey: "AppGroupId") as? String

希望对你有帮助

【讨论】:

以上是关于有没有办法从主机应用程序获取应用程序组标识符并在 iOS 上共享扩展程序?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法从 python 脚本中获取不断变化的数据,并在 Vue 组件中显示和更新?

网络通信

有没有办法更新一个表,并在一个语句中选择它?

iOS:是不是可以通过编程方式从 iOS 应用程序获取 iTunes 应用程序链接?

无法从今天扩展打开主机应用程序

Rancher 添加主机无法显示添加主机无效额解决办法