2

iPhoneアプリがバックグラウンドで実行されているときに、ASIHTTPRequestを使用して複数のファイルをダウンロードしています。UILocalNotificationキューが終わったらプレゼントしたいです。次のデリゲートメソッドは、アプリが再開されるまで呼び出されません。

- (void)queueFinished:(ASINetworkQueue *)aQueue
{

    NSLog(@"Queue finished");

    if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground) {
        UILocalNotification* localNotification = [[UILocalNotification alloc] init];
        localNotification.alertBody = NSLocalizedString(@"All downloads completed");        
        [[UIApplication sharedApplication] presentLocalNotificationNow:localNotification];
        [localNotification release];
    }
}

では、どうすればこの通知を表示させることができますか?

4

4 に答える 4

1

デリゲートが呼び出されない理由は、アプリがバックグラウンドで一時停止されていることが原因である可能性があります。ユーザーがアプリを閉じた後も続く、ある種の長いネットワークプロセスを実行している-[UIApplication beginBackgroundTaskWithExpirationHandler:]場合は、ネットワークタスクを開始するときに使用して、ネットワークタスクが完了するまでアプリケーションをバックグラウンドで実行し続けることができます。ただし、それでも有効期限が切れる可能性があるため、終了するのに十分な時間が保証されるわけではありません。

于 2011-05-06T16:28:36.590 に答える
0

これを使って:

UILocalNotification *localNot = [[UILocalNotification alloc] init];
localNot.alertBody = @"Your Text";
localNot.alertAction = @"Name on the button";
localNot.fireDate = [NSDate date];
localNot.soundName = UILocalNotificationDefaultSoundName;
[[UIApplication sharedApplication] scheduleLocalNotification:localNot];

あなたがしていること:

  • LocalNotification を作成する
  • LN の本文を追加する
  • 「アラート」に表示されるボタンの名前を追加します
  • fireDate を実際の日付と時刻に設定します (おそらく、実際の日付を 1 秒または 2 秒増やす必要があります - この用途では: dateByAddingTimeInterval:)
  • soundName を設定します (カスタム サウンドを使用することもできます...)
  • LN のスケジュール/作成
于 2011-05-06T16:17:12.720 に答える
0

プログラムがバックグラウンド iOS 4 の場合の以前の SO 質問通知から

アプリが一時停止状態にある場合、通知を受信しないことは認識しています。これはドキュメントに記載されています。通知を受信できるアプリケーションは、オーディオ アプリケーション (iPod やアナログなど)、ロケーション ベースのアプリケーション、および voip アプリの 3 つのクラスのみです。アプリがそれらのアプリケーションの 1 つである場合、plist を正しく設定する必要があります。

于 2011-05-06T12:39:11.177 に答える
0

キューの maxConcurrentOperationCount を 1 に設定していますか?

メソッド setShouldContinueWhenAppEntersBackground:YES はリクエストごとに設定されます。キュー内に多数の ASIHTTPRequest があるため、一度に実行できるのはそのうちの 1 つだけです。これは、アプリを一時停止したときにキュー内の他のアイテムが開始されていないことを意味するため、OS はそのネットワーク リクエストを維持することをまだ認識していません。

解決策はわかりませんが、これがあなたが見ている理由だと思います。

于 2012-01-04T18:46:13.473 に答える