ios推送:本地通知UILocalNotification

//發(fā)送通知

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

if (notification!=nil) {

NSDate *now=[NSDate new];

notification.fireDate=[now dateByAddingTimeInterval:10];//10秒后通知

notification.repeatInterval=0;//循環(huán)次數(shù)磨淌,kCFCalendarUnitWeekday一周一次

notification.timeZone=[NSTimeZone defaultTimeZone];

notification.applicationIconBadgeNumber=1; //應(yīng)用的紅色數(shù)字

notification.soundName= UILocalNotificationDefaultSoundName;//聲音医男,可以換成alarm.soundName = @"myMusic.caf"

//去掉下面2行就不會(huì)彈出提示框

notification.alertBody=@"通知內(nèi)容";//提示信息 彈出提示框

notification.alertAction = @"打開"; ?//提示框按鈕

//notification.hasAction = NO; //是否顯示額外的按鈕,為no時(shí)alertAction消失

// NSDictionary *infoDict = [NSDictionary dictionaryWithObject:@"someValue" forKey:@"someKey"];

//notification.userInfo = infoDict; //添加額外的信息

[[UIApplication sharedApplication] scheduleLocalNotification:notification];

}

[notification release];

復(fù)制代碼

取消通知

復(fù)制代碼

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

// Override point for customization after application launch.

application.applicationIconBadgeNumber = 0;

// Add the view controller's view to the window and display.

[window addSubview:viewController.view];

[window makeKeyAndVisible];

return YES;

}

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {

//點(diǎn)擊提示框的打開

application.applicationIconBadgeNumber = 0;

}

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

//當(dāng)程序還在后臺(tái)運(yùn)行

application.applicationIconBadgeNumber = 0;

}

///////////////////////////////////////

iOS 4.0之后捻浦,我們就多了一種推送選擇粗卜,即本地推送屋确,可以減輕一些服務(wù)器的壓力。今天和大家簡(jiǎn)單分享下iOS4里的本地推送。

1攻臀、增加一個(gè)本地推送

//設(shè)置20秒之后

NSDate *date = [NSDate dateWithTimeIntervalSinceNow:20];

//chuagjian一個(gè)本地推送

UILocalNotification *noti = [[[UILocalNotification alloc] init] autorelease];

if (noti) {

//設(shè)置推送時(shí)間

noti.fireDate = date;

//設(shè)置時(shí)區(qū)

noti.timeZone = [NSTimeZone defaultTimeZone];

//設(shè)置重復(fù)間隔

noti.repeatInterval = NSWeekCalendarUnit;

//推送聲音

noti.soundName = UILocalNotificationDefaultSoundName;

//內(nèi)容

noti.alertBody = @"推送內(nèi)容";

//顯示在icon上的紅色圈中的數(shù)子

noti.applicationIconBadgeNumber = 1;

//設(shè)置userinfo 方便在之后需要撤銷的時(shí)候使用

NSDictionary *infoDic = [NSDictionary dictionaryWithObject:@"name" forKey:@"key"];

noti.userInfo = infoDic;

//添加推送到uiapplication

UIApplication *app = [UIApplication sharedApplication];

[app scheduleLocalNotification:noti];

}

2焕数、程序運(yùn)行時(shí)接收到本地推送消息

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification

{

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"接收到本地提醒 in app"

message:notification.alertBody

delegate:nil

cancelButtonTitle:@"確定"

otherButtonTitles:nil];

[alert show];

//這里,你就可以通過notification的useinfo茵烈,干一些你想做的事情了

application.applicationIconBadgeNumber -= 1;

}

3百匆、取消一個(gè)本地推送

UIApplication *app = [UIApplication sharedApplication];

//獲取本地推送數(shù)組

NSArray *localArr = [app scheduledLocalNotifications];

//聲明本地通知對(duì)象

UILocalNotification *localNoti;

if (localArr) {

for (UILocalNotification *noti in localArr) {

NSDictionary *dict = noti.userInfo;

if (dict) {

NSString *inKey = [dict objectForKey:@"key"];

if ([inKey isEqualToString:key]) {

if (localNoti){

[localNoti release];

localNoti = nil;

}

localNoti = [noti retain];

break;

}

}

}

//判斷是否找到已經(jīng)存在的相同key的推送

if (!localNoti) {

//不存在 初始化

localNoti = [[UILocalNotification alloc] init];

}

if (localNoti && !state) {

//不推送 取消推送

[app cancelLocalNotification:localNoti];

[localNoti release];

return;

}

}

01. 第一步:創(chuàng)建本地推送

02. // 創(chuàng)建一個(gè)本地推送

03. UILocalNotification *notification = [[[UILocalNotification alloc] init] autorelease];

04. //設(shè)置10秒之后

05. NSDate *pushDate = [NSDate dateWithTimeIntervalSinceNow:10];

06. if (notification != nil) {

07. ? ? // 設(shè)置推送時(shí)間

08. ? ? notification.fireDate = pushDate;

09. ? ? // 設(shè)置時(shí)區(qū)

10. ? ? notification.timeZone = [NSTimeZone defaultTimeZone];

11. ? ? // 設(shè)置重復(fù)間隔

12. ? ? notification.repeatInterval = kCFCalendarUnitDay;

13. ? ? // 推送聲音

14. ? ? notification.soundName = UILocalNotificationDefaultSoundName;

15. ? ? // 推送內(nèi)容

16. ? ? notification.alertBody = @"推送內(nèi)容";

17. ? ? //顯示在icon上的紅色圈中的數(shù)子

18. ? ? notification.applicationIconBadgeNumber = 1;

19. ? ? //設(shè)置userinfo 方便在之后需要撤銷的時(shí)候使用

20. ? ? NSDictionary *info = [NSDictionary dictionaryWithObject:@"name"forKey:@"key"];

21. ? ? notification.userInfo = info;

22. ? ? //添加推送到UIApplication

23. ? ? UIApplication *app = [UIApplication sharedApplication];

24. ? ? [app scheduleLocalNotification:notification];

25.

26. }

