アプリ拡張機能で、/ var/mobile/Containers/Data/Application // Documents //フォルダーに保存されている包含アプリから生成された画像を取得する方法はありますか?
アプリ拡張機能でファイルを利用できるようにするには、Group Path
を使用する必要があります。これは、アプリ拡張機能がアプリのドキュメントフォルダーにアクセスできないため、次の手順を実行したためです。
group.yourappid
のようなグループ拡張子を追加します。次に、次のコードを使用します。
NSString *docPath=[self groupPath];
NSArray *contents=[[NSFileManager defaultManager] contentsOfDirectoryAtPath:docPath error:nil];
NSMutableArray *images=[[NSMutableArray alloc] init];
for(NSString *file in contents){
if([[file pathExtension] isEqualToString:@"png"]){
[images addObject:[docPath stringByAppendingPathComponent:file]];
}
}
-(NSString *)groupPath{
NSString *appGroupDirectoryPath = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:group.yourappid].path;
return appGroupDirectoryPath;
}
生成している画像拡張子に従って、パス拡張子を追加または変更できます。
注-画像はドキュメントフォルダーではなくグループフォルダーに生成する必要があるため、アプリと拡張機能の両方で使用できます。
乾杯。
Swift 3 Update
let fileManager = FileManager.default
let url = fileManager.containerURL(forSecurityApplicationGroupIdentifier: "YOUR_GROUP_ID")?.appendingPathComponent("logo.png")
// Write to Group Container
if !fileManager.fileExists(atPath: url.path) {
let image = UIImage(named: "name")
let imageData = UIImagePNGRepresentation(image!)
fileManager.createFile(atPath: url.path as String, contents: imageData, attributes: nil)
}
// Read from Group Container - (PushNotification attachment example)
// Add the attachment from group directory to the notification content
if let attachment = try? UNNotificationAttachment(identifier: "", url: url!) {
bestAttemptContent.attachments = [attachment]
// Serve the notification content
self.contentHandler!(self.bestAttemptContent!)
}