0

私はアプリを構築しようとしていますが、その一部は、バックグラウンドに入るアプリケーションと、ユーザーがマルチタスクペインから閉じるときに終了するアプリケーションを区別する必要性に対処しています。ただし、オンラインでのすべての調査から、次のいずれかのみを実行できることがわかりました。

a)info.plistの「アプリケーションはバックグラウンドで実行されません」プロパティをYESに設定し、「バックグラウンドへの移行」を終了として扱います

b) デフォルトでは、バックグラウンドに移行するアプリは通知を送信しますが、マルチ タスクバーから終了すると通知は送信されません。

両方の通知を受け取り、バックグラウンドに移行したときにアプリが終了しないようにすることは可能ですか? 助けていただければ幸いです。新しいios 6を実行しています。

ヴィベク

4

2 に答える 2

2

nsnotification を使用して、アプリケーションの終了を検出します。これにより、ユーザーがマルチタスク バーから終了したときに通知されます

 UIApplication *app = [UIApplication sharedApplication];
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(applicationWillTerminate:)
                                             name:UIApplicationWillTerminateNotification
                                           object:app];

ファイルでこのセレクターを呼び出します:

 - (void)applicationWillTerminate:(NSNotification *)notification {
     // Do stuff before termination
 }

それ以外の場合は、plist の構成方法に応じてバックグラウンド モードになります。

于 2012-09-24T16:36:30.430 に答える
1

ユーザーがタスク マネージャー ペインからアプリケーションを停止するたびに、アプリケーションに SIGKILL シグナルが送信されるため、正常に終了せず、結果としてセレクターが呼び出されません。

アプリケーションが (OS によって) 終了されないようにしたい場合は、アプリを GPS またはオーディオ バックグラウンド モードのいずれかが必要として登録する必要があります (ただし、アプリケーションは適切な方法で機能を実際に使用する必要があることに注意してください。そうしないと、審査プロセス中に却下されます)。

デリゲートのコールバックに関する簡単な説明は次のとおりです。

  • applicationWillResignActive - アプリケーションが最小化されるか、呼び出しが受信されるたびに
  • applicationDidEnterBackground - アプリケーションがユーザーによって最小化されるたびに
  • applicationWillTerminate - OS がメモリを節約するためにアプリケーションを終了することを決定したとき (ただし、ユーザーによって強制終了されたときは除く)
于 2012-09-24T16:37:38.780 に答える