Apple Watch的请求需要花费大量时间

时间:2015-07-24 19:05:16

标签: ios watchkit

在我的Apple Watch应用程序中,我正在向位置服务和Web服务发出请求。在iPhone上执行这两项任务大约需要2秒钟。但是,当我从Apple手表发出相同的请求时,我得到回复需要10秒以上...除非iPhone应用程序已经运行,否则请求大约需要2秒。

我认为application:handleWatchKitExtensionRequest:reply:中的后台任务有问题,但我无法弄清楚是什么。所有提示都很受欢迎。

- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply
{
    __block UIBackgroundTaskIdentifier identifier = UIBackgroundTaskInvalid;

    dispatch_block_t endBlock = ^ {
        if (identifier != UIBackgroundTaskInvalid) {
            [application endBackgroundTask:identifier];
        }
        identifier = UIBackgroundTaskInvalid;
    };

    identifier = [application beginBackgroundTaskWithExpirationHandler:endBlock];

    reply = ^(NSDictionary *replyInfo) {
        reply(replyInfo);
        endBlock();
    };

    // Call location services with completion block ^{
        // Use the location and make request to web service
        // with completion ^{

            // reply(@{@"info" : @"here be dragons"});

        // };
    //};
}

1 个答案:

答案 0 :(得分:0)

为了节省电量,Apple手表限制了定位服务(主要耗电量)的更新频率。当您打开iPhone应用程序时,您可以优先处理您正在运行的任务,Apple Watch会更频繁地更新其位置。

您可以尝试通过发送"唤醒"来强制应用程序更快地更新ping:向应用程序发送空/虚拟调用并使用虚拟回复进行回复。这应该唤醒连接一段时间,你的第二个电话可能会被更快地处理,虽然我不确定这是否"醒来" ping将优先考虑位置服务。

最后一件事,恕我直言10秒并不真是一个荒唐的"时间量。