【发布时间】:2014-04-13 19:12:30
【问题描述】:
我想在应用处于后台时执行图形 API 调用。
我有一个方法可以执行以下操作(我将只包括相关部分):
- (void) facebookFetch
{
NSString* query = @"<my_query">;
NSDictionary *queryParam = @{ @"q": query };
[FBSettings setLoggingBehavior:[NSSet setWithObjects:
FBLoggingBehaviorFBRequests,
nil]];
// Make the API request that uses FQL
[FBRequestConnection startWithGraphPath:@"/fql"
parameters:queryParam
HTTPMethod:@"GET"
completionHandler:^(FBRequestConnection *connection,
id result,
NSError *error) {
if (error) {
NSLog(@"Error: %@", [error localizedDescription]);
} else {
NSLog(@"Result: %@", result);
}
}];
}
我在这里得到的是,如果我在应用程序处于前台时调用此函数,我会得到响应。
现在,问题是我需要在后台调用这个函数,所以我实现了以下函数:
/** Background task **/
-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
NSLog(@"####### background task!");
if (![FBSession activeSession].isOpen) {
NSLog(@"fbsession is NOT open!");
} else {
NSLog(@"fbsession is open!");
[self facebookFetch];
}
completionHandler(UIBackgroundFetchResultNewData);
}
我得到“fbsession 已打开!”消息,所以我正确输入了相关代码,但是我没有收到任何响应。
如您所见,我记录了请求,这是我在这两种情况下所拥有的:
URL: https://graph.facebook.com//fql?sdk=ios&access_token=ACCESS_TOKEN_REMOVED&q=<my_query>&migration_bundle=fbsdk%3A20131212&format=json
Method: GET
UserAgent: FBiOSSDK.3.13.1
MIME: multipart/form-data; boundary=3i2ndDfv2rTHiSisAbouNdArYfORhtTPEefj3q2f
但正如我之前告诉你的,在后台情况下我没有收到回复。
有什么帮助吗?
【问题讨论】:
标签: ios objective-c facebook