- Added iOS support

- Upped the version to 1.0.4
This commit is contained in:
pwlin 2014-02-11 15:42:00 +01:00
parent bfb6437405
commit 7235ec4a0d
3 changed files with 109 additions and 31 deletions

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?><plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android"
id="io.github.pwlin.cordova.plugins.fileopener2"
version="1.0.3">
<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android" id="io.github.pwlin.cordova.plugins.fileopener2"
version="1.0.4">
<name>File Opener2</name>
<description>A File Opener Plugin for Cordova.</description>
@ -15,7 +15,7 @@
<clobbers target="cordova.plugins.fileOpener2" />
</js-module>
<!-- android -->
<!-- Android -->
<platform name="android">
<source-file src="src/android/io/github/pwlin/cordova/plugins/fileopener2/FileOpener.java" target-dir="src/io/github/pwlin/cordova/plugins/fileopener2" />
<config-file target="res/xml/config.xml" parent="/*">
@ -25,7 +25,15 @@
</config-file>
</platform>
<!-- iOS -->
<platform name="ios">
<config-file target="config.xml" parent="/*">
<feature name="FileOpener2">
<param name="ios-package" value="FileOpener2" />
</feature>
</config-file>
<source-file src="src/ios/FileOpener2.m" />
<header-file src="src/ios/FileOpener2.h" />
</platform>
</plugin>

11
src/ios/FileOpener2.h Normal file
View File

@ -0,0 +1,11 @@
#import <Cordova/CDV.h>
@interface FileOpener2 : CDVPlugin <UIDocumentInteractionControllerDelegate> {
NSString *localFile;
}
@property(nonatomic, strong) UIDocumentInteractionController *controller;
- (void) open: (CDVInvokedUrlCommand*)command;
@end

59
src/ios/FileOpener2.m Normal file
View File

@ -0,0 +1,59 @@
#import "FileOpener2.h"
#import <Cordova/CDV.h>
#import <QuartzCore/QuartzCore.h>
#import <MobileCoreServices/MobileCoreServices.h>
@implementation FileOpener2
@synthesize controller = docController;
- (void) open: (CDVInvokedUrlCommand*)command {
NSString *path = [command.arguments objectAtIndex:0];
//NSString *uti = [command.arguments objectAtIndex:1];
CDVViewController* cont = (CDVViewController*)[ super viewController ];
NSArray *dotParts = [path componentsSeparatedByString:@"."];
NSString *fileExt = [dotParts lastObject];
NSString *uti = (__bridge NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)fileExt, NULL);
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//NSLog(@"path %@, uti:%@", path, uti);
NSURL *fileURL = nil;
fileURL = [NSURL URLWithString:path];
localFile = fileURL.path;
dispatch_async(dispatch_get_main_queue(), ^{
docController = [UIDocumentInteractionController interactionControllerWithURL:fileURL];
docController.delegate = self;
docController.UTI = uti;
CGRect rect = CGRectMake(0, 0, 1000.0f, 150.0f);
CDVPluginResult* pluginResult = nil;
BOOL wasOpened = [docController presentOptionsMenuFromRect:rect inView:cont.view animated:NO];
//presentOptionsMenuFromRect
//presentOpenInMenuFromRect
if(wasOpened) {
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString: @""];
//NSLog(@"Success");
} else {
NSDictionary *jsonObj = [ [NSDictionary alloc]
initWithObjectsAndKeys :
@"9", @"status",
@"Could not handle UTI", @"message",
nil
];
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsDictionary:jsonObj];
//NSLog(@"Could not handle UTI");
}
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
});
});
}
@end