0

iPhoneアプリ開発初心者です。現在、iPhone用のアラームアプリを開発中です。このアプリケーションでは、UIDataPicker からデータを選択しています。次に、アラームボタンアクションで NSLocalNotification firedate に適用しました。初めて稼働しています。次に、もう一度そのボタンをクリックすると、再び機能しますが、時間も同じです。それは間違って働いています。

ここで、NSTimer が必要だと思います。NSTimerの使い方がわかりません。また、このタイマーの設定方法もバックグラウンドアプリケーションで動作しています。

アラーム通知用に開発されたコードは次のとおりです。

        - (void) saveButtonAction:(id)sender {
        [[UIApplication sharedApplication] cancelAllLocalNotifications];
        Class cls = NSClassFromString(@"UILocalNotification");
        if (cls != nil) 
        {
            Resource *resourceLoader = [[Resource alloc] init];

            NSDictionary *prefDic = [resourceLoader getPlistDataAsDictionary:@"preference"];
            NSString *musicName;
            NSDate *selectedDateTime = [[NSDate alloc]init];
            if (prefDic && [prefDic objectForKey:@"alarmtime"]) {
                //firstVal_textField.text = [prefDic objectForKey:@"value1"];
                NSLog(@"saravanan %@",[prefDic objectForKey:@"alarmtime"]);
                selectedDateTime = [prefDic objectForKey:@"alarmtime"];
                NSLog(@"saravanan periyasamy %@", selectedDateTime);

                musicName = [NSString stringWithFormat:@"%@%@",[prefDic                objectForKey:@"alarmmusic"],@".wav" ];

            } 
            UILocalNotification *notif = [[cls alloc] init];
            //notif.fireDate = [datePicker date];
            notif.fireDate = selectedDateTime;
            notif.timeZone = [NSTimeZone defaultTimeZone];

            notif.alertBody = @"Alarm";
            notif.alertAction = @"Show me";
            //notif.repeatInterval = 0;
            //notif.soundName = UILocalNotificationDefaultSoundName;
            notif.soundName = musicName;
            notif.applicationIconBadgeNumber = 1;
            NSDictionary *userDict = [NSDictionary dictionaryWithObject:@"saravanan"
                                                                    forKey:kRemindMeNotificationDataKey];
            notif.userInfo = userDict;
            [[UIApplication sharedApplication] scheduleLocalNotification:notif];
            [notif release];
}
}
}
4

1 に答える 1

1

設定ボタンは、UILocalNotification クラスを使用して通知をスケジュールするビュー コントローラーで scheduleNotification と呼ばれるメソッドを実行するように接続されています。コードは次のようになります。

   (void )scheduleNotification
  {
 [reminderText resignFirstResponder];
 [[ UIApplication sharedApplication] cancelAllLocalNotifications];
Class cls = NSClassFromString(@ "UILocalNotification" );
  if (cls != nil)
    {
 UILocalNotification *notif = [[cls alloc] init];
    notif.fireDate = [datePicker date];
    notif.timeZone = [ NSTimeZone defaultTimeZone];
    notif.alertBody = @ "Did you forget something?" ;
    notif.alertAction = @ "Show me" ;
    notif.soundName = UILocalNotificationDefaultSoundName ;
       notif.applicationIconBadgeNumber = 1 ;
 NSDictionary *userDict = [       NSDictionary dictionaryWithObject:reminderText.text
          forKey:kRemindMeNotificationDataKey];
    notif.userInfo = userDict;
      [[ UIApplication sharedApplication] scheduleLocalNotification:notif];
    [notif release];
}
}
于 2012-08-16T17:07:24.383 に答える