四、通知消息发送检测
有的时候我们并不想注册某个通知消息处理器来对通知进行处理,而只是想检测某个通知消息是否已经被发送过,为此系统提供两个函数来实现这功能:
- //注册一个通知消息检测的token 。
- uint32_t notify_register_check(const char *name, int *out_token);
- //检测这个token所对应的通知消息是否被发送过 。如果通知消息被发送过则check返回1,否则返回0 。
- uint32_t notify_check(int token, int *check);
五、通知消息的状态
对于通知消息的监听者来说,我们可以对返回的token绑定一个64位的状态数据 。我们可以获取以及设置它 。这个状态数据主要用来实现对通知监听者的扩展处理 。
- uint32_t notify_set_state(int token, uint64_t state64)
- uint32_t notify_get_state(int token, uint64_t *state64)
六、系统预置的通知消息
操作系统底层支持了一些预置的通知消息,这些通知消息在头文件notify_keys.h中被声明 。这些预置的消息有针对目录服务的、有针对磁盘空间和卷挂起的、有针对网络配置改变的、有针对写日志通知的、有针对系统时区和时间改变的 。每种具体的通知消息可以看文件中的说明,比如下面的例子实现对了对磁盘空间不足,网络状态改变以及对调整了系统的时间进行的监听处理:
- #include <notify.h>
- #include <notify_keys.h>
- void foo()
- {
- int token1, token2, token3;
- //注册监听网络状态改变的通知 。
- notify_register_dispatch(kNotifySCNetworkChange, & token1, dispatch_get_main_queue(), ^(int token) {
- //...
- });
- //注册监听系统磁盘空间不足的通知
- notify_register_dispatch(kNotifyVFSLowDiskSpaceRootFS, &token2, dispatch_get_main_queue(), ^(int token) {
- //....
- });
- //注册监听系统时间被改变的通知 。
- notify_register_dispatch(kNotifyClockSet, &token3, dispatch_get_main_queue(), ^(int token) {
- //...
- });
- }
- "com.Apple.asl.remote"
- "com.apple.system.timezone"
- "com.apple.MCX._managementStatusChangedForDomains"
- "com.apple.CFPreferences._domainsChangedExternally"
- "com.apple.system.clock_set"
- "com.apple.system.timezone"
- "AppleNumberPreferencesChangedNotification"
- "AppleTimePreferencesChangedNotification"
- "AppleDatePreferencesChangedNotification"
- "AppleLanguagePreferencesChangedNotification"
- "AppleTextBehaviorPreferencesChangedNotification"
- "com.apple.librarian.account-token-changed"
- "com.apple.system.batterysavermode"
- "com.apple.accessibility.cache.forcetouch.sensitivity.changed"
- "com.apple.networkd.started"
- "com.apple.neconfigurationchanged"
- "com.apple.networkd.settings"
- "com.apple.system.config.network_change"
- "com.apple.CoreAnimation.CAwindowserver.DisplayChanged"
- "com.apple.networkd.proxy_count"
- "com.apple.iohideventsystem.available"
推荐阅读
- App崩溃的6个常见原因!
- 关于西洋参提取物的相关介绍
- 银翘解毒丸的说明书
- 风湿痛药酒使用说明以及患上风湿的原因
- 茶叶中的香槟 关于大吉岭红茶的介绍
- 大吉岭红茶的价格是多少 大吉岭红茶的售价
- 大吉岭红茶的价格 大吉岭红茶的售价如何
- 印度大吉岭红茶的产地特征及作用介绍
- 印度的大吉岭红茶
- 印度原产地的大吉岭红茶