我使用自己的文档提供程序应用程序扩展功能实现了 ios app。问题是app扩展程序无法访问 包含应用图片/资产或包含应用资源数据。 有没有人知道如何实现它?。
答案 0 :(得分:5)
扩展程序在Xcode项目中有自己的目标。要访问扩展程序中的资源,您还需要将其添加到该目标(在File Inspector
中还要检查Target Membership
部分中的扩展程序目标)。请注意,这些资源也会被复制到扩展程序包中,从而增加了整体应用程序的大小。
Sidenote :在我的扩展程序中,我没有将默认图片资源目录(Images.xcassets
)添加到扩展程序,但仍然可以访问包含的图片。也许那是个例外。
答案 1 :(得分:2)
更新
如果您支持iOS 8及更高版本,则可以创建一个框架,以便在您的应用及其扩展程序之间共享,并在其中嵌入资源,字符串等。确保使用[UIImage imageNamed:inBundle:compatibleWithTraitCollection:]
和NSLocalizedStringFromTableInBundle
方法,传入作为框架的包。
以前的答案 鉴于扩展是(并且希望总是会)在/ Plugins / PluginName主应用程序的子文件夹中,并且有权访问文件,就像主应用程序一样,你可以执行以下操作(我在我的一些应用程序中执行商店上的应用程序):
// image
UIImage* image = [UIImage imageNamed:@"../../image_name.png"]
// data
NSString* path = [NSHomeDirectory() stringByAppendingPathComponent:@"../../file.json"];
NSData* data = [NSData dataWithContentsOfFile:path];
这将为您节省大量空间,特别是如果您的扩展程序使用了大量图片。