IOS 本地通知

  在移動設備上,一般只有一個應用是處於活躍狀態,若是這個時候其餘的一些應用接收到新的消息或者發生變化,須要通知給用戶,就能夠經過通知機制來告知用戶。此外,安裝在設備上的App不少都成爲了殭屍應用,安裝以後就不多再打開使用,爲了不這種狀況,在程序中能夠添加通知,在指定的時刻來提示用戶使用。web

  在IOS開發中,通知機制大體分爲兩大類,本地通知和遠程通知,兩種方式實現的效果同樣,都是經過橫幅或者彈出提醒的方式告知用戶,點擊通知時能夠打開App,可是它們實現的原理不同。在這裏,主要來說解一下本地通知。app

  本地通知是由本地的App本身發出的,它是一種基於時間行爲的通知形式,它是在按home鍵退出App或者鎖屏鍵退出後觸發的,在對應的App的icon上顯示通知的條數。本地通知比較實用,好比鬧鐘定時、代辦事項提醒等都是經過它來實現的。測試

  若是實現了通知,用戶在第一次打開App的時候,會提示是否打開通知,若是用戶選不容許,就不能使用通知這個功能,除非用戶取去設置中再次進行設置。雖然本地通知可以提示用戶來使用App,可是也不要頻繁的通知,不然會拔苗助長。spa

1、使用本地通知的步驟

1. 建立UILocationNotificationcode

2. 設置處理通知的時間fireDateorm

3. 配置通知的內容:通知主體、通知聲音、圖標文字等htm

4. 配置通知傳遞的自定義數據(可選)對象

5. 調用通知blog

2、本地通知代碼實現

(一)先去AppDelegate.m中的didFinishLaunchingWithOptions

  方法中判斷一下是否已經得到建立本地通知的受權,若是沒有得到,請求受權。圖片

  當用戶第一次打開App時,會彈出界面,詢問是否容許實現通知,若是用戶選擇不容許,那麼則沒法發送通知,除非去設置中進行設置,彈出界面如圖所示:

 

  代碼:

  if ([[UIApplication sharedApplication]currentUserNotificationSettings].types==UIUserNotificationTypeNone){
        
        [[UIApplication sharedApplication]registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound  categories:nil]];
    }

(二)當退到後臺時,添加通知

   當退到後臺時,添加通知,能夠在AppDelegate.m中的 applicationDidEnterBackground:中實現,在這裏調用添加通知的方法

(三)自定義添加通知的方法

  在這裏設置通知的內容,並調用通知

  代碼:

-(void)addLocalNotification{
    
    //定義本地通知對象
    UILocalNotification *notification=[[UILocalNotification alloc]init];
    //設置調用時間
    notification.fireDate=[NSDate dateWithTimeIntervalSinceNow:5.0];//通知觸發的時間,10s之後
    notification.repeatInterval=2;//通知重複次數
    
    
    //    NSCalendar *calendar=[NSCalendar currentCalendar];
    //    [calendar setTimeZone:[NSTimeZone defaultTimeZone]];
    //    notification.repeatCalendar=calendar;//當前日曆,使用前最好設置時區等信息以便可以自動同步時間
    
    //設置通知屬性
    notification.alertBody=@"這是通知主體啊"; //通知主體
    notification.applicationIconBadgeNumber=1;//應用程序圖標右上角顯示的消息數
    notification.alertAction=@"打開應用"; //待機界面的滑動動做提示
    notification.alertLaunchImage=@"Default";//經過點擊通知打開應用時的啓動圖片,這裏使用程序啓動圖片
    //notification.soundName=UILocalNotificationDefaultSoundName;//收到通知時播放的聲音,默認消息聲音
    //notification.soundName=@"msg.caf";//通知聲音(須要真機才能聽到聲音)
    
    //設置用戶信息
    notification.userInfo=@{@"id":@1,@"user":@"jredu"};//綁定到通知上的其餘附加信息
    
    //調用通知
    [[UIApplication sharedApplication] scheduleLocalNotification:notification];
}

(四)效果展現

 當程序退到後臺時,通知的效果

 

當鎖屏時,通知的效果

 

(五)點擊通知,能夠再次打開應用程序

  這個時候應該修改應用程序的圖標,讓右上角的未讀通知條數重置爲0,能夠在applicationWillEnterForeground:中實現

  代碼:

-(void)applicationWillEnterForeground:(UIApplication *)application {
     [[UIApplication sharedApplication]setApplicationIconBadgeNumber:0];//進入前臺取消應用消息圖標
}

 

  想要了解更多內容的小夥伴,能夠點擊查看源碼,親自運行測試。

  疑問諮詢或技術交流,請加入官方QQ羣:JRedu技術交流 (452379712)

 

做者: 傑瑞教育
出處: http://www.cnblogs.com/jerehedu/ 
本文版權歸煙臺傑瑞教育科技有限公司和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。
相關文章
相關標籤/搜索