Question

I have a problem implementing - (BOOL)application:openURL and using UIDocumentInteractionController for exporting PDF file from an application to another.

(1) Target application does nothing but just display URL of the imported PDF file (in a label).

here is the code in AppDelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.viewController = [[ViewController alloc] initWithText:@"No file is imported."];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];

    return YES;
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:   (NSString *)sourceApplication annotation:(id)annotation
{
    if (url != nil)
    {
        [self.viewController handleOpenURL:url];
        return YES;
    }
    else
    {
        [self.viewController handleOpenURL:[NSURL fileURLWithPath:@"AppDelegate.h"]];
        return NO;
    }
}

Method "handleOpenURL" just take the url and put in a label in the view controller and show an alert:

- (void)handleOpenURL:(NSURL *)fileURL
{
    _text = [fileURL absoluteString];
    self.lblText.text = _text;

    UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:_text delegate:self cancelButtonTitle:nil otherButtonTitles:nil, nil];
    [alert show];
}

(2) In source application, I simply use UIDocumentInteractionController to list "Open In" options (my target application appears well in the list)

Here is the code:

_docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:attachmentFile]];
_docInteractionController.delegate = self;
_docInteractionController.UTI = [_extensionUTIs objectForKey:[[attachmentFile pathExtension] lowercaseString]];
BOOL opened = [_docInteractionController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:NO];

(3) Problem: - When I select the target application (from "Open In" list), simulator switches from source application to target application okay, but looks like application:openURL method is not invoked because the label keeps as initial (No file is imported.) and no alert view shows up.

Please advise me what could be wrong here ?

Thanks in advance.

Was it helpful?

Solution 2

Just want to mark my question as answered because I have already found the glitch.

Update: It was my fault when not including full file path when initiating UIDocumentInteractionController object.

OTHER TIPS

I used these two methods for facebook integration to handle openURL...its working fine.

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return [ [[HIFacebookConnect sharedGameObject] facebook] handleOpenURL:url];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [[[HIFacebookConnect sharedGameObject] facebook] handleOpenURL:url];
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top