С iOS 8 я успешно получил доступ к той же папке, используя « Функциональность группы приложений». Я расширяю ответ @siejkowski.
Примечание: он будет работать только с той же учетной записью разработчика.
Для этого вам необходимо выполнить следующие шаги.
- Сначала включите «Группы приложений» в своей учетной записи разработчика.
- Создать профиль обеспечения. и используйте это.
Теперь вам нужно создать два приложения. Имя образца
- Demo_Share_One
- Demo_Share_Two
Теперь мы копируем изображения из Demo_Share_One в папку общего доступа, которая создается по умолчанию, когда вы включаете группы приложений и запускаете приложение. и будет получать доступ ко всем этим изображениям из Demo_Share_Two .
Вы должны взять имя группы, которое было установлено для вашей учетной записи разработчика group.filesharingdemo
.
Добавьте метод ниже в обоих приложениях, чтобы получить относительный путь URL-адреса общей папки.
- (NSString *) getSharedLocationPath:(NSString *)appGroupName {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *groupContainerURL = [fileManager containerURLForSecurityApplicationGroupIdentifier:appGroupName];
return [groupContainerURL relativePath];
}
Теперь мы копируем изображения из Bundle из Demo_Share_One
-(IBAction)writeImage:(id)sender
{
for (int i = 0; i<15; i++)
{
NSString *strSourcePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"hd%d",i+1] ofType:@"jpg"];
NSString *strDestinationPath = [[self getSharedLocationPath:@"group.filesharingdemo"] stringByAppendingPathComponent:[NSString stringWithFormat:@"hd%d",i+1]] ;
BOOL filewrite = [[NSFileManager defaultManager]copyItemAtPath:strSourcePath toPath:strDestinationPath error:nil];
if (filewrite)
NSLog(@"File write");
else
NSLog(@"can not write file");
}
}
Теперь в Demo_Share_Two для доступа к этим изображениям
NSString *pathShared = [[self getSharedLocationPath:@"group.filesharingdemo"] stringByAppendingPathComponent:[NSString stringWithFormat:@"hd%d.jpg",number]];
NSLog(@"%@",pathShared);
imgView.image = [UIImage imageWithContentsOfFile:pathShared];
И теперь вы получите все изображения, которые вы пишете, из Demo_Share_One .
Итак, с этого момента, если вы хотите поделиться этой папкой, два вашего третьего приложения. просто добавьте это приложение в свою группу. Поэтому слишком легко получить доступ к одним и тем же элементам в ваших нескольких приложениях.
если вы не включите группы приложений в своем AppID, вы получите [self getSharedLocationPath: @ "group.filesharingdemo"] - null.
Спасибо Apple за функцию обмена элементами из ваших собственных приложений . Удачного кодирования. :)