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)
还有什么我可能会忽略的吗?
非常感谢您对此提供的任何帮助/见解。
Cak*_*lly 11
好的。我找到了一种消除错误的方法,并使手表与 iPhone 的手表连接正常工作。
最初我希望手表应用程序是独立的,所以在 Xcode 的手表扩展目标中,选中了“支持无需安装 iOS 应用程序即可运行”复选框。但是一旦我取消选中此框,WCSession.isCompanionAppInstalled 就会返回 true 并且错误消失。从手表同步到 iPhone 开始工作。
所以希望这不是预期的行为,很快就会被 Apple 修复。(我提交了一个错误报告。)但现在,我将不选中独立的 watchOS 应用程序,因为我确实需要 WatchConnectivity,以防用户安装 iPhone 应用程序。
感谢您阅读并祝您编程愉快。
| 归档时间: |
|
| 查看次数: |
1338 次 |
| 最近记录: |