UILocalNotificationローカル通知(16年5月末最新テスト)
4359 ワード
プロジェクトではローカル通知機能を使って、ネット上で検索して、いろいろな言い方をして、自分の検証を経て、以下のように整理しました.
まず説明するのはIOSの最大許可最近のローカル通知数は64個で、制限を超えたローカル通知は無視され、テストを経て、ローカル通知はまったく制限されていません.以前は制限があったかもしれませんが、今は数量を制限していません.次にiOS 8以降は通知を送信する前に登録する必要があるので、ローカル通知機能を使用する前に登録する必要があります.次の使い方を説明します.
3.1属性トリガ時間(fireDate,timeZone,repeatInterval(繰り返し)、repeatCalendar)/送信通知方式が即時送信であれば無意味 を構成する
//10秒後通知
//繰り返しの設定通知動作(alertAction,hasAction) トリガ通知時の起動画面(alertLaunchImage) 通知の本文内容(alertTitle,alertBody) 通知の音声(soundName) 通知メッセージ数の表示(applicationIconBadgeNumber)Appアイコン左上隅の赤い数字 と表示されません.その他(userInfo)は、通知の処理に必要な追加情報をバインドすることができる.
この通知にkeyを追加するとキャンセルしやすいです.
3.2送信方式
3.3キャンセル方式
AppDelegateでmファイルにおける
一般的にAppに入った後、小さな赤い点をクリアし、
ここまでで全部終わってしまうので、簡単ではないでしょうか.実は私达はふだんそれを使って1つの弾枠のような注意の机能を行って、登录して、送信して、いくつかのコードは解决しました.の
まず説明するのはIOSの最大許可最近のローカル通知数は64個で、制限を超えたローカル通知は無視され、テストを経て、ローカル通知はまったく制限されていません.以前は制限があったかもしれませんが、今は数量を制限していません.次にiOS 8以降は通知を送信する前に登録する必要があるので、ローカル通知機能を使用する前に登録する必要があります.次の使い方を説明します.
1.登録通知(iOS 8以降)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
メソッドに登録コードを追加if([[UIDevice currentDevice].systemVersion doubleValue]>=8.0){//8.0
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
}else{
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
}
2.UILocalNotificationの構築
UILocalNotification *notification = [[UILocalNotification alloc] init];
3.UILocalNotificationの構成
3.1属性
//10秒後通知
NSDate * now = [[NSDate alloc] init];
notification.fireDate=[now dateByAddingTimeInterval:10];
//ローカルタイムゾーンnotification.timeZone=[NSTimeZone defaultTimeZone];
の使用//繰り返しの設定
notification.repeatInterval = kCFCalendarUnitSecond;
notification.alertAction=NSLocalizedString(@" , ", nil);
notification.alertBody=@" ";
notification.soundName = UILocalNotificationDefaultSoundName;
notification.applicationIconBadgeNumber = 1;
//0 この通知にkeyを追加するとキャンセルしやすいです.
NSDictionary *dict =[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:notificationtag],@"akey",nil];
[notification setUserInfo:dict];
3.2送信方式
- (void)presentLocalNotificationNow:(UILocalNotification *)notification
//即時送信- (void)scheduleLocalNotification:(UILocalNotification *)notification
//構成時間別送信3.3キャンセル方式
- (void)cancelLocalNotification:(UILocalNotification *)notification
//通知をキャンセル- (void)cancelAllLocalNotifications
//すべての通知をキャンセル//
NSArray *localNotifications = [UIApplication sharedApplication].scheduledLocalNotifications;
for (UILocalNotification *notification in localNotifications) {
NSDictionary *userInfo = notification.userInfo;
if (userInfo) {
// key
NSString *info = userInfo[@"akey"];
// ,
if (info != nil) {
[[UIApplication sharedApplication] cancelLocalNotification:notification];
break;
}
}
}
4.処理通知
AppDelegateでmファイルにおける
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
メソッドの追加//
NSString *message = [notification.userInfo objectForKey:@"akey"];
//
NSLog(@"%@",message);
//
NSInteger badge = [UIApplication sharedApplication].applicationIconBadgeNumber;
badge--;// , 1
badge = badge >= 0 ? badge : 0;
[UIApplication sharedApplication].applicationIconBadgeNumber = badge;// 。。。
一般的にAppに入った後、小さな赤い点をクリアし、
- (void)applicationDidBecomeActive:(UIApplication *)application
の方法に[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
を追加すればよい.ここまでで全部終わってしまうので、簡単ではないでしょうか.実は私达はふだんそれを使って1つの弾枠のような注意の机能を行って、登录して、送信して、いくつかのコードは解决しました.の