应用程序:openURL未触发

时间:2012-08-17 15:01:40

标签: objective-c ios uiapplicationdelegate openurl

我在实现 - (BOOL)应用程序时遇到问题:openURL并使用UIDocumentInteractionController将PDF文件从应用程序导出到另一个应用程序。

(1)目标应用程序只执行导入的PDF文件的URL(在标签中)。

这是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;
    }
}

方法“handleOpenURL”只需获取url并在视图控制器中放入标签并显示警告:

- (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)在源应用程序中,我只是使用UIDocumentInteractionController列出“Open In”选项(我的目标应用程序在列表中显示得很好)

以下是代码:

_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)问题: - 当我选择目标应用程序(从“打开方式”列表)时,模拟器从源应用程序切换到目标应用程序没问题,但看起来像应用程序:openURL方法未被调用,因为标签保持为初始状态(没有导入文件。)和没有警报视图显示。

请告诉我这里有什么问题?

提前致谢。

2 个答案:

答案 0 :(得分:0)

我使用这两种方法进行facebook集成来处理openURL ......它的工作正常。

- (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];
}

答案 1 :(得分:-1)

只是想将我的问题标记为已回答,因为我已经找到了故障。

更新:启动UIDocumentInteractionController对象时不包含完整文件路径是我的错。