1

ユーザーがアプリのアイコンをクリックして、自分のアプリがフォアグラウンドになるかどうかを知りたいです。

ただし、着信、アプリ内購入などからではありません。
(アプリ内購入プロセス中に applicationDidBecomeActive が呼び出されることがわかりました)

4

1 に答える 1

2

ステップ 1:
アプリケーションが開始され、以前はバックグラウンドになかった (中断された) 場合、application:didFinishLaunchingWithOptions:最初に実行されます。このメソッドはlaunchOptionsパラメーターを運びます - の場合nil、アプリは Springboard のアイコン タップを介して起動されました。それ以外の場合launchOptionsは、アプリが開始された理由が示されます (URL スキーム、プッシュ通知など... 詳細はドキュメントを参照)。

ステップ 2:
ここまでは順調です。では、気をつけて再開しましょう。アプリが再開 (または開始) されると、ある時点applicationDidBecomeActiveでアプリのデリゲートが呼び出されます。秘訣は、アプリケーションを再開 (開始) できるために考えられるすべての理由が処理された後に、このメソッドが呼び出されることです。したがって、必要なことはBOOL、アプリが再開された理由を処理するメソッドに設定するフラグを導入し、後でそれapplicationDidBecomeActiveを期待値に対してチェックすることだけです。

フラグを設定する必要があるメソッドのリスト(不完全だと思います):

  • application:handleOpenURL:
  • application:openURL:sourceApplication:annotation:
  • application:didReceiveLocalNotification:
  • application:didReceiveRemoteNotification:

残りのメソッドは、上記のドキュメントに記載されています。applicationDidBecomeActiveそして、ステップ 1も呼び出されることを覚えておいてください。

幸運を!

于 2011-10-16T21:26:58.407 に答える