1

UILocalNotificationiPhone で s を使用してアラームを作成しています。をクリックするとアラームがスケジュールされますUIButton。私の問題は、– application:didReceiveLocalNotification:このボタンをクリックすると呼び出されることです。つまり、ローカル通知を作成するときです。ただし、– application:didReceiveLocalNotification:通知時間に達した場合にのみ呼び出す必要があります。シミュレーターとデバイスの両方で確認しましたが、同じ結果が得られました。誰でもこれで私を助けることができます...前もって感謝します。

-(void)createalarm:(NSString *)datend_time:(NSString *)message//creating alarm
{
NSLog(@"created!!!!!!!!!!!!!");
NSString *datestr = datend_time;
NSString *textstr = message;
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"MM/dd/yyyy hh:mm a"];    
NSDate *alerttime = [formatter dateFromString:datestr];
UIApplication * app = [UIApplication sharedApplication];    

UILocalNotification *notification = [[UILocalNotification alloc] init];
if (notification)
{
    notification.fireDate = alerttime;
    //notification.timeZone = [NSTimeZone defaultTimeZone];
    notification.repeatInterval = 0;
    notification.alertBody = textstr;
    notification.soundName = UILocalNotificationDefaultSoundName;        
    [app scheduleLocalNotification:notification];

    [app presentLocalNotificationNow:notification];          
}

}


-(void)application:(UIApplication *)application didReceiveLocalNotification:    (UILocalNotification *)notification
{
NSLOG(@"delegate called")    
}
4

2 に答える 2

1

呼んでるからだよ

[app presentLocalNotificationNow:notification];  

したがって、作成した直後に通知が表示されます。このコード行を削除します。

[app scheduleLocalNotification:notification]; 正常に動作し、fireDate で通知を送信します。

于 2013-10-19T07:33:30.890 に答える
-1

NSLocalnotification の例を次に示します。

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

/* Here we cancel all previously scheduled notifications */
 [[UIApplication sharedApplication] cancelAllLocalNotifications];

UILocalNotification *localNotification = [[UILocalNotification alloc] init];

localNotification.fireDate = date;
NSLog(@"Notification will be shown on: %@",localNotification.fireDate);

localNotification.timeZone = [NSTimeZone defaultTimeZone];
localNotification.alertBody = [NSString stringWithFormat:
                              @"Your notification message"];
localNotification.alertAction = NSLocalizedString(@"View details", nil);

/* Here we set notification sound and badge on the app's icon "-1" 
means that number indicator on the badge will be decreased by one 
- so there will be no badge on the icon */

localNotification.soundName = UILocalNotificationDefaultSoundName;
localNotification.applicationIconBadgeNumber = -1;

[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}

設定する日付が過去のものでないことを確認してください。

于 2012-09-04T07:35:31.033 に答える