gpt4 book ai didi

ios - 使用 Azure SDK 在 iOs 上进行后台获取

转载 作者:行者123 更新时间:2023-11-29 02:56:31 24 4
gpt4 key购买 nike

我已经实现了performFetchWithCompletionHandler:

-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{

NSLog(@"1 performFetchWithCompletionHandler");

MSTable *myTable;

myTable = [self.authService.client tableWithName:@"TestTable"];

[myTable readWithCompletion:^(NSArray *items, NSInteger totalCount, NSError *error) {
if (error) {
NSLog(@"Error in readTable %@",error);
} else
{
NSLog(@"Records: %@",items);
}
}];


NSLog(@"2 performFetchWithCompletionHandler");

//Tell the system that you ar done.
completionHandler(UIBackgroundFetchResultNewData);

}

输出是:

2014-05-23 11:11:10.228 iTest[3096:60b] 1 PerformFetchWithCompletionHandler2014-05-23 11:11:10.229 iTest[3096:60b] 2 PerformFetchWithCompletionHandler

Windows Azure 调用未执行?

在 didReceiveRemoteNotification 上,问题是相同的。

有人知道这个问题吗?

最佳答案

ReadWithCompletion 是一个异步调用,这意味着您的代码将继续执行,并且在您实际收到来自移动服务的响应之前,您传递给 readWithCompletion 的 block (您正在检查错误的位置)将不会被执行。这就是为什么您会看到日志 1 语句紧随其后的是日志 2。您应该将对completionHandler(UIBackgroundFetchResultNewData) 的调用移至您传递给 readWithCompletion 的 block 内部,以便在您从手机返回实际响应后调用它服务。

从评论中,我们发现这在前台运行良好,但在应用后台运行时却不行。当应用程序在后台运行并调用它时,只要调用 completionHandler(...) 就会终止执行。因此,即使正在对移动服务进行调用,completionHandler(...) 也会终止它。解决方案是将 completionHandler(...) 移动到移动服务调用的回调中。

关于ios - 使用 Azure SDK 在 iOs 上进行后台获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23825802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com