iOS - 当我没有“控制”GUI时如何处理通知

时间:2012-07-11 08:22:42

标签: objective-c ios push-notification uilocalnotification mfmailcomposeviewcontroller

我在我的应用程序中使用了Apple的视图控制器(例如MFMessageComposeViewControllerABPeoplePickerNavigationController)。因此,当我收到通知(本地或远程通知)时,我将如何以最优雅的方式处理它,因为我无法与Apple的视图控制器进行交互(发送消息)。

我的假设是,如果用户正在积极使用该应用程序,即MFMessageComposeViewController他不希望被他正在做的事情打扰/打断。但是,如果是我,我会有点困惑,如果我做了什么,我会听到 boing 声音(来自通知),然后没有更多的事情发生。

处理此问题的合理方法是否允许用户在他所在的Apple视图控制器中完成任务,然后为用户显示通知?

关闭Apple视图控制器并处理通知,然后将用户放回Apple视图控制器中?

2 个答案:

答案 0 :(得分:0)

我不太确定我理解你是否完全正确,但对我而言,这听起来像你想做这样的事情:

  • 如果用户正在您的应用中撰写邮件并且有传入通知,让我们说一下来自Facebook应用的推送通知,您希望通过让您的MFMessageComposerViewController执行某些操作来在您的应用中以某种方式处理此事件。

作为对此请求的回答,我想说明以下内容:

  1. 如果扩展此类,您应该能够向MFMessageComposerViewController发送消息(即创建一个名为MyMessageComposerController的类,让它扩展标准控制器,并在那里做任何你需要的事情)

  2. 但是,您无法真正对推送通知做任何事情,它来自另一个应用程序并且此功能内置于iOS中,您无法在用户完成输入后推送到达,它将总是到达并且用户将总是决定他/她是否应该继续打字或查看通知。您唯一能做的就是确保您的应用保存用户输入的所有内容,以便他/她在返回您的应用时可以继续输入。

答案 1 :(得分:0)

假设您不只是想在消息编写器上显示AlertView或类似的模式,我会执行以下操作:

  1. 为作曲家指定MFMessageComposeViewControllerDelegate
  2. 像往常一样展示作曲家。
  3. 排队/记住作曲家在播放时收到的通知(通过正常的application:didReceive{Local|Remote}Notification:消息)
  4. 当作曲家关闭时,代表会收到messageComposeViewController:didFinishWithResult:消息。
  5. 使用存储/排队的通知做任何事......
  6. 在用户完成合成或中断它们之前,是否延迟响应通知是一种棘手的情况。如果这是一个相对不重要的通知或频繁的通知,我倾向于队列/延迟方法。但对于“重要”通知,我在打断用户方面没有任何问题。当然,这只是将问题转移到决定重要性的问题上。这在很大程度上取决于应用程序。