通知--本地通知

本地通知是由本地應用觸發(fā)的,它是基于時間行為的一種通知形式,例如鬧鐘定時、待辦事項提醒,又或者一個應用在一段時候后不使用通常會提示用戶使用此應用等都是本地通知。創(chuàng)建一個本地通知通常分為以下幾個步驟:

1 創(chuàng)建UILocalNotification。

2 設置處理通知的時間fireDate。

3 配置通知的內(nèi)容:通知主體、通知聲音、圖標數(shù)字等。

4 配置通知傳遞的自定義數(shù)據(jù)參數(shù)userInfo(這一步可選)。

5 調(diào)用通知,可以使用scheduleLocalNotification:按計劃調(diào)度一個通知,也可以使用presentLocalNotificationNow立即調(diào)用通知。

? ? ? ? 下面就以一個程序更新后用戶長期沒有使用的提醒為例對本地通知做一個簡單的了解。在這個過程中并沒有牽扯太多的界面操作,所有的邏輯都在AppDelegate中:進入應用后如果沒有注冊通知,需要首先注冊通知請求用戶允許通知;一旦調(diào)用完注冊方法,無論用戶是否選擇允許通知此刻都會調(diào)用應用程序的- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings代理方法,在這個方法中根據(jù)用戶的選擇:如果是允許通知則會按照前面的步驟創(chuàng)建通知并在一定時間后執(zhí)行。

AppDelegate.m ? ?中

//

//? AppDelegate.m

//? LocalNotification

//

//? Created by Kenshin Cui on 14/03/28.

//? Copyright (c) 2014年 Kenshin Cui. All rights reserved.

//

#import "AppDelegate.h"

#import "KCMainViewController.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

#pragma mark - 應用代理方法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

_window=[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];

_window.backgroundColor =[UIColor colorWithRed:249/255.0 green:249/255.0 blue:249/255.0 alpha:1];

//設置全局導航條風格和顏色

[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:23/255.0 green:180/255.0 blue:237/255.0 alpha:1]];

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

KCMainViewController *mainController=[[KCMainViewController alloc]init];

_window.rootViewController=mainController;

[_window makeKeyAndVisible];

//如果已經(jīng)獲得發(fā)送通知的授權則創(chuàng)建本地通知,否則請求授權(注意:如果不請求授權在設置中是沒有對應的通知設置項的,也就是說如果從來沒有發(fā)送過請求,即使通過設置也打不開消息允許設置)

if ([[UIApplication sharedApplication]currentUserNotificationSettings].types!=UIUserNotificationTypeNone) {

[self addLocalNotification];

}else{

[[UIApplication sharedApplication]registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound? categories:nil]];

}

return YES;

}

#pragma mark 調(diào)用過用戶注冊通知方法之后執(zhí)行(也就是調(diào)用完registerUserNotificationSettings:方法之后執(zhí)行)

-(void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings{

if (notificationSettings.types!=UIUserNotificationTypeNone) {

[self addLocalNotification];

}

}

#pragma mark 進入前臺后設置消息信息

-(void)applicationWillEnterForeground:(UIApplication *)application{

[[UIApplication sharedApplication]setApplicationIconBadgeNumber:0];//進入前臺取消應用消息圖標

}

#pragma mark - 私有方法

#pragma mark 添加本地通知

-(void)addLocalNotification{

//定義本地通知對象

UILocalNotification *notification=[[UILocalNotification alloc]init];

//設置調(diào)用時間

notification.fireDate=[NSDate dateWithTimeIntervalSinceNow:10.0];//通知觸發(fā)的時間,10s以后

notification.repeatInterval=2;//通知重復次數(shù)

//notification.repeatCalendar=[NSCalendar currentCalendar];//當前日歷,使用前最好設置時區(qū)等信息以便能夠自動同步時間

//設置通知屬性

notification.alertBody=@"最近添加了諸多有趣的特性,是否立即體驗?"; //通知主體

notification.applicationIconBadgeNumber=1;//應用程序圖標右上角顯示的消息數(shù)

notification.alertAction=@"打開應用"; //待機界面的滑動動作提示

notification.alertLaunchImage=@"Default";//通過點擊通知打開應用時的啟動圖片,這里使用程序啟動圖片

//notification.soundName=UILocalNotificationDefaultSoundName;//收到通知時播放的聲音,默認消息聲音

notification.soundName=@"msg.caf";//通知聲音(需要真機才能聽到聲音)

//設置用戶信息

notification.userInfo=@{@"id":@1,@"user":@"Kenshin Cui"};//綁定到通知上的其他附加信息

//調(diào)用通知

[[UIApplication sharedApplication] scheduleLocalNotification:notification];

}

#pragma mark 移除本地通知,在不需要此通知時記得移除

-(void)removeNotification{

[[UIApplication sharedApplication] cancelAllLocalNotifications];

}

@end


注意:通知中心在用完之后應該將它手動的給注銷:無論是MRC還是ARC中

方法一:最好

在 UIViewController.m 中:

-(void)dealloc {

[[NSNotificationCenter defaultCenter] removeObserver:self];

}

方法二:

找適當?shù)牡胤綄⑺瞥?/p>

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"Notification_GetUserProfileSuccess"object:nil];

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 概述 在多數(shù)移動應用中任何時候都只能有一個應用程序處于活躍狀態(tài),如果其他應用此刻發(fā)生了一些用戶感興趣的那么通過通知...
    莫離_焱閱讀 6,721評論 1 8
  • 通知中心(NotificationCenter)和通知(UILocalNotification)是雷鋒和雷峰塔的關...
    smile麗語閱讀 984評論 4 5
  • 許多集成的步驟個推官網(wǎng)都有了,這里只寫關于推送的遠程推送和本地通知的步驟和代碼。APP在后臺時:走蘋果的APNS通...
    AllureJM閱讀 2,967評論 1 9
  • 極光推送: 1.JPush當前版本是1.8.2,其SDK的開發(fā)除了正常的功能完善和擴展外也緊隨蘋果官方的步伐,SD...
    Isspace閱讀 6,886評論 10 16
  • iOS中通知機制又叫消息機制,其包括兩類:一類是本地通知;另一類是推送通知,也叫遠程通知。兩種通知在iOS中...
    七里汀閱讀 2,175評論 3 2

友情鏈接更多精彩內(nèi)容