4

我已成功将自己的 url 方案添加到我的应用程序中。该应用程序使用方案正确启动。

现在我想处理传入的数据,但没有调用委托。这是一个通用应用程序,我在两个 AppDelegate 中添加了以下功能:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    if (!url) {  return NO; }

    NSString *URLString = [url absoluteString];
    UIAlertView *alert = [[UIAlertView alloc] 
                          initWithTitle:NSLocalizedString(@"test message", nil) 
                          message:URLString
                          delegate:self 
                          cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
    [alert show];     
    [alert release];
    return YES;
}

我正在使用如下模式进行测试:myapp://appalarm.com ...并且希望在 URLString 中是 appalarm.com

它有什么问题?

感谢您的回复!

4

3 回答 3

7

我试图在另一篇文章中澄清。Ashley Clark 的回答只是部分正确。在 OS 4.0 下,handleOpenURL 被调用(至少对于文件 URL),您必须实现它来处理应用程序在后台时的打开 url 调用。因此,在这两种方法中打开文件可能会打开两次(如果 applicationDidFinishLaunchingWithOptions 返回 YES,它应该这样做)。见另一篇文章

于 2010-08-31T20:56:01.467 回答
5

如果您的应用程序委托已实现“applicationDidFinishLaunchingWithOptions:”,则永远不会调用“handleOpenURL:”方法。查看通过其他方法传入的选项,以确定您的应用程序是如何启动的以及您应该实现什么行为。

于 2010-06-02T22:30:33.190 回答
2

试试你的代码到下面的函数

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    if (!url) {  return NO; }

    NSString *URLString = [url absoluteString];
    UIAlertView *alert = [[UIAlertView alloc] 
                          initWithTitle:NSLocalizedString(@"test message", nil) 
                          message:URLString
                          delegate:self 
                          cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
    [alert show];     
    [alert release];
    return YES;
}
于 2014-06-03T10:40:11.727 回答