IOS 通知实现设计技巧

IOS Notification implementation design technique

我目前正在使用 Parse.com 服务开发我的应用程序以发送推送。

我已成功实施,因此可以正确发送和接收推送。我需要帮助的是在实际尝试对通知做某事时如何思考。

我知道怎么做,但我有一些问题困扰着我,而且很难在网上专门搜索这样的问题,所以经过数小时的搜索和思考后,我放弃了并想到分享我的跟大家提问

现在进入实际问题:

我应该在哪里实现代码来处理推送通知来做某事?在我的应用程序中,会有针对不同目的的不同推送通知,每个推送通知都要求应用程序做一些事情。我是否应该编写相同的代码来处理我拥有的每个 viewController 上的推送通知(因为我认为我无法真正知道收到推送时用户会在哪里)或者显然有很多 smarter/cleaner解决办法?

假设一个特定的推送通知应该在用户可以按下两个按钮的地方发出警报。如果我有三个不同的视图,意味着三个不同的 viewController,我是否需要实现相同的代码来对每个 VC 进行警报?

如果我的问题不清楚,请告诉我,我会尽力解释得更透彻。谢谢..

我通常会创建一个 class 来处理通知并引用我调用的表示管理器,它知道如何实例化视图控制器(它基本上保留对故事板的引用并处理 windows应用程序委托的设置)。应用程序委托实例化此通知处理程序并将所有本地/远程通知转发给它。

为了显示 UI 通知,我选择使用操作队列,就像 WWDC15 session "Advanced NSOperation" 中描述的那个苹果一样。我只是安排显示 VC 的操作,并在 VC 被取消时完成。那些 UI-operations 是互斥的(请参阅苹果示例代码中的 AlertOperation)。这样,当收到大量通知但用户尚未关闭第一个通知的 UI 时,我不会显示多个 VC。

我们通过从主要 UIWindow 的 rootViewController 遍历到最里面的 presentedViewController 来呈现这样的 "modal" VC。这为您提供了一个 VC,只要您不使用特殊的表示上下文配置,就可以调用 presentViewController()on。 (同样,可以为您执行此查找的演示文稿管理器在这里派上用场)

如果您为该演示文稿实施自定义演示文稿控制器,您还可以创建自定义 VC 并使其看起来像模式对话框/弹出窗口。或者像 Facebook Messenger 使用的从顶部向下的栏。