0

私は目覚まし時計のiOSアプリを書いています。UILocalNotification を使用するのは初めてです。日付ピッカーから日付を取得しています。関数に適切な日付が渡されているかどうかを確認するために、日付をフォーマットしました。UILocalNotification に必要なすべてのプロパティを確認しましたが、それらはすべてありますが、通知はまだ発生しません。理由についてのアイデアはありますか?助けてくれてありがとう。

#import "BIDAlarmViewController.h"

@interface BIDAlarmViewController () 

@end

@implementation BIDAlarmViewController

@synthesize datePicker; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
    // Custom initialization
    return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib


}

- (void)didReceiveMemoryWarning{

[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

-(IBAction)setReminderUsingDateFromDatePicker: (id)sender{

[self scheduleNotificationForDate: datePicker.date];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd 'at' HH:mm"];

NSString *formattedDateString = [dateFormatter stringFromDate:datePicker.date];


NSLog(@"Button Pressed.. date: %@", formattedDateString);

UIAlertView  *alert = [[UIAlertView alloc] initWithTitle:@"Alarm activated"
                                                 message:@"Alarm has been set"
                                                delegate:self cancelButtonTitle:@"OK"
                                       otherButtonTitles:nil];

[alert show];
}

-(void) scheduleNotificationForDate: (NSDate*)date {

UILocalNotification *alarm = [[UILocalNotification alloc] init];
if (alarm) {
    alarm.fireDate = date;
    alarm.timeZone = [NSTimeZone defaultTimeZone];
    alarm.repeatInterval = 0;
    alarm.soundName = @"alarmsound.caf";
    alarm.alertBody = @"Test message...";
    [[UIApplication sharedApplication] scheduleLocalNotification:alarm];
}
}

@end
4

1 に答える 1

1

http://developer.apple.com/library/ios/documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/application:didReceiveLocalNotification :

次のように、アプリのデリゲートで参照されたメソッドを実装したことを確認してください。

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
  NSLog(@"Notification fired"!);
}

このメソッドの実装に関する Apple からのメモ:

ローカル通知はリモート プッシュ通知に似ていますが、同じデバイスで完全にスケジュール、表示、および受信されるという点で異なります。アプリケーションはローカル通知を作成してスケジュールでき、オペレーティング システムはスケジュールされた日時にそれを配信します。アプリケーションがフォアグラウンドでアクティブでないときにそれを配信すると、アラートが表示され、アプリケーション アイコンにバッジが付けられ、サウンドが再生されます (UILocalNotification オブジェクトで指定されているものは何でも)。アプリケーションがフォアグラウンドで実行されている場合、アラート、バッジ、またはサウンドはありません。代わりに、デリゲートが実装している場合は、application:didReceiveLocalNotification: メソッドが呼び出されます。

ローカル通知が発生したことを通知する必要がある場合、デリゲートはこのメソッドを実装できます。たとえば、アプリケーションがカレンダー アプリケーションである場合、カレンダー イベントのリストを列挙して、期限が過ぎた、または間もなく発生する予定の日付を特定できます。また、アプリケーション アイコンのバッジ番号をリセットしたり、ローカル通知オブジェクトの userInfo ディクショナリ内の任意のカスタム データにアクセスしたりできます。

于 2013-06-06T00:33:37.740 に答える