iOS 4和自定义URL方案中的多任务感知应用程序

ace*_*ace 4 iphone cocoa-touch multitasking ios4

我正在尝试安全地实施OAuth,如下所示:http://fireeagle.yahoo.net/developer/documentation/oauth_best_practice#custom-url-osx.我似乎遇到了绊脚石,因为我无法弄清楚如何处理在后台启动我的应用程序的URL.

我已经注册了我的申请来处理oauthtest.我已经确认oauthtest://和oauthtest:// callbacktest都会启动我的应用程序并在我的应用程序未在后台运行时按预期运行.

我正在实施

application:(UIApplication *) didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Run Code Online (Sandbox Code Playgroud)

当我的应用程序冷启动时成功调用.我可以很容易地将url传递给我的应用程序.

但是,如果我的应用程序已在后台运行,则两者都没有

application:(UIApplication *) didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
Run Code Online (Sandbox Code Playgroud)

也不

application:(UIApplication *) handleOpenURL:(NSURL *)url 
Run Code Online (Sandbox Code Playgroud)

被调用,我无法将传递给我的应用程序的参数作为URL的一部分.

有谁知道如何通过自定义URL方案获取传递给后台应用程序的参数?

我知道我可以通过禁用多任务来解决这个问题,但我不愿意这样做是因为显而易见的原因.提前致谢.

小智 7

这里有一些示例代码似乎对我有用,在iOS4中测试过:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
     NSLog(@"handleOpenURL - %@", [url absoluteURL]);
     return YES;    
}

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    NSLog(@"applicationDidFinishLaunching");
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSLog(@"didFinishLaunchingWithOptions - %@", [launchOptions objectForKey:@"UIApplicationLaunchOptionsURLKey"]);
    return NO;
}
Run Code Online (Sandbox Code Playgroud)

如果我是第一次启动应用程序,请didFinishLaunching:处理URL.如果我然后将应用程序放在后台,请返回Safari,然后点击将应用程序带回前台的链接,然后handleOpenURL:处理URL.祝好运!