Z iOS 8 udało mi się uzyskać dostęp do tego samego folderu za pomocą „ Funkcjonalności grup aplikacji ” . Rozszerzam odpowiedź @siejkowski.
Uwaga: będzie działać tylko z tego samego konta programisty.
W tym celu wykonaj poniższe czynności.
- Najpierw włącz „Grupy aplikacji” na koncie programisty.
- Wygeneruj profil aprowizacji. i użyj go.
Teraz musisz stworzyć dwie aplikacje. Nazwa próbki
- Demo_Share_One
- Demo_Share_Two
Teraz kopiujemy obrazy z Demo_Share_One do folderu udostępniania, który jest tworzony domyślnie po włączeniu grup aplikacji i uruchomieniu aplikacji. i będzie mieć dostęp do wszystkich tych obrazów z Demo_Share_Two .
Musisz wziąć nazwę grupy, która została ustawiona na twoim koncie programisty group.filesharingdemo
. Powiedz .
Dodaj metodę poniżej w obu aplikacjach, aby uzyskać względną ścieżkę adresu URL folderu udostępniania.
- (NSString *) getSharedLocationPath:(NSString *)appGroupName {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *groupContainerURL = [fileManager containerURLForSecurityApplicationGroupIdentifier:appGroupName];
return [groupContainerURL relativePath];
}
Teraz kopiujemy obrazy z pakietu z 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");
}
}
Teraz w Demo_Share_Two, aby uzyskać dostęp do tych obrazów
NSString *pathShared = [[self getSharedLocationPath:@"group.filesharingdemo"] stringByAppendingPathComponent:[NSString stringWithFormat:@"hd%d.jpg",number]];
NSLog(@"%@",pathShared);
imgView.image = [UIImage imageWithContentsOfFile:pathShared];
A teraz otrzymasz wszystkie zdjęcia, które piszesz z Demo_Share_One .
Więc od teraz, jeśli chcesz udostępnić ten folder w swojej trzeciej aplikacji. po prostu dodaj tę aplikację do swojej grupy. Dlatego dostęp do tych samych elementów w wielu aplikacjach jest zbyt łatwy.
jeśli nie włączysz grup aplikacji w swoim AppID, otrzymasz [self getSharedLocationPath: @ "group.filesharingdemo"] jest puste.
Podziękowania dla Apple za udostępnianie elementów z własnych aplikacji . Miłego kodowania. :)