一、簡單的通知
發(fā)送方:僅僅發(fā)送通知,不包含發(fā)送數(shù)據(jù)
[[NSNotificationCenter defaultCenter] postNotificationName:@"getTargetJid" object:self];
接受方:開啟監(jiān)聽通知
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(AddFriendAndGetrlyOnline)
name: @"getTargetJid"
object: nil];
二、通知加傳值
情況一:數(shù)據(jù)簡單
發(fā)送方:發(fā)送通知,包含發(fā)送數(shù)據(jù)
[[NSNotificationCenter defaultCenter] postNotificationName:@"getIsOnlineInfo" object:self userInfo:@{@"isOnline":@"yesOnline"}];
接受方:開啟監(jiān)聽通知
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(getIsOnlineInfo:)
name: @"getIsOnlineInfo"
object: nil];
接收方:提取數(shù)據(jù)
-(void)getIsOnlineInfo:(NSNotification*)notification
{
NSDictionary *nameDictionary = [notification userInfo];
NSString *isonline = [nameDictionary objectForKey:@"isOnline"];
if ([isonline isEqualToString:@"yesOnline"])
{
[self TESTBtn];
}
if ([isonline isEqualToString:@"noOnlie"])
{
NSLog(@"對方容聯(lián)云不在線");
}
}
情況二:數(shù)據(jù)復(fù)雜
數(shù)據(jù)為 字典, 字典里數(shù)據(jù)是數(shù)組;
NSMutableArray * numArr = [[NSMutableArray alloc]initWithCapacity:5];
NSMutableArray * statusArr = [[NSMutableArray alloc]initWithCapacity:5];
NSMutableArray * snArr = [[NSMutableArray alloc]initWithCapacity:5];
NSDictionary *userInfoDic = [NSDictionary dictionaryWithObjectsAndKeys:
numArr,@"mtSwitchNum",
statusArr,@"mtSwitchStatus",
snArr,@"mtSwitchSn",nil];
創(chuàng)建消息對象 發(fā)送消息
//創(chuàng)建一個(gè)消息對象
NSNotification * notice = [NSNotification notificationWithName:DENGKONG_STATUS_CHANGED object:nil userInfo:@{@"name":userInfoDic}];
//發(fā)送消息
[[NSNotificationCenter defaultCenter]postNotification:notice];
接受界面添加觀察者
//添加當(dāng)前類對象為一個(gè)觀察者,name和object設(shè)置為nil,表示接收一切通知
[center addObserver:self selector:@selector(refreshDKView:) name:DENGKONG_STATUS_CHANGED object:nil];
接受界面觀察者回調(diào)函數(shù)
//將獲取到的燈的狀態(tài)進(jìn)行界面顯示
-(void)refreshDKView:(NSNotification*)sender
{
// NSLog(@"%@",sender);
//解析列子 NSDictionary *nameDictionary = [notification userInfo];
NSDictionary *resultDic = [sender userInfo];
NSDictionary * contentDic = [resultDic objectForKey:@"name"];
NSArray * numArr = [contentDic objectForKey:@"mtSwitchNum"];
NSString *a = [numArr objectAtIndex:0];
NSArray * statusArr = [contentDic objectForKey:@"mtSwitchStatus"];
NSString *b = [statusArr objectAtIndex:0];
NSArray * snArr = [contentDic objectForKey:@"mtSwitchSn"];
NSString *c = [snArr objectAtIndex:0];
NSLog(@"值:%@:%@:%@",a,b,c);
}
二、移除監(jiān)聽
[center removeObserver:self];
是刪除通知中心保存的調(diào)度表一個(gè)觀察者的所有入口
or
[center removeObserver:self name:UIContentSizeCategoryDidChangeNotification object:nil];
是刪除匹配了通知中心保存的調(diào)度表中觀察者的一個(gè)入口
三、常用通知
//音頻
AVF_EXPORT NSString *const AVAudioSessionInterruptionNotification //音頻中斷出現(xiàn)
AVF_EXPORT NSString *const AVAudioSessionRouteChangeNotification //系統(tǒng)的音頻線路發(fā)生改變
AVF_EXPORT NSString *const AVAudioSessionMediaServicesWereLostNotification //媒體服務(wù)終止
AVF_EXPORT NSString *const AVAudioSessionMediaServicesWereResetNotification //媒體服務(wù)重新啟動
//視頻
AVF_EXPORT NSString *const AVPlayerItemTimeJumpedNotification // 播放時(shí)間跳躍
AVF_EXPORT NSString *const AVPlayerItemDidPlayToEndTimeNotification // 播放結(jié)束
AVF_EXPORT NSString *const AVPlayerItemFailedToPlayToEndTimeNotification // 沒能播放到最后
AVF_EXPORT NSString *const AVPlayerItemPlaybackStalledNotification // 播放拋錨
AVF_EXPORT NSString *const AVPlayerItemNewAccessLogEntryNotification // 添加新的訪問日志條目
AVF_EXPORT NSString *const AVPlayerItemNewErrorLogEntryNotification // 添加新的錯(cuò)誤日志條目
MP_EXTERN NSString *const MPMediaLibraryDidChangeNotification; //媒體庫發(fā)生改變
MP_EXTERN NSString *const MPMediaPlaybackIsPreparedToPlayDidChangeNotification //后臺準(zhǔn)備播放發(fā)生改變
MP_EXTERN NSString *const MPMoviePlayerScalingModeDidChangeNotification; //視頻縮放填充模式發(fā)生改變
MP_EXTERN NSString *const MPMoviePlayerPlaybackDidFinishNotification; //媒體播放完成或用戶手動退出
MP_EXTERN NSString *const MPMoviePlayerPlaybackStateDidChangeNotification //播放狀態(tài)改變
MP_EXTERN NSString *const MPMoviePlayerLoadStateDidChangeNotification //媒體網(wǎng)絡(luò)加載狀態(tài)改變
MP_EXTERN NSString *const MPMoviePlayerNowPlayingMovieDidChangeNotification //當(dāng)前播放的媒體內(nèi)容發(fā)生改變
MP_EXTERN NSString *const MPMoviePlayerWillEnterFullscreenNotification //將進(jìn)入全屏
MP_EXTERN NSString *const MPMoviePlayerDidEnterFullscreenNotification //進(jìn)入全屏后
MP_EXTERN NSString *const MPMoviePlayerWillExitFullscreenNotification //將要退出全屏
MP_EXTERN NSString *const MPMoviePlayerDidExitFullscreenNotification //退出全屏后
MP_EXTERN NSString *const MPMoviePlayerIsAirPlayVideoActiveDidChangeNotification //當(dāng)媒體開始通過AirPlay播放或者結(jié)束AirPlay
MP_EXTERN NSString *const MPMoviePlayerReadyForDisplayDidChangeNotification //視頻顯示狀態(tài)改變
MP_EXTERN NSString *const MPMovieMediaTypesAvailableNotification //確定了媒體可用類型后
MP_EXTERN NSString *const MPMovieSourceTypeAvailableNotification // 確定了媒體來源后
MP_EXTERN NSString *const MPMovieDurationAvailableNotification //確定了媒體播放時(shí)長后
MP_EXTERN NSString *const MPMovieNaturalSizeAvailableNotification //確定了媒體的實(shí)際尺寸后
MP_EXTERN NSString *const MPMoviePlayerThumbnailImageRequestDidFinishNotification //縮略圖請求完成之后
MP_EXTERN NSString *const MPMoviePlayerTimedMetadataUpdatedNotification //同步元數(shù)據(jù)發(fā)生更新
MP_EXTERN NSString *const MPMoviePlayerContentPreloadDidFinishNotification //媒體內(nèi)容預(yù)加載完成
MP_EXTERN NSString *const MPMusicPlayerControllerPlaybackStateDidChangeNotification; //播放狀態(tài)改變
MP_EXTERN NSString *const MPMusicPlayerControllerNowPlayingItemDidChangeNotification; //播放內(nèi)容改變
MP_EXTERN NSString *const MPMusicPlayerControllerVolumeDidChangeNotification; //音量發(fā)生改變
//拍照/錄像
AVF_EXPORT NSString *const AVCaptureDeviceWasConnectedNotification //輸入設(shè)備已連接
AVF_EXPORT NSString *const AVCaptureDeviceWasDisconnectedNotification //輸入設(shè)備失去連接
AVF_EXPORT NSString *const AVCaptureDeviceSubjectAreaDidChangeNotification //捕獲區(qū)域發(fā)生改變
AVF_EXPORT NSString *const AVCaptureInputPortFormatDescriptionDidChangeNotification //輸入設(shè)備端口描述改變
AVF_EXPORT NSString *const AVCaptureSessionRuntimeErrorNotification //媒體會話運(yùn)行錯(cuò)誤
AVF_EXPORT NSString *const AVCaptureSessionDidStartRunningNotification //媒體會話開始運(yùn)行
AVF_EXPORT NSString *const AVCaptureSessionDidStopRunningNotification //媒體會話停止運(yùn)行
AVF_EXPORT NSString *const AVCaptureSessionWasInterruptedNotification //媒體會話中斷
AVF_EXPORT NSString *const AVCaptureSessionInterruptionEndedNotification //媒體會話中斷停止
//常用視圖
UIKIT_EXTERN NSString *const UITableViewSelectionDidChangeNotification; //TableView選中發(fā)生改變
UIKIT_EXTERN NSString *const UITextFieldTextDidBeginEditingNotification; //TextField開始編輯
UIKIT_EXTERN NSString *const UITextFieldTextDidEndEditingNotification; //TextField發(fā)生改變
UIKIT_EXTERN NSString *const UITextFieldTextDidChangeNotification; //TextField結(jié)束編輯
UIKIT_EXTERN NSString * const UITextViewTextDidBeginEditingNotification; //TextView開始編輯
UIKIT_EXTERN NSString * const UITextViewTextDidChangeNotification; //TextView發(fā)生改變
UIKIT_EXTERN NSString * const UITextViewTextDidEndEditingNotification; //TextView結(jié)束編輯
UIKIT_EXTERN NSString *const UIWindowDidBecomeVisibleNotification; //window激活并展示在界面的時(shí)候觸發(fā)
UIKIT_EXTERN NSString *const UIWindowDidBecomeHiddenNotification; //當(dāng)window隱藏的時(shí)候觸發(fā)
UIKIT_EXTERN NSString *const UIWindowDidBecomeKeyNotification; //當(dāng)window被設(shè)置為keyWindow時(shí)觸發(fā)
UIKIT_EXTERN NSString *const UIWindowDidResignKeyNotification; //當(dāng)window的key位置被取代時(shí)觸發(fā)
UIKIT_EXTERN NSString *const UIKeyboardWillShowNotification; //鍵盤將彈出
UIKIT_EXTERN NSString *const UIKeyboardDidShowNotification; //鍵盤彈出
UIKIT_EXTERN NSString *const UIKeyboardWillHideNotification; //鍵盤將要隱藏
UIKIT_EXTERN NSString *const UIKeyboardDidHideNotification; //鍵盤隱藏
UIKIT_EXTERN NSString *const UIKeyboardWillChangeFrameNotification //鍵盤frame將發(fā)生改變
UIKIT_EXTERN NSString *const UIKeyboardDidChangeFrameNotification //鍵盤frame發(fā)生改變后
//日期,時(shí)間
FOUNDATION_EXPORT NSString * const NSCalendarDayChangedNotification //日期發(fā)生改變
FOUNDATION_EXPORT NSString * const NSSystemClockDidChangeNotification //系統(tǒng)時(shí)鐘發(fā)生改變
FOUNDATION_EXPORT NSString * const NSSystemTimeZoneDidChangeNotification //系統(tǒng)時(shí)區(qū)發(fā)生改變
//線程
FOUNDATION_EXPORT NSString * const NSWillBecomeMultiThreadedNotification; //將變成多線程
FOUNDATION_EXPORT NSString * const NSDidBecomeSingleThreadedNotification; //變成了單線程
FOUNDATION_EXPORT NSString * const NSThreadWillExitNotification; //線程退出
//程序
UIKIT_EXTERN NSString *const UIApplicationDidEnterBackgroundNotification //程序進(jìn)入后臺
UIKIT_EXTERN NSString *const UIApplicationWillEnterForegroundNotification //程序?qū)⑦M(jìn)入前臺
UIKIT_EXTERN NSString *const UIApplicationDidFinishLaunchingNotification; //程序加載完成
UIKIT_EXTERN NSString *const UIApplicationDidBecomeActiveNotification; //程序變成激活狀態(tài)
UIKIT_EXTERN NSString *const UIApplicationWillResignActiveNotification; //程序?qū)⑹ゼせ顮顟B(tài)
UIKIT_EXTERN NSString *const UIApplicationDidReceiveMemoryWarningNotification; //接收到內(nèi)存警告
UIKIT_EXTERN NSString *const UIApplicationWillTerminateNotification; //程序?qū)⒔K止
UIKIT_EXTERN NSString *const UIApplicationSignificantTimeChangeNotification; //新的一天開始或時(shí)區(qū)發(fā)生變化
UIKIT_EXTERN NSString *const UIApplicationWillChangeStatusBarOrientationNotification; //將改變狀態(tài)欄方向
UIKIT_EXTERN NSString *const UIApplicationDidChangeStatusBarOrientationNotification; //狀態(tài)欄方向以改變
UIKIT_EXTERN NSString *const UIApplicationWillChangeStatusBarFrameNotification; //將改變狀態(tài)欄frame
UIKIT_EXTERN NSString *const UIApplicationDidChangeStatusBarFrameNotification; //狀態(tài)欄frame發(fā)生改變
UIKIT_EXTERN NSString *const UIApplicationBackgroundRefreshStatusDidChangeNotification //后臺刷新狀態(tài)改變
UIKIT_EXTERN NSString *const UIApplicationUserDidTakeScreenshotNotification //截屏?xí)r觸發(fā)通知
//硬件設(shè)備
UIKIT_EXTERN NSString *const UIDeviceOrientationDidChangeNotification; //設(shè)備方向改變
UIKIT_EXTERN NSString *const UIDeviceBatteryStateDidChangeNotification //電池狀態(tài)改變
UIKIT_EXTERN NSString *const UIDeviceBatteryLevelDidChangeNotification //電池電量改變
UIKIT_EXTERN NSString *const UIDeviceProximityStateDidChangeNotification //距離感應(yīng)器狀態(tài)發(fā)生改變
//其它
UIKIT_EXTERN NSString *const UILocalNotificationDefaultSoundName //本地通知聲音
UIKIT_EXTERN NSString *const UIPasteboardChangedNotification; //粘貼板發(fā)生改變
UIKIT_EXTERN NSString *const UIPasteboardRemovedNotification; //粘貼板內(nèi)容移除
FOUNDATION_EXPORT NSString * const NSUserDefaultsDidChangeNotification; //NSUserDefaults發(fā)生改變
FOUNDATION_EXPORT NSString * const NSBundleDidLoadNotification; //bundle加載完成