【发布时间】:2014-09-08 15:18:31
【问题描述】:
我自己实现了文档提供程序应用程序扩展功能 ios应用程序。问题是应用程序扩展无法访问 包含应用程序图像/资产或包含应用程序资源数据。 有谁知道如何实现它?。
【问题讨论】:
我自己实现了文档提供程序应用程序扩展功能 ios应用程序。问题是应用程序扩展无法访问 包含应用程序图像/资产或包含应用程序资源数据。 有谁知道如何实现它?。
【问题讨论】:
扩展在您的 Xcode 项目中有自己的目标。为了访问扩展中的资源,您还需要将它们添加到该目标(在File Inspector 中,还要检查Target Membership 部分中的扩展目标)。请注意,这些资源也会被复制到扩展包中,这会增加您的整体应用大小。
旁注:在我的扩展程序中,我没有将我的默认图像资产目录 (Images.xcassets) 添加到扩展程序中,但仍然能够访问包含的图像。也许这是个例外。
【讨论】:
更新
如果您支持 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];
这将为您节省大量空间,尤其是在您的扩展程序使用大量图像时。
【讨论】: