ユーザーが名前、イベント名、思い出させる日付などのすべての情報を入力するフォームがあります.だから私はこのようなキーに基づいて通知を設定します
- (void)scheduleNotificationForNotificationID:(NSString *)notificationID1:(NSString *)notificationID2:(NSString *)notificationKey
{
//Set notification after confirmation of saved data
Class cls = NSClassFromString(@"UILocalNotification");
reminderNotification = [[cls alloc] init];
if (cls != nil)
{
NSDateFormatter *dateFormat = [[[NSDateFormatter alloc]init]autorelease];
[dateFormat setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
NSDate *notificationDate = [dateFormat dateFromString:textField2.text];
reminderNotification.fireDate = notificationDate;
reminderNotification.timeZone = [NSTimeZone defaultTimeZone];
NSString *reminderText = [NSString stringWithFormat:@"%@ 's %@ on %@",textField.text,textField1.text,strDate];
reminderNotification.alertBody = reminderText;
reminderNotification.alertAction = @"View";
reminderNotification.soundName = @"apple_ring.mp3";
reminderNotification.applicationIconBadgeNumber = 1;
//Use name and event name as keys
NSDictionary *infoDict = [NSDictionary dictionaryWithObjectsAndKeys:notificationID1,@"Name",notificationID2,@"Event",notificationKey,@"Date",nil];
reminderNotification.userInfo = infoDict;
[[UIApplication sharedApplication] scheduleLocalNotification:reminderNotification];
}
}
textField は名前を保持し、textField1 はイベント名を保持します
したがって、各リマインダーを保存するための保存ボタンアクションがあります。ボタンのタイトルが「保存」の場合、リマインダーを保存して新しいレコードを挿入し、「完了」の場合、リマインダーの詳細を編集してレコードを取得します更新しました。
通知の問題は、不適切な発火や発火しないことなどではありません。問題は、通知アラートの本文にあります。これは、ローカル通知を受信したコードです。
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
application.applicationIconBadgeNumber = 0;
NSString *reminderText = [notification.userInfo objectForKey:kReminder];
[self.addViewController performSelector:@selector(showReminder:) withObject:reminderText afterDelay:1];
}
通知アラート本文のアクションは次のとおりです。
//Notification alert
- (void)showReminder:(NSString *)text
{
self.reminderAlert = [[UIAlertView alloc] initWithTitle:@"Reminder" message:reminderNotification.alertBody delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(220, 10, 40, 40)];
UIImage *image= [UIImage imageNamed:@"icon@2x.png"];
[imageView setImage:image];
[reminderAlert addSubview:imageView];
[imageView release];
[reminderAlert show];
[reminderAlert release];
}
リマインダー/レコードの詳細を編集した後、以前の通知は何らかの方法でキャンセルされますが、私の問題は、アラート本文が通知アラート本文と同じではないことです。つまり、通知アラート本文は更新されますが、アラート本文ではありません。つまり、名前とイベントによると名前の例:
「Steve Job's Birthday on July 3rd」、これが保存時の最初のイベントであり、ユーザーが「Steve Job's Felicitation on July 3rd」に更新/変更した場合
アラート本文は以前のイベント名の値を保持していますが、通知アラート本文は正しく適切に更新された新しいリマインダーの詳細を保持しています。名前とイベント名の値を保持するためにいくつかの文字列を取り、保存アクションと完了アクションのために、文字列をグローバルに宣言し、完了アクションでリマインダー本文を割り当てる前に文字列値を nil にしようとしました...何も機能しませんでした!
したがって、リマインダー通知アラート本文自体を割り当てました。これでも機能しません:(
どこが間違っていますか....???
私を助けてください。事前に感謝します:)