WatchOS 应用未检测到配套的 iOS 应用

Cak*_*lly 5 ios swift watchkit watchos watchconnectivity

我正在制作一个独立的 Apple Watch 应用程序(但有一个配套的 iPhone 应用程序,它不是手表应用程序运行所必需的。)

如果安装了 iPhone 配套应用程序,该应用程序使用WatchConnectivity在设备之间同步数据。我可以在 iOS 应用程序上调用session.updateApplicationContext()并在 Watch 应用程序上接收session(didReceiveApplicationContext)。但走另一条路是不可能的。我总是收到 7018 的 NSError 代码,这意味着未安装 iOS 配套应用程序。

我已经确保 watchOS 和 iOS 应用程序都安装在模拟器中(并在我的实际设备 iPhone 11 和 Watch series 5 上进行了测试。)但是从 watchOS -> iOS 得到相同的失败结果。

我注意到有一个新的WCSession实例变量可用于 watchOS 6.0+ isCompanionAppInstalled。当我在手表应用程序上激活 WCSession 后读取此变量时,它总是返回 false。

还有什么我需要注意的吗?我想也许我在所有不同的 info.plist 中做错了什么。但我已经检查了很多次。


我的 info.plist 文件:

在我的手表应用中:

 WKWatchKitApp is YES
 WKCompanionAppBundleIdentifier is com.abc.myapp
Run Code Online (Sandbox Code Playgroud)

在我的手表扩展中:

  App can run independently of companion iPhone app is YES
  NSExtension
    WKAppBundleIdentifier is com.abc.myapp.watchkitapp
    NSExtensionPointIdentifier is com.apple.watchkit
Run Code Online (Sandbox Code Playgroud)
  • iOS 应用程序包标识符是 com.abc.myapp
  • watchOS 应用程序是 com.abc.myapp.watchkitapp
  • watchOS 应用扩展名为 com.abc.myapp.watchkitapp.watchkitextension

还有什么我可能会忽略的吗?

非常感谢您对此提供的任何帮助/见解。

Cak*_*lly 11

好的。我找到了一种消除错误的方法,并使手表与 iPhone 的手表连接正常工作。

最初我希望手表应用程序是独立的,所以在 Xcode 的手表扩展目标中,选中了“支持无需安装 iOS 应用程序即可运行”复选框。但是一旦我取消选中此框,WCSession.isCompanionAppInstalled 就会返回 true 并且错误消失。从手表同步到 iPhone 开始工作。

所以希望这不是预期的行为,很快就会被 Apple 修复。(我提交了一个错误报告。)但现在,我将不选中独立的 watchOS 应用程序,因为我确实需要 WatchConnectivity,以防用户安装 iPhone 应用程序。

感谢您阅读并祝您编程愉快。