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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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

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