在iOS 15.4中,WCSession的"isComplicationEnabled"始终返回false。

4

自从我将测试设备(iPhone 12 mini)更新到最新的iOS 15.4版本后,手表的伴侣应用程序(watchOS 8.5)的复杂性没有收到iOS应用程序发送的任何更新。

要重现此问题,您需要:

  • 一个带有watchOS伴侣应用程序且至少有一个活动并发症的iOS应用程序。(我可以为您提供我的TestFlight应用程序访问权限。)
  • iOS应用程序需要有一个活动的WCSession对象,以通过“transferCurrentComplicationUserInfo:”发送更新并发症的消息。
  • 如果您检查isComplicationEnabeld属性,则始终会返回false,因此不会更新并发症。

此问题仅在更新到iOS 15.4之后才会发生。之前的版本工作正常。

以下是我的代码,用于传输并更新并发症内容...

if ([self.connectivityHandler.validSession isComplicationEnabled] &&
    self.connectivityHandler.validSession.remainingComplicationUserInfoTransfers > 0) {
    
    [self.connectivityHandler transferCurrentComplicationUserInfo:[self applicationContext]];
}

connectivityHandler 是一个单例对象,负责数据传输并持有 WCSession 对象 (validSession)。 它实现了 transferCurrentComplicationUserInfo 方法,用于传输并更新 complication 的内容。

自从 iOS 15.4 版本以后,上面的 if 子句总是 false,这是由于 isComplicationEnabled 检查。在此之前,它能够正常工作。

我已经尝试过:

  • 重启设备:iPhone 和手表
  • 重置手表

有人遇到相同的问题并可能有解决方案吗?

感谢您的支持!


2
我进行了大量的watchOS开发,并且在生产中使用多个具有watchOS应用程序的iOS应用程序中看到了相同的行为。据我所知,这是iOS 15.4中的一个错误,我希望他们会在下一个更新中修复它。 - gohnjanotis
同样地,我在多个应用程序中看到了iOS 15.4的同样问题。 - NeilMortonNet
我在所有的测试设备上也看到了这个问题(并且从许多使用我的应用程序的用户的报告中也得知)。 - bmueller
我在最新的watchOS 8.6和iOS 15.5 beta版本中仍然看到这个问题。你们 @gohnjanotis @bmueller 还能看到吗? - NeilMortonNet
是的,我在生产环境中仍然看到这个问题。但是考虑到最新的测试版中仍未修复此问题,这让人担忧。 - NeilMortonNet
显示剩余3条评论
1个回答

2

iOS 15.5和watchOS 8.6已经修复了苹果的首次测试中发现的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接