iOS實現本地通知

本地通知,local notification,用於基於時間行爲的通知,比如有關日曆或者todo列表的小應用。另外,應用如果在後臺執行,iOS允許它在受限的時間內運行,它也會發現本地通知有用。比如,一個應用,在後臺運行,嚮應用的服務器端獲取消息,當消息到達時,比如下載更新版本的提示消息,通過本地通知機制通知用戶。

本地通知是UILocalNotification的實例,主要有三類屬性:

  • scheduled time,時間週期,用來指定iOS系統發送通知的日期和時間;
  • notification type,通知類型,包括警告信息、動作按鈕的標題、應用圖標上的badge(數字標記)和播放的聲音;
  • 自定義數據,本地通知可以包含一個dictionary類型的本地數據。

對本地通知的數量限制,iOS最多允許最近本地通知數量是64個,超過限制的本地通知將被iOS忽略。

如果就寫個簡單的定時提醒,是很簡單的,比如這樣:

image

示例寫的很簡單,啓動應用後,就發出一個定時通知,10秒後啓動。這時按Home鍵退出,一會兒就會提示上圖的提示信息。如果應用不退出則無效。

代碼如下:

UILocalNotification *notification=[[UILocalNotification alloc] init]; 
if (notification!=nil) { 
    NSLog(@">> support local notification"); 
    NSDate *now=[NSDate new]; 
    notification.fireDate=[now addTimeInterval:10]; 
    notification.timeZone=[NSTimeZone defaultTimeZone]; 
    notification.alertBody=@"該去喫晚飯了!"; 
    [[UIApplication sharedApplication]   scheduleLocalNotification:notification];

更詳細的代碼見官方文檔:《Scheduling, Registering, and Handling Notifications》,可以設置比如聲音,比如用戶定義數據等。

IOS:NSNotification
1.     通知中心概述
通知中心實際上是在程序內部提供了消息廣播的一種機制。通知中心不能在進程間進行通信。實際上就是一個二傳手,把接收到的消息,根據內部的一個消息轉發表,來將消息轉發給需要的對象。通知中心是基於觀察者模式的,它允許註冊、刪除觀察者。
一個NSNotificationCenter可以有許多的通知消息NSNotification,對於每一個NSNotification可以有很多的觀察者Observer來接收通知。
2.     通知中心兩個重要的類
NSNotificationCenter:這是iOS中通知中心的靈魂,由該類實現了觀察者模式,並給開發者提供了諸如註冊、刪除觀察者的接口,我們可以通過一個單例來獲得它的實例(注,一個程序內部只有一個NSNotificationCenter實例對象)。
NSNotification:這是消息攜帶的載體,通過它,可以把消息內容傳遞給觀察者。其中:name對應消息名稱標示。object一般是發送者本身、dictionary則是傳遞的消息內容。
3.     通知中心如何使用
通過下圖,我們可以看出,通知中心的使用可以分爲4個步驟。
這裏需要額外提一點的是:發送消息不僅僅可以有用戶發起,也可以是系統發起。
當我們註冊了某個消息的觀察者後,如果有了對應的消息,則觀察者會收到相應的消息,並展開處理。這裏需要注意的是,當使用完消息之後,不想在接收到消息,則需要把觀察者移除,否則會出現錯誤。

註冊通知:即要在什麼地方接受消息
[[NSNotificationCenter defaultCenter]  addObserver:self selector:@selector (mytest:) name:@" postData " object:nil];
參數介紹:
addObserver:觀察者,即在什麼地方接收通知;
selector:收到通知後調用何種方法,即回調函數;
name:通知的名字,也是通知的唯一標示,編譯器就通過這個找到通知的。
發送通知:調用觀察者處的方法。
[[NSNotificationCenter defaultCenter] postNotificationName:@" postData " object:searchFriendArray];


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章