为什么当 iPhone 已经有一段时间无法访问时,我的手表使用 "transferUserInfo" 发送的消息没有传送到 iPhone?

Why are messages sent with "transferUserInfo" from my Watch are not delivered to the iPhone when the iPhone has been out of reach for some time?

问题:

我尝试使用 "transferUserInfo" 将信息从我的 Watch 应用程序发送到主 iPhone 应用程序。这在 iPhone 可用时有效。

如果 iPhone 不可用,根据我的理解,消息应该在 iPhone 可用时按顺序排队和传递。但是当 iPhone 有一段时间不可用时它不起作用(然后 "didReceiveUserInfo" 不被调用并且消息丢失)。

我怎样做才能确保在 iPhone 不可用时我发送到它的所有消息最终都已送达并且不会丢失?

这是一个 iOS/watchOS 错误,是我的实现中可能存在的问题,还是预期的行为?其他人遇到过同样的问题吗?

设备和OS

你猜的是对的,transferUserInfo:没连接的时候应该要入队

但是在传输的时候也会出现断线或者错误的情况。 在这种情况下,手表OS似乎不​​能重新传输。

WCSessionDelegate中,有一个回调-session:didFinishUserInfoTransfer:error:。无论是成功还是错误,都会调用此回调。

有了这个,你可以得到错误条件,你可以使用 transferUserInfo:

重新发送