- IRShareManager is a easy framework for deal with share files between the share extension and main app.
- Easy to share files into main app by Share Extension.
- Git clone this project.
- Copy this project into your own project.
- Add the .xcodeproj into you project and link it as embed framework.
- You can remove the
demo
andScreenShots
folder.
- Add
pod 'IRShareManager'
in thePodfile
target 'Demo' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for Demo
pod 'IRShareManager'
end
target 'ShareExtension' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for ShareExtension
pod 'IRShareManager'
end
pod install
-
Create Share Extension, go to
Signing & Capabilities
>+ Capability
>App Groups
> Add a new group/group id -
Put codes into
ShareViewController.m
...
#import <IRShareManager/IRShare.h>
@implementation ShareViewController
- (BOOL)isContentValid {
...
[IRShare sharedInstance].groupID = YOUR_GROUP_ID;
return YES;
}
- (void)didSelectPost {
[[IRShare sharedInstance] showSaveAlertIn:self];
[[IRShare sharedInstance] didSelectPostWith:self.extensionContext];
}
@end
-
, go to
Signing & Capabilities
>+ Capability
>App Groups
> Choose a group/group id that the same of yo -
Load reseources which was shared by share extension in the main app
...
#import <IRShareManager/IRShare.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
...
[self saveImageIfExistInActionExtention];
return YES;
}
- (void)applicationWillEnterForeground:(UIApplication *)application{
NSLog(@"applicationWillEnterForeground");
...
[self saveImageIfExistInActionExtention];
}
- (void)saveImageIfExistInActionExtention {
[IRShare sharedInstance].groupID = YOUR_GROUP_ID;
NSURL *directoryURL = [IRShare sharedInstance].directoryURL;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *keys = [NSArray arrayWithObject:NSURLIsDirectoryKey];
NSDirectoryEnumerator *enumerator = [fileManager
enumeratorAtURL:directoryURL
includingPropertiesForKeys:keys
options:0
errorHandler:^(NSURL *url, NSError *error) {
// Handle the error.
// Return YES if the enumeration should continue after the error.
return YES;
}];
NSMutableArray *urlsToDelete = [[NSMutableArray alloc] init];
for (NSURL *url in enumerator) {
NSLog(@"url:%@", url);
NSError *error;
NSNumber *isDirectory = nil;
if (! [url getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:&error]) {
// handle error
}
else if (! [isDirectory boolValue]) {
[self saveImportFileIntoDB:url];
}
[urlsToDelete addObject:url];
}
for(NSURL *url in urlsToDelete){
[[NSFileManager defaultManager] removeItemAtURL:url error:nil];
}
}
- (void)saveImportFileIntoDB:(NSURL *)url {
NSString *fileName = [[url absoluteString] lastPathComponent];
fileName = [fileName stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *resourceDocPath = [[NSString alloc] initWithString:[[NSTemporaryDirectory() stringByDeletingLastPathComponent]stringByAppendingPathComponent:@"Documents"]];
fileName = [self getNewFileNameIfExistsByFileName:fileName];
NSString *filePath = [resourceDocPath stringByAppendingPathComponent:fileName];
[[NSFileManager defaultManager] copyItemAtPath:[url path] toPath:filePath error:nil];
}
@end
Share Extension | Files List |
---|---|
![]() |
![]() |