Swift:如何从服务器接收远程通知?

Posted

技术标签:

【中文标题】Swift:如何从服务器接收远程通知?【英文标题】:Swift: How to receive a remote notification from server? 【发布时间】:2016-06-07 14:37:39 【问题描述】:

这是一个普遍的问题,但我似乎找不到一个直接的答案,而且我不确定要寻找什么。我有一个后端,当有人喜欢您发布的内容时发送通知,我可以发送它并且应用程序接收它。但是,我不确定如何创建 UI 来处理通知。我的第一个猜测是,由于接收通知会在 AppDelegate 中触发 didReceiveRemoteNotification fetchCompletionHandler,我应该尝试在该函数中获取当前 VC 并从那里添加图形元素。然而,我读到这不是你应该做的事情,你应该使用 NSNotifications 代替。问题是我不确定我是否理解如何使用 NSNotificationsCenter 表达远程通知。

你有什么推荐的?

【问题讨论】:

可能重复:***.com/questions/31610896/… 其实我的问题没那么复杂:我可以在应用中接收信息。我的问题是,我应该如何在呈现的视图控制器上显示它?我应该在应用委托中获取呈现的视图控制器并添加一个 UIView 吗? 不知道它与远程通知有什么关系。 因为我在应用程序委托中收到来自服务器的远程通知,但我不知道如何在不使用 UIAlert 的情况下显示它。 【参考方案1】:

NSNotification 是观察者设计模式的一部分。

它就像一个“广播”。

首先你必须注册每个应该监听事件的组件:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myFonction) name:@"Notif name" object:nil];
    //swift
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(myFonction), name: "notif name", object: nil)

接下来,当你有消息要广播时,用相同的名称发布通知:

[[NSNotificationCenter defaultCenter] postNotificationName:@"Notif name" object:nil];
//swift
NSNotificationCenter.defaultCenter().postNotificationName("notif name", object: nil)

当您发布通知时,myFonction 方法将在 target 上调用

【讨论】:

其实我的问题没那么复杂:我可以在应用中接收信息。我的问题是,我应该如何在呈现的视图控制器上显示它?我应该在应用程序委托中获取呈现的视图控制器并添加一个 UIView 吗?我正在尝试像在大多数常规应用程序中一样在屏幕顶部获取 UIView 而不是 UIAlert ... 我的答案是这样做的。在myFonction 中,您可以做任何您想做的事情:显示警报、添加自定义 UIView... 你是对的,我试图显示的 UIView 没有出现,所以我认为可能需要更多步骤,但这是范围的问题,所以它现在可以工作了。感谢您的详细解答!

以上是关于Swift:如何从服务器接收远程通知?的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS (swift) 应用中,第二个 Firebase 应用的注册无法接收远程通知

在 Swift 中注册远程通知时未收到设备令牌

iPhone 重新上线后如何接收远程通知?

如何清除 iOS 的远程推送通知?

应用程序在后台时的远程推送通知 swift 3

如何在 swift 4 上从 didFinishLaunchingWithOptions 获取通知中心数据