gpt4 book ai didi

ios - WCSession didReceiveUserInfo 被调用但 iPhone 应用程序停止后台事件

转载 作者:行者123 更新时间:2023-11-29 10:25:18 25 4
gpt4 key购买 nike

我的 watchOS 2 应用程序出现问题。我正在使用 [[WCSession defaultSession] transferUserInfo:request]将数据字典传输到我的 iPhone 应用程序。

AppDelegate.m在我实现的 iPhone 应用程序中 -(void)session:(WCSession *)session didReceiveUserInfo:(NSDictionary<NSString *,id> *)userInfo

当我从我的 watch 发送传输请求时,会调用此方法(由我创建的 NSLog 确认),但并非所有代码都被执行。更具体地说,它调用以下方法发布到 Facebook,该方法也会被调用,但不会完全执行。

- (void)postToFacebook:(NSString*)postMessage {

NSLog(@"begin");

if ([[FBSDKAccessToken currentAccessToken] hasGranted:@"publish_actions"]) {

[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me/feed" parameters:@{@"message" : postMessage, @"privacy": @"{'value': 'SELF'}"} HTTPMethod:@"POST"] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {

NSLog(@"done");

}];

}

}
}

显示 NSLog“开始”,但未显示 NSLog“完成”。

我已经测试过从我的 iPhone 运行该方法,一切正常。但是当我尝试使用 transferUserInfo 从 watch 中调用它时, 它没有正确执行。

现在我的问题是,如何确保 iPhone 应用程序中的后台任务在该方法完全完成之前不会被终止。

最佳答案

有点远,但尝试将代码打包到主队列中:

- (void)postToFacebook:(NSString*)postMessage {
dispatch_sync(dispatch_get_main_queue(), ^{
if ([[FBSDKAccessToken currentAccess...etc...
});
}

关于ios - WCSession didReceiveUserInfo 被调用但 iPhone 应用程序停止后台事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32681436/

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