4

Facebook の最新の iPhone SDK を使用しています。アプリのさまざまな場所から Facebook に複数のリクエストを送信しています。それらすべての didReceiveResponse メソッドと didLoad メソッドが呼び出されますが、didLoad メソッドから、この応答がどのリクエストに対してあったのかを見つけるのは非常に難しいので、didReceiveResponse が役立つかどうか疑問に思っています。私が応答を得たリクエストでした。

4

4 に答える 4

1

私が行う方法は、Ziminji が行う方法とほとんど同じですが、didLoad メソッドでは次のようになります。

- (void)request:(FBRequest *)request didLoad:(id)result
{
    NSLog(@"Facebook request %@ loaded", [request url]);

    //handling a user info request, for example
    if ([[request url] rangeOfString:@"/me"].location != NSNotFound)
    {
        /* handle user request in here */
    }
}

したがって、基本的には、リクエストを送信した URL を確認するだけでよく、そのリクエストのパラメーターも確認できます。そうすれば、お互いを区別することができます。

于 2012-03-28T20:18:21.580 に答える
0

リクエストオブジェクトを作成するときにリクエストデリゲートのプロパティとして保持している場合は、デリゲートメソッドの呼び出しで一致するかどうかを確認できます。例えば:

- (void)queryForUserInfo {
   self.userInfoRequest = [facebook requestWithGraphPath:@"me" andDelegate:self];
}


#pragma mark <FBRequestDelegate>

- (void)request:(FBRequest *)request didLoad:(id)result {
    if (request == self.userInfoRequest) {
       [self handleUserInfoResult:result];
    }
}
于 2012-02-27T16:52:56.253 に答える
0

ここで行っているのは、応答で一意の属性をチェックし、それをリクエストに関連付けることだけです。これが最善の方法ではないことはわかっていますが、これまでに見つけたものです。誰もがそれを別の方法でやっています

于 2011-03-07T03:09:54.437 に答える
0

次のようなことを試すことができます。

- (void) request: (FBRequest *)request didReceiveResponse: (NSURLResponse *)response {
    NSInteger statusCode = [(NSHTTPURLResponse *)response statusCode];
    if (statusCode == 200) {
        NSString *url = [[response URL] absoluteString];
        if ([url rangeOfString: @"me/feed"].location != NSNotFound) {
            NSLog(@"Request Params: %@", [request params]);

            UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Facebook" message: @"Message successfully posted on Facebook." delegate: nil cancelButtonTitle: @"OK" otherButtonTitles: nil];
            [alert show];
            [alert release];
        }
    }
}
于 2011-03-10T06:34:00.343 に答える