gpt4 book ai didi

ios - 如何从扩展代表在 Apple Watch 上呈现模式

转载 作者:行者123 更新时间:2023-12-04 21:49:50 25 4
gpt4 key购买 nike

我正在更新 Watch OS 2.0 客户端应用程序的 watch 套件支持。

iOS 应用程序向本地通知添加自定义操作,当本地通知触发时,如果手机被锁定, watch 会显示自定义按钮。

当用户点击按钮时,分机代表使用 WCSession 向电话发送消息。 sendMessage:replyHandler:方法。

如果用户点击操作按钮时手机仍处于锁定状态,我想向用户显示一条消息,说“请解锁你的手机”(关于“东西”的详细信息并不重要。)

然而,在 WatchKit 2.0 中,扩展委托(delegate)是一个独立于接口(interface) Controller 的生物,并在 watch 上运行。

我能找到的所有显示界面 Controller 的方法,如 presentAlertControllerWithTitle:message:preferredStyle:actions:是 WKInterfaceController 的方法。

如何从扩展委托(delegate)中显示新的界面 Controller ?我试图从文档(和谷歌搜索)中弄清楚这一点,但到目前为止,尽管进行了相当广泛的搜索,但我已经淘汰了。

最佳答案

在尝试显示 UI 以响应扩展委托(delegate)消息时,我遇到了类似的问题。

您可以通过[[WKExtension sharedExtension] rootInterfaceController]获取根 Controller 但是没有任何方法可以从根 Controller 遍历 Controller 层次结构,因此如果您有其他 Controller 被推送/呈现,它并不是真的有用。

我最终创建了一个 WKInterfaceController订阅 NSNotificationCenter 的子类在 didAppear并取消订阅 willDisappear从理论上讲,这应该意味着一次只有一个 Controller (可见的)会监听,尽管我没有真正彻底地测试它以保证没有任何奇怪的极端情况。

扩展委托(delegate)在接收到本地或远程通知时发送通知,并且接口(interface) Controller 中的通知回调只调用 presentAlertControllerWithTitle:...我所有的接口(interface) Controller 都来自那个子类。

我试图在 watch 应用程序打开时收到远程通知时显示警报,而不是响应通知操作中的应用程序打开。我不确定接口(interface) Controller 的顺序是什么didAppear和扩展代表handleActionWithIdentifier方法将被调用,因此您在处理操作时可能没有任何接口(interface) Controller 监听通知。如果 handleAction...首先被调用,然后您可能需要在 didAppear 上的接口(interface) Controller 中添加一些逻辑检查是否有一些待处理的通知要显示并让它显示出来。

关于ios - 如何从扩展代表在 Apple Watch 上呈现模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37142024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com