3

アプリで Flickr を使用しています。Flickr ボタンをクリックすると、Safari にリダイレクトされ、Flickr と認証でログインします。

次に、承認が成功すると、アプリにリダイレクトされます。しかし、リダイレクトした後、ViewWillAppear を呼び出したいと思います。私も<UIApplicationDelegate>自分の見解を示しました。ただし、以下のメソッドは呼び出していません。

 -(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:YES];

    NSLog(@"@@@@@@@@@@@@@@@@@@@@@Flickr Authorized is completed");
}
- (void)UIApplicationWillEnterForeground:(UIApplication *)application
{
    NSLog(@"@@@@@@@@@@@@@@@@@@@@@Flickr Authorized is completed at foreground");
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
    /*
     Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
     */
    NSLog(@"@@@@@@@@@@@@@@@@@@@@@Flickr Authorized is completed at become active");
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    NSLog(@"@@@@@@@@@@@@@@@@@@@@@@Flickr Authorized is completed at openURL");
}
-(void)viewWillAppear:(BOOL)animated
{
    NSLog(@"@@@@@@@@@@@@@@@@@@@@@Flickr Authorized is completed at viewWillAppear");

    [super viewWillAppear:YES];
}

しかし、Below メソッドは、AppDelegate で safari からリダイレクトした後に呼び出しています。SnapAndRun flickr サンプルのコードを使用しました。

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    NSLog(@"@@@@@@@@@@@@@@@@@@@@@@Call Back Here@@@@@@@@@@@");

    if ([self flickrRequest].sessionInfo)
    {
        // already running some other request
        NSLog(@"Already running some other request");
    }
    else {
        NSString *token = nil;
        NSString *verifier = nil;
        BOOL result = OFExtractOAuthCallback(url, [NSURL URLWithString:SRCallbackURLBaseString], &token, &verifier);

        if (!result) {
            NSLog(@"Cannot obtain token/secret from URL: %@", [url absoluteString]);
            return NO;
        }

        [self flickrRequest].sessionInfo = kGetAccessTokenStep;
        [flickrRequest fetchOAuthAccessTokenWithRequestToken:token verifier:verifier];
        [activityIndicator startAnimating];
        //[viewController.view addSubview:progressView];
    }

    return YES;
}

ここでビュー コントローラーのメソッドを呼び出せることはわかっています。しかし、ビュー自体でリダイレクトした後にデフォルトのデリゲートメソッドを呼び出す代替手段はありますか?

任意の提案をいただければ幸いです。前もって感謝します。

4

1 に答える 1

2

通知センターを使用できます。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(someMethod:) name:@"UIApplicationDidBecomeActiveNotification" object:nil];

于 2014-03-20T10:36:17.733 に答える