27.

28. 第二步:接收本地推送

29. - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification{

30. ? ? UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"iWeibo" message:notification.alertBody delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil];

31. ? ? [alert show];

32. ? ? // 圖標(biāo)上的數(shù)字減1

33. ? ? application.applicationIconBadgeNumber -= 1;

34. }

35.

36. 第三步:解除本地推送

37. // 獲得 UIApplication

38. UIApplication *app = [UIApplication sharedApplication];

39. //獲取本地推送數(shù)組

40. NSArray *localArray = [app scheduledLocalNotifications];

41. //聲明本地通知對(duì)象

42. UILocalNotification *localNotification;

43. if (localArray) {

44. ? ? for (UILocalNotification *noti in localArray) {

45. ? ? ? ? NSDictionary *dict = noti.userInfo;

46. ? ? ? ? if (dict) {

47. ? ? ? ? ? ? NSString *inKey = [dict objectForKey:@"key"];

48. ? ? ? ? ? ? if ([inKey isEqualToString:@"對(duì)應(yīng)的key值"]) {

49. ? ? ? ? ? ? ? ? if (localNotification){

50. ? ? ? ? ? ? ? ? ? ? [localNotification release];

51. ? ? ? ? ? ? ? ? ? ? localNotification = nil;

52. ? ? ? ? ? ? ? ? }

53. ? ? ? ? ? ? ? ? localNotification = [noti retain];

54. ? ? ? ? ? ? ? ? break;

55. ? ? ? ? ? ? }

56. ? ? ? ? }

57. ? ? }

58.

59. ? ? //判斷是否找到已經(jīng)存在的相同key的推送

60. ? ? if (!localNotification) {

61. ? ? ? ? //不存在初始化

62. ? ? ? ? localNotification = [[UILocalNotification alloc] init];

63. ? ? }

64.

65. ? ? if (localNotification) {

66. ? ? ? ? //不推送 取消推送

67. ? ? ? ? [app cancelLocalNotification:localNotification];

68. ? ? ? ? [localNotification release];

69. ? ? ? ? return;

70. ? ? }

71. }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市呜投,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌存璃,老刑警劉巖仑荐,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異纵东,居然都是意外死亡粘招,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門偎球,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洒扎,“玉大人,你說我怎么就攤上這事衰絮∨劾洌” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵猫牡,是天一觀的道長(zhǎng)胡诗。 經(jīng)常有香客問我,道長(zhǎng)淌友,這世上最難降的妖魔是什么煌恢? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮震庭,結(jié)果婚禮上瑰抵,老公的妹妹穿的比我還像新娘。我一直安慰自己器联,他們只是感情好二汛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著主籍,像睡著了一般习贫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上千元,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天苫昌,我揣著相機(jī)與錄音,去河邊找鬼幸海。 笑死祟身,一個(gè)胖子當(dāng)著我的面吹牛奥务,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播袜硫,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼氯葬,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了婉陷?” 一聲冷哼從身側(cè)響起帚称,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秽澳,沒想到半個(gè)月后闯睹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡担神,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年楼吃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妄讯。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡孩锡,死狀恐怖亥贸,靈堂內(nèi)的尸體忽然破棺而出躬窜,到底是詐尸還是另有隱情砌函,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布讹俊,位于F島的核電站垦沉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏仍劈。R本人自食惡果不足惜厕倍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一贩疙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧这溅,春花似錦组民、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至耸三,卻和暖如春乱陡,著一層夾襖步出監(jiān)牢的瞬間仪壮,已是汗流浹背憨颠。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工积锅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乏沸。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蹬跃,于是被迫代替她去往敵國(guó)和親铆铆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 概述 在多數(shù)移動(dòng)應(yīng)用中任何時(shí)候都只能有一個(gè)應(yīng)用程序處于活躍狀態(tài)翁都,如果其他應(yīng)用此刻發(fā)生了一些用戶感興趣的那么通過通知...
    莫離_焱閱讀 6,511評(píng)論 1 8
  • 許多集成的步驟個(gè)推官網(wǎng)都有了,這里只寫關(guān)于推送的遠(yuǎn)程推送和本地通知的步驟和代碼柄慰。APP在后臺(tái)時(shí):走蘋果的APNS通...
    AllureJM閱讀 2,717評(píng)論 1 9
  • 極光推送: 1.JPush當(dāng)前版本是1.8.2税娜,其SDK的開發(fā)除了正常的功能完善和擴(kuò)展外也緊隨蘋果官方的步伐坐搔,SD...
    Isspace閱讀 6,719評(píng)論 10 16
  • 推送通知 注意:這里說的推送通知跟NSNotification有所區(qū)別 NSNotification是抽象的敬矩,不可...
    iOS開發(fā)攻城獅閱讀 4,221評(píng)論 1 13
  • 推送通知注意:這里說的推送通知跟NSNotification有所區(qū)別NSNotification是抽象的,不可見的...
    醉葉惜秋閱讀 1,515評(píng)論 0 3