0

でタスク「A」を実行するアプリに取り組んでい- (void)applicationWillEnterForeground:(UIApplication *)applicationます。

このアプリは、リモート通知用にも登録されています。アプリで- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfoタスク「B」を実行する必要があります。

アプリがバックグラウンドで通知を受信した場合、タスクの実行順序は「A」、「B」の順になります。

通知を受け取り、アプリがバックグラウンドにある場合に必要なことは、「B」タスクだけを実行することです。

どうすればこれを達成できますか?

ありがとう

4

1 に答える 1

0

この質問を投稿してから 1 か月が経過したため、まだ回答が必要かどうかはわかりませんが、共有されているすべての「入口ロジック」(私はそう呼んでいます) をプッシュしてapplicationDidBecomeActive:、単に入口メソッドを保存することでこの問題を解決しました。 appdelegate オブジェクトの状態として。したがって、バックグラウンドからアプリに入ると、1 つのフラグを設定します。通知を介して入ってきた場合は、通知メッセージを保存します (これにより、通知入口ロジックをインテリジェントに処理できます)。URL からアクセスした場合は、その URL を保存します。私はapplicationDidBecomeActive:どの道から来たのかを確認します。私が監視している州は次のとおりです。

  1. アプリ アイコンをタップして新しいアプリ インスタンスを作成する (状態が設定されていない)
  2. アプリのアイコンをタップするか、電話を終了するなどしてバックグラウンドから入ってきた (フォアグラウンド フラグ セットのみを入力し、それ以外は何もしない)
  3. APNS から受信しました (通知データが設定されています。これは、新しいアプリ インスタンスまたはバックグラウンドからのものである可能性があることに注意してください)
  4. URL から入ってきました (URL が設定されています。これは、新しいアプリ インスタンスまたはバックグラウンドからのものである可能性があることに注意してください)

必要なすべての情報が 1 か所にあるため、通知開始ロジックを実行するか、単純なフォアグラウンド開始ロジックを実行するかをインテリジェントに決定できます。

ところで、このフローチャートは非常に貴重です! http://www.cocoanetics.com/2010/07/understanding-ios-4-backgrounding-and-delegate-messaging/

于 2013-06-05T21:46:38.657 に答える