我想收听派发到defaultCenter的所有通知。公共和私人。有谁知道我该怎么做?如何侦听发送到iOS NSNotificationCenter的defaultCenter的所有通知?
43
A
回答
71
使用NSNotificationCenter的addObserverForName:object:queue:usingBlock:
或addObserver:selector:name:object:
方法并将名称和对象传递给nil。
例
下面的代码应该做的工作:
- (void)dumpNotifications {
NSNotificationCenter *notifyCenter = [NSNotificationCenter defaultCenter];
[notifyCenter addObserverForName:nil
object:nil
queue:nil
usingBlock:^(NSNotification *notification){
// Explore notification
NSLog(@"Notification found with:"
"\r\n name: %@"
"\r\n object: %@"
"\r\n userInfo: %@",
[notification name],
[notification object],
[notification userInfo]);
}];
}
文档
这里是addObserverForName:object:queue:usingBlock:
的文档。特别是看到名和OBJ参数。
addObserverForName:对象:队列:usingBlock:
添加带有通知 队列条目到接收器的发送表和块添加到队列中,和可选的标准: 通知名称和发件人。
- (id)addObserverForName:(NSString *)name object:(id)obj queue:(NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *))block
参数
名称
通知为其中注册观察者的名称; 是,只有具有该名称的通知才用于将该块添加到 操作队列中。 如果您通过零,通知中心不使用 通知的名称来决定是否将块添加到 操作队列。
OBJ
对象要块添加到 操作队列谁的通知。 如果您通过零,通知中心不使用 通知的发件人决定是否将块添加到 操作队列。
队列
操作队列哪个块应该被添加。如果您通过零, 该块在发布线程上同步运行。
块
该块所接收的通知时要执行。块 由通知中心复制和(复制)保持,直到 观察者登记被删除。块有一个参数:
通知
的通知。
相关问题
- 1. NSNotificationCenter defaultCenter iOS 8.通知没有被传递给观察者之一
- 2. AppDelegate未侦听APNS推送通知
- 3. NSNotificationCenter通知不被发送/接收
- 4. 在ios中发送所有用户推送通知
- 5. iOS推送通知 - 向所有人发送消息
- 6. Onesignal不发送所有的Android通知
- 7. 发送推送IOS上的FCM通知
- 8. NSNotificationCenter:通过2类之间的通知
- 9. 发布/订阅侦听所有话题#
- 10. NSNotificationCenter:是否有可能监听其他未明确发布通知的类?
- 11. 如何在没有AppDelegate的iOS中收到推送通知时收到通知?
- 12. 尝试将推送通知发送到iOS设备 - 未收到推送通知
- 13. 推送通知只能发送从ios到Android不从ios到ios/android到ios
- 14. 如何获取ios上的所有收到的通知
- 15. 如何使用QTcpServer侦听众所周知的TCP端口
- 16. NSNotificationCenter与推送通知相关吗?
- 17. 触摸的NSNotificationCenter通知
- 18. 如何通过CURL向所有设备发送Firebase通知?
- 19. 发送批量iOS通知的问题
- 20. 没有收到推送通知 - IOS
- 21. GCM iOS没有收到推送通知
- 22. iOS发送推送通知到一次更多的设备PHP
- 23. iOS发送多个推送通知
- 24. Django推送通知到IOS
- 25. 如何实用的iOS推送通知
- 26. 如何发送XMPP聊天消息通知到Android以及IOS
- 27. 如何侦听由WebView发送的HTTP请求(目标c)?
- 28. 如何编写能够发送包的简单TCP侦听器?
- 29. 如何将推送通知发送到iOS设备上的Web应用程序?
- 30. 事件侦听通知其他事件
很好的答案。但是,对于任何可能复制/粘贴解决方案的人来说,都有几种类型。 “notifyCenter”应该是一个对象,所以它应该是“* notifyCenter”。 NSLog语句在开始时缺少'@'符号。 – Keller
@凯勒 - 感谢您的评论。我修改了我的答案以包含修复程序。 – Sam
没问题。具有讽刺意味的是,我刚刚注意到我在我以前的评论中拼写错误“拼写错误” – Keller