尝试从独立的 Apple Watch 应用发出网络请求

fea*_*ess 7 ios watchos

当应用程序是独立应用程序时,Apple Watch 是否无法进行网络通话,即使手表已连接到 iPhone?我正在使用新的独立应用程序目标,它没有附带可以发出 WatchConnectivity 请求的配对 iOS 应用程序。

我十有八九会收到“错误文件描述符”,这让我觉得手表应用程序基本上需要iPhone 来保证一定程度的连接(我的手表没有蜂窝网络,我无法连接到公共 wifi)热点)。

我这样认为是错误的吗?

重现此内容的示例代码片段:


import Combine
import SwiftUI

var cancellables = Set<AnyCancellable>()

@main
struct NetworkTest_Watch_AppApp: App {

  var body: some Scene {
    WindowGroup {
      Text("Test")
        .task {
          let url = URL(string: "https://google.com")!
          let dataTaskPublisher = URLSession.shared.dataTaskPublisher(for: url)

          dataTaskPublisher
            .retry(3)
            .sink(receiveCompletion: { completion in
              print(completion)
            }, receiveValue: { response in
              print(response)
            })
            .store(in: &cancellables)
        }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

日志失败示例:

2023-01-05 22:48:54.472214-0800 NetworkTest Watch App[809:862165] [scenes] unable to send desiredFidelity:Never response to desiredFidelityAction:<BLSDesiredFidelityAction: 0x16ed9090; info: 0x0; responder: <_BSActionResponder: 0x16ed93e0; active: YES; waiting: NO> clientInvalidated = NO;
clientEncoded = NO;
clientResponded = NO;
reply = <BSMachPortSendOnceRight: 0x16ed9a90; usable: NO; (809:0:send-once xpcCode) from (779:0:send-once take)>;
annulled = YES;>
2023-01-05 22:50:14.457958-0800 NetworkTest Watch App[809:862418] PDTask <42094D6F-56E0-45A9-9F47-53DB66453C9D>.<1> finished with error [9] Error Domain=NSPOSIXErrorDomain Code=9 "Bad file descriptor" UserInfo={_kCFStreamErrorCodeKey=9, NSErrorPeerAddressKey={length = 28, bytes = 0x1c1ef516 00000000 fd746572 6d6e7573 ... cbc268fa 00000000 }, _kCFStreamErrorDomainKey=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDataPDTask <42094D6F-56E0-45A9-9F47-53DB66453C9D>.<1>",
    "LocalDataTask <42094D6F-56E0-45A9-9F47-53DB66453C9D>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataPDTask <42094D6F-56E0-45A9-9F47-53DB66453C9D>.<1>}
2023-01-05 22:50:14.459136-0800 NetworkTest Watch App[809:862418] Task <42094D6F-56E0-45A9-9F47-53DB66453C9D>.<1> finished with error [9] Error Domain=NSPOSIXErrorDomain Code=9 "Bad file descriptor" UserInfo={_kCFStreamErrorCodeKey=9, NSErrorPeerAddressKey={length = 28, bytes = 0x1c1ef516 00000000 fd746572 6d6e7573 ... cbc268fa 00000000 }, _kCFStreamErrorDomainKey=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDataTask <42094D6F-56E0-45A9-9F47-53DB66453C9D>.<1>",
    "LocalDataPDTask <42094D6F-56E0-45A9-9F47-53DB66453C9D>.<1>",
    "LocalDataTask <42094D6F-56E0-45A9-9F47-53DB66453C9D>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <42094D6F-56E0-45A9-9F47-53DB66453C9D>.<1>}
Run Code Online (Sandbox Code Playgroud)

Qaz*_*mar 0

Target->WatchProject->General检查中Supports Running Without iOS App Installation

在此输入图像描述