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 に答える