我可以在我的主机应用中阅读我的应用扩展程序的info.plist吗?

时间:2015-04-13 18:00:00

标签: ios ios8-today-widget today-extension

我已经构建了一个今天的小部件,我想显示我的主机应用程序中关于屏幕的版本。有没有办法做到这一点?

我尝试用[NSBundle mainBundle]替换bundleWithIdentifier,但失败了。那么,有没有办法从他的扩展包中获取infoDictionary,还是我在浪费时间?

2 个答案:

答案 0 :(得分:5)

您可以通过指定扩展程序包的直接路径来关闭此功能。应用扩展程序看起来像是应用程序主要包中的PlugIns/文件夹。您可以使用NSBundle创建-initWithPath:的实例。例如:

- (NSBundle *)appExtensionBundle {
    NSString *plugInsPath = [NSBundle mainBundle].builtInPlugInsPath;
    NSString *appExtensionPath = [plugInsPath stringByAppendingPathComponent:@"MyTodayExtension.appex"];
    return [[NSBundle alloc] initWithPath:appExtensionPath];
}

注意:此代码仅在今日扩展程序中进行了测试。如果您有其他类型的扩展,则应进行测试以确保其正常工作。

答案 1 :(得分:0)

你做不到。应用程序和扩展程序无法访问彼此的代码和地址空间。他们只能使用AppGroup共享容器或使用Shared NSUserDefault来共享数据。

使用这两种方法都需要至少运行一次扩展。