4

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

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

我正在实施

application:(UIApplication *) didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

当我的应用程序冷启动时成功调用。我可以轻松地将 url 传递给我的应用程序。

但是,如果我的应用程序已经在后台运行,则

application:(UIApplication *) didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

也不

application:(UIApplication *) handleOpenURL:(NSURL *)url 

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

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

我知道我可以通过禁用多任务处理来解决这个问题,但出于明显的原因,我宁愿不这样做。提前致谢。

4

1 回答 1

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

如果我第一次启动应用程序,则didFinishLaunching:处理 URL。如果我然后将应用程序置于后台,返回 Safari,然后点击一个链接,将应用程序带回前台,然后handleOpenURL:处理 URL。祝你好运!

于 2010-07-07T02:49:07.060 回答