3

presentLocalNotificationNowとはどう違いますかscheduleLocalNotification

次の関数の両方で、1 秒後に通知が表示されます

-(void)showLocalNotification:(NSNotification *)notification {

    NSString *msg = @"test message";

    [[UIApplication sharedApplication] cancelAllLocalNotifications];

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

    _localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:1];

    _localNotification.timeZone = [NSTimeZone defaultTimeZone];

    _localNotification.alertBody = msg;

    _localNotification.soundName = UILocalNotificationDefaultSoundName;

    _localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber]+1;

    [[UIApplication sharedApplication] scheduleLocalNotification:_localNotification];

    // or 

    //[[UIApplication sharedApplication] presentLocalNotificationNow:_localNotification];
}
4

2 に答える 2

3

アプリケーションがバックグラウンドで実行されている場合、ローカル通知はアプリケーションによって直接受信されるため、アラートやサウンドを受け取りません。その場合、presentLocalNotificationNow を使用して通知を提示する必要があります。

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
    UIApplicationState applicationState = application.applicationState;
    if (applicationState == UIApplicationStateBackground) {
        [application presentLocalNotificationNow:notification];
    }
}

アップルのドキュメントから:

UILocalNotification のインスタンスを作成したら、UIApplication クラスの 2 つのメソッド (scheduleLocalNotification: または presentLocalNotificationNow:) のいずれかを使用してスケジュールを設定します。前者の方法では、発火日を使用して配送をスケジュールします。後者のメソッドは、fireDate の値に関係なく、すぐに通知を表示します。特定またはすべてのローカル通知を取り消すには、それぞれ cancelLocalNotification: または cancelAllLocalNotifications を呼び出します。

于 2013-11-03T09:40:12.090 に答える