你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS 本地通知

iOS 本地通知

編輯:IOS開發綜合


#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//如果已經獲得發送通知的授權則創建本地通知,否則請求授權(注意:如果不請求授權在設置中是沒有對應的通知設置項的,也就是說如果從來沒有發送過請求,即使通過設置也打不開消息允許設置)
#if 0
if ([[UIApplication sharedApplication]currentUserNotificationSettings].types!=UIUserNotificationTypeNone) {
[self addLocalNotification];
}else{
[[UIApplication sharedApplication]registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
}
#else
//添加通知
[self addLocalNotification];
//接收通知參數
UILocalNotification *notification=[launchOptions valueForKey:UIApplicationLaunchOptionsLocalNotificationKey];
NSDictionary *userInfo= notification.userInfo;

[userInfo writeToFile:@"/Users/kenshincui/Desktop/didFinishLaunchingWithOptions.txt" atomically:YES];
NSLog(@"didFinishLaunchingWithOptions:The userInfo is %@.",userInfo);
#endif
return YES;
}
#pragma mark - 私有方法
#pragma mark 添加本地通知
- (void)addLocalNotification{
//定義本地通知對象
UILocalNotification *notification=[[UILocalNotification alloc]init];
//設置調用時間
notification.fireDate=[NSDate dateWithTimeIntervalSinceNow:10.0];//通知觸發的時間,10s以後
notification.repeatInterval=2;//通知重復次數
notification.repeatCalendar=[NSCalendar currentCalendar];//當前日歷,使用前最好設置時區等信息以便能夠自動同步時間

//設置通知屬性
notification.alertBody=@"最近添加了諸多有趣的特性,是否立即體驗?"; //通知主體
notification.applicationIconBadgeNumber=1;//應用程序圖標右上角顯示的消息數
notification.alertAction=@"打開應用"; //待機界面的滑動動作提示
notification.alertLaunchImage=@"Default";//通過點擊通知打開應用時的啟動圖片,這裡使用程序啟動圖片
//notification.soundName=UILocalNotificationDefaultSoundName;//收到通知時播放的聲音,默認消息聲音
notification.soundName=@"msg.caf";//通知聲音(需要真機才能聽到聲音)

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

//調用通知
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
}
#pragma mark 調用過用戶注冊通知方法之後執行(也就是調用完registerUserNotificationSettings:方法之後執行)
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings{
if (notificationSettings.types!=UIUserNotificationTypeNone) {
[self addLocalNotification];
}
}
- (void)applicationWillResignActive:(UIApplication *)application {
}

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

}
#pragma mark 進入前台後設置消息信息
- (void)applicationWillEnterForeground:(UIApplication *)application {
[[UIApplication sharedApplication]setApplicationIconBadgeNumber:0];//進入前台取消應用消息圖標
}
#pragma mark 移除本地通知,在不需要此通知時記得移除
-(void)removeNotification{
[[UIApplication sharedApplication] cancelAllLocalNotifications];
}
- (void)applicationDidBecomeActive:(UIApplication *)application {

}

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

}
#pragma mark 接收本地通知時觸發 222222
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
NSDictionary *userInfo=notification.userInfo;
[userInfo writeToFile:@"/Users/kenshincui/Desktop/didReceiveLocalNotification.txt" atomically:YES];
NSLog(@"didReceiveLocalNotification:The userInfo is %@",userInfo);
}

@end
注意:

在使用通知之前必須注冊通知類型,如果用戶不允許應用程序發送通知,則以後就無法發送通知,除非用戶手動到iOS設置中打開通知。
本地通知是有操作系統統一調度的,只有在應用退出到後台或者關閉才能收到通知。(注意:這一點對於後面的推送通知也是完全適用的。 )
通知的聲音是由iOS系統播放的,格式必須是Linear PCM、MA4(IMA/ADPCM)、μLaw、aLaw中的一種,並且播放時間必須在30s內,否則將被系統聲音替換,同時自定義聲音文件必須放到main boundle中。
本地通知的數量是有限制的,最近的本地通知最多只能有64個,超過這個數量將被系統忽略。
如果想要移除本地通知可以調用UIApplication的cancelLocalNotification:或cancelAllLocalNotifications移除指定通知或所有通知。
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved