应用扩展如何访问包含应用图片/资产/资源数据

时间:2014-09-08 15:18:32

标签: ios8 ios-app-extension

  

我使用自己的文档提供程序应用程序扩展功能实现了   ios app。问题是app扩展程序无法访问   包含应用图片/资产或包含应用资源数据。   有没有人知道如何实现它?。

2 个答案:

答案 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];

这将为您节省大量空间,特别是如果您的扩展程序使用了大量图片。