3

フォアグラウンドで実行されているときに特定の方法で機能するように設計された目覚まし時計アプリがあり、アプリによってスケジュールされたローカル通知を受信します。ユーザーがアラームを設定すると、私のアプリはローカル通知を作成します。didReceiveLocalNotificationそのローカル通知が発生すると、メソッドを呼び出してユーザーに警告します。問題は、アプリがフォアグラウンドで実行されていて、プッシュ通知が別のアプリから着信した場合、モーダルプッシュ通知ビューが表示されるため、ローカル通知が発生したときにアプリがユーザーに警告できないことです。プッシュ通知のモーダルビューを閉じるとすぐに、アプリはローカル通知を起動します。これを回避する方法はありますか?ユーザーがアプリの起動をスケジュールしたときにアプリがアラームを鳴らさない場合は、

あなたの知恵をどうもありがとう!

4

2 に答える 2

4

アプリケーションには 5 つの異なる状態があります。

  • 前景アクティブ
  • 前景非アクティブ
  • 背景ランニング
  • 中断された背景
  • 走っていない

アプリケーションを起動すると、「フォアグラウンド アクティブ」になり、モーダル プッシュ通知が表示されると、アプリケーションは「フォアグラウンド 非アクティブ」になります。

ドキュメントで、Apple は次のように述べています (http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html):

アプリケーションがフォアグラウンドでアクティブでないときに配信すると、UILocalNotification オブジェクトで指定されているものは何でも、アラートを表示したり、アプリケーション アイコンにバッジを付けたり、サウンドを再生したりします。アプリケーションがフォアグラウンドで実行されている場合、アラート、バッジ、またはサウンドはありません。代わりに、デリゲートが実装している場合は、application:didReceiveLocalNotification: メソッドが呼び出されます。

したがって、フォアグラウンドでapplication:didReceiveLocalNotification:は、アプリがアクティブな場合にのみ呼び出され、モーダル通知を閉じるとアクティブになります。

これは境界線であり、この場合の解決策はありません。

于 2011-03-11T10:39:29.660 に答える
1

私はそれを回避する方法があるとは思わない。音を鳴らしたりバイブレーションを鳴らしたりできるかもしれませんが、OS はすでにプッシュ通知アラートでユーザーの注意を喚起しているため、ユーザーが最初のアラートに対処するまで別のアラートを投稿しても役に立ちません。ユーザーが同時に 2 つのアラームをスケジュールした場合、どのように処理しますか?

于 2011-03-08T14:02:47.843 に答える