0

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

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

那么处理这个问题的合理方法是否可以让用户在他所在的任何 Apple 视图控制器中完成他的任务,然后为用户显示通知?

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

4

2 回答 2

0

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

  • 如果用户正在您的应用程序中撰写消息并且有传入通知,例如来自 facebook 应用程序的推送通知,您希望通过让 MFMessageComposerViewController 执行某些操作来以某种方式在您的应用程序中处理此事件。

作为对这个请求的回答,我想说明以下几点:

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

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

于 2012-07-11T08:42:38.303 回答
0

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

  1. 分配MFMessageComposeViewControllerDelegate给作曲家。
  2. 像往常一样展示作曲家。
  3. 排队/记住作曲家正在播放时收到的通知(通过正常application:didReceive{Local|Remote}Notification:消息)
  4. 当作曲家关闭时,委托会收到它的messageComposeViewController:didFinishWithResult:消息。
  5. 使用存储/排队的通知做...无论如何...。

无论您是延迟响应通知,直到用户完成合成还是打断他们,都是一个比较棘手的情况。如果它是一个相对不重要的通知或频繁的通知,我倾向于使用队列/延迟方法。但是对于“重要”通知,我在打断用户方面没有问题。当然,这只是将问题转移到决定重要性的因素上。这在很大程度上取决于应用程序。

于 2012-07-11T12:57:22.637 回答