我在我的应用程序中使用了Apple的视图控制器(例如MFMessageComposeViewController
和ABPeoplePickerNavigationController
)。因此,当我收到通知(本地或远程通知)时,我将如何以最优雅的方式处理它,因为我无法与Apple的视图控制器进行交互(发送消息)。
我的假设是,如果用户正在积极使用该应用程序,即MFMessageComposeViewController
他不希望被他正在做的事情打扰/打断。但是,如果是我,我会有点困惑,如果我做了什么,我会听到 boing 声音(来自通知),然后没有更多的事情发生。
处理此问题的合理方法是否允许用户在他所在的Apple视图控制器中完成任务,然后为用户显示通知?
或关闭Apple视图控制器并处理通知,然后将用户放回Apple视图控制器中?
答案 0 :(得分:0)
我不太确定我理解你是否完全正确,但对我而言,这听起来像你想做这样的事情:
作为对此请求的回答,我想说明以下内容:
如果扩展此类,您应该能够向MFMessageComposerViewController发送消息(即创建一个名为MyMessageComposerController的类,让它扩展标准控制器,并在那里做任何你需要的事情)
但是,您无法真正对推送通知做任何事情,它来自另一个应用程序并且此功能内置于iOS中,您无法在用户完成输入后推送到达,它将总是到达并且用户将总是决定他/她是否应该继续打字或查看通知。您唯一能做的就是确保您的应用保存用户输入的所有内容,以便他/她在返回您的应用时可以继续输入。
答案 1 :(得分:0)
假设您不只是想在消息编写器上显示AlertView或类似的模式,我会执行以下操作:
MFMessageComposeViewControllerDelegate
。application:didReceive{Local|Remote}Notification:
消息)messageComposeViewController:didFinishWithResult:
消息。在用户完成合成或中断它们之前,是否延迟响应通知是一种棘手的情况。如果这是一个相对不重要的通知或频繁的通知,我倾向于队列/延迟方法。但对于“重要”通知,我在打断用户方面没有任何问题。当然,这只是将问题转移到决定重要性的问题上。这在很大程度上取决于应用程序